1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.frames;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.hipparchus.Field;
21 import org.hipparchus.complex.Complex;
22 import org.hipparchus.complex.ComplexField;
23 import org.hipparchus.geometry.euclidean.threed.FieldRotation;
24 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
25 import org.hipparchus.geometry.euclidean.threed.Rotation;
26 import org.hipparchus.geometry.euclidean.threed.RotationConvention;
27 import org.hipparchus.geometry.euclidean.threed.Vector3D;
28 import org.junit.jupiter.api.Assertions;
29 import org.junit.jupiter.api.Test;
30 import org.orekit.time.AbsoluteDate;
31 import org.orekit.time.FieldAbsoluteDate;
32
33 class TransformProviderTest {
34
35 @Test
36 void testGetStaticTransform() {
37
38 final TestTransformProvider transformProvider = new TestTransformProvider();
39 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
40
41 final StaticTransform staticTransform = transformProvider.getStaticTransform(date);
42
43 final Transform transform = transformProvider.getTransform(date);
44 Assertions.assertEquals(date, staticTransform.getDate());
45 Assertions.assertEquals(transform.getCartesian().getPosition(), staticTransform.getTranslation());
46 Assertions.assertEquals(0., Rotation.distance(transform.getRotation(), staticTransform.getRotation()));
47 }
48
49 @Test
50 void testGetKinematicTransform() {
51
52 final TestTransformProvider transformProvider = new TestTransformProvider();
53 final AbsoluteDate date = AbsoluteDate.ARBITRARY_EPOCH;
54
55 final KinematicTransform kinematicTransform = transformProvider.getKinematicTransform(date);
56
57 final Transform transform = transformProvider.getTransform(date);
58 Assertions.assertEquals(date, kinematicTransform.getDate());
59 Assertions.assertEquals(transform.getCartesian().getPosition(), kinematicTransform.getTranslation());
60 Assertions.assertEquals(transform.getCartesian().getVelocity(), kinematicTransform.getVelocity());
61 Assertions.assertEquals(0., Rotation.distance(transform.getRotation(), kinematicTransform.getRotation()));
62 Assertions.assertEquals(transform.getRotationRate(), kinematicTransform.getRotationRate());
63 }
64
65 @Test
66 void testFieldGetKinematicTransform() {
67
68 final TestTransformProvider transformProvider = new TestTransformProvider();
69 final ComplexField complexField = ComplexField.getInstance();
70 final FieldAbsoluteDate<Complex> fieldDate = FieldAbsoluteDate.getArbitraryEpoch(complexField);
71
72 final FieldKinematicTransform<Complex> fieldKinematicTransform = transformProvider
73 .getKinematicTransform(fieldDate);
74
75 final KinematicTransform kinematicTransform = transformProvider.getKinematicTransform(fieldDate.toAbsoluteDate());
76 Assertions.assertEquals(kinematicTransform.getDate(), fieldKinematicTransform.getDate());
77 Assertions.assertEquals(kinematicTransform.getTranslation(), fieldKinematicTransform.getTranslation().toVector3D());
78 Assertions.assertEquals(kinematicTransform.getVelocity(), fieldKinematicTransform.getVelocity().toVector3D());
79 Assertions.assertEquals(0., Rotation.distance(kinematicTransform.getRotation(),
80 fieldKinematicTransform.getRotation().toRotation()));
81 Assertions.assertEquals(kinematicTransform.getRotationRate(),
82 fieldKinematicTransform.getRotationRate().toVector3D());
83 }
84
85 @Test
86 void testFieldGetStaticTransform() {
87
88 final TestTransformProvider transformProvider = new TestTransformProvider();
89 final ComplexField complexField = ComplexField.getInstance();
90 final FieldAbsoluteDate<Complex> fieldDate = FieldAbsoluteDate.getArbitraryEpoch(complexField);
91
92 final FieldStaticTransform<Complex> fieldStaticTransform = transformProvider
93 .getStaticTransform(fieldDate);
94
95 final StaticTransform staticTransform = transformProvider.getStaticTransform(fieldDate.toAbsoluteDate());
96 Assertions.assertEquals(staticTransform.getDate(), fieldStaticTransform.getDate());
97 Assertions.assertEquals(staticTransform.getTranslation(), fieldStaticTransform.getTranslation().toVector3D());
98 Assertions.assertEquals(0., Rotation.distance(staticTransform.getRotation(),
99 fieldStaticTransform.getRotation().toRotation()));
100 }
101
102 private static class TestTransformProvider implements TransformProvider {
103
104 @Override
105 public Transform getTransform(AbsoluteDate date) {
106 return new Transform(date, new Rotation(Vector3D.PLUS_I, 1., RotationConvention.FRAME_TRANSFORM),
107 Vector3D.MINUS_J);
108 }
109
110 @Override
111 public <T extends CalculusFieldElement<T>> FieldTransform<T> getTransform(FieldAbsoluteDate<T> date) {
112 final Transform transform = getTransform(date.toAbsoluteDate());
113 final Field<T> field = date.getField();
114 final FieldRotation<T> fieldRotation = new FieldRotation<>(field, transform.getRotation());
115 final FieldVector3D<T> fieldRotationRate = new FieldVector3D<>(field, transform.getRotationRate());
116 return new FieldTransform<>(date, fieldRotation, fieldRotationRate);
117 }
118 }
119
120 }