1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.attitudes;
18
19 import org.hipparchus.geometry.euclidean.threed.FieldRotation;
20 import org.hipparchus.geometry.euclidean.threed.Rotation;
21 import org.hipparchus.util.Binary64;
22 import org.hipparchus.util.Binary64Field;
23 import org.junit.jupiter.api.Test;
24 import org.orekit.TestUtils;
25 import org.orekit.frames.FramesFactory;
26 import org.orekit.orbits.FieldCartesianOrbit;
27 import org.orekit.orbits.FieldOrbit;
28 import org.orekit.orbits.Orbit;
29 import org.orekit.time.AbsoluteDate;
30 import org.orekit.time.TimeInterval;
31
32 import static org.junit.jupiter.api.Assertions.assertEquals;
33 import static org.mockito.Mockito.mock;
34
35 class BoundedAttitudeProviderTest {
36
37 @Test
38 void testOfGetters() {
39
40 final AbsoluteDate minDate = AbsoluteDate.ARBITRARY_EPOCH;
41 final AbsoluteDate maxDate = minDate.shiftedBy(10.);
42 final TimeInterval timeInterval = TimeInterval.of(minDate, maxDate);
43 final AttitudeProvider provider = mock();
44
45 final BoundedAttitudeProvider boundedAttitudeProvider = BoundedAttitudeProvider.of(provider, timeInterval);
46
47 assertEquals(minDate, boundedAttitudeProvider.getMinDate());
48 assertEquals(maxDate, boundedAttitudeProvider.getMaxDate());
49 }
50
51 @Test
52 void testOfAttitude() {
53
54 final AbsoluteDate minDate = AbsoluteDate.ARBITRARY_EPOCH;
55 final AbsoluteDate maxDate = minDate.shiftedBy(10.);
56 final TimeInterval timeInterval = TimeInterval.of(minDate, maxDate);
57 final FrameAlignedProvider provider = new FrameAlignedProvider(FramesFactory.getEME2000());
58 final Orbit orbit = TestUtils.getDefaultOrbit(minDate);
59
60 final BoundedAttitudeProvider boundedAttitudeProvider = BoundedAttitudeProvider.of(provider, timeInterval);
61
62 final Attitude actualAttitude = boundedAttitudeProvider.getAttitude(orbit, orbit.getDate(), orbit.getFrame());
63 final Attitude expectedAttitude = provider.getAttitude(orbit, orbit.getDate(), orbit.getFrame());
64 assertEquals(0., Rotation.distance(actualAttitude.getRotation(), expectedAttitude.getRotation()), 1e-6);
65 assertEquals(actualAttitude.getSpin(), expectedAttitude.getSpin());
66 assertEquals(actualAttitude.getRotationAcceleration(), expectedAttitude.getRotationAcceleration());
67 assertEquals(actualAttitude.getDate(), expectedAttitude.getDate());
68 assertEquals(actualAttitude.getReferenceFrame(), expectedAttitude.getReferenceFrame());
69 final Rotation actualRotation = boundedAttitudeProvider.getAttitudeRotation(orbit, orbit.getDate(), orbit.getFrame());
70 final Rotation expectedRotation = provider.getAttitudeRotation(orbit, orbit.getDate(), orbit.getFrame());
71 assertEquals(0., Rotation.distance(actualRotation, expectedRotation), 1e-6);
72 }
73
74 @Test
75 void testOfFieldAttitude() {
76
77 final AbsoluteDate minDate = AbsoluteDate.ARBITRARY_EPOCH;
78 final AbsoluteDate maxDate = minDate.shiftedBy(10.);
79 final TimeInterval timeInterval = TimeInterval.of(minDate, maxDate);
80 final FrameAlignedProvider provider = new FrameAlignedProvider(FramesFactory.getEME2000());
81 final Orbit orbit = TestUtils.getDefaultOrbit(maxDate);
82 final FieldOrbit<Binary64> fieldOrbit = new FieldCartesianOrbit<>(Binary64Field.getInstance(), orbit);
83
84 final BoundedAttitudeProvider boundedAttitudeProvider = BoundedAttitudeProvider.of(provider, timeInterval);
85
86 final FieldAttitude<Binary64> actualAttitude = boundedAttitudeProvider.getAttitude(fieldOrbit, fieldOrbit.getDate(), orbit.getFrame());
87 final FieldAttitude<Binary64> expectedAttitude = provider.getAttitude(fieldOrbit, fieldOrbit.getDate(), orbit.getFrame());
88 assertEquals(0., Rotation.distance(actualAttitude.getRotation().toRotation(),
89 expectedAttitude.getRotation().toRotation()), 1e-6);
90 assertEquals(actualAttitude.getSpin(), expectedAttitude.getSpin());
91 assertEquals(actualAttitude.getRotationAcceleration(), expectedAttitude.getRotationAcceleration());
92 assertEquals(actualAttitude.getDate(), expectedAttitude.getDate());
93 assertEquals(actualAttitude.getReferenceFrame(), expectedAttitude.getReferenceFrame());
94 final FieldRotation<Binary64> actualRotation = boundedAttitudeProvider.getAttitudeRotation(fieldOrbit, fieldOrbit.getDate(), orbit.getFrame());
95 final FieldRotation<Binary64> expectedRotation = provider.getAttitudeRotation(fieldOrbit, fieldOrbit.getDate(), orbit.getFrame());
96 assertEquals(0., Rotation.distance(actualRotation.toRotation(), expectedRotation.toRotation()), 1e-6);
97 }
98 }