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.geometry.euclidean.threed.FieldVector3D;
22 import org.hipparchus.geometry.euclidean.threed.Vector3D;
23 import org.hipparchus.util.Binary64Field;
24 import org.junit.jupiter.api.Assertions;
25 import org.junit.jupiter.api.BeforeEach;
26 import org.junit.jupiter.api.Test;
27 import org.orekit.Utils;
28 import org.orekit.bodies.CelestialBody;
29 import org.orekit.bodies.CelestialBodyFactory;
30 import org.orekit.time.AbsoluteDate;
31 import org.orekit.time.FieldAbsoluteDate;
32 import org.orekit.time.TimeScalesFactory;
33
34
35
36
37 public class TwoBodiesBaryFrameTest {
38
39 @Test
40 public void testTransformationOrientationForEarthMoon() {
41
42
43 final CelestialBody barycenter = CelestialBodyFactory.getEarthMoonBarycenter();
44 final CelestialBody earth = CelestialBodyFactory.getEarth();
45 final CelestialBody moon = CelestialBodyFactory.getMoon();
46
47 final Frame eme2000 = FramesFactory.getEME2000();
48 final Frame baryFrame = new TwoBodiesBaryFrame(earth,moon);
49
50
51 final AbsoluteDate date = new AbsoluteDate(2000, 01, 01, 0, 0, 00.000,
52 TimeScalesFactory.getUTC());
53
54
55 Vector3D truePosBary = barycenter.getPosition(date, eme2000);
56 Vector3D posBary = baryFrame.getTransformTo(eme2000,date).transformPosition(Vector3D.ZERO);
57
58
59 Assertions.assertEquals(truePosBary.getX(), posBary.getX(), 1.0e-8);
60 Assertions.assertEquals(truePosBary.getY(), posBary.getY(), 1.0e-8);
61 Assertions.assertEquals(truePosBary.getZ(), posBary.getZ(), 1.0e-8);
62 }
63
64 @Test
65 public void testFieldTransformationOrientationForEarthMoon() {
66 doTestFieldTransformationOrientationForEarthMoon(Binary64Field.getInstance());
67 }
68
69 private <T extends CalculusFieldElement<T>> void doTestFieldTransformationOrientationForEarthMoon(final Field<T> field) {
70
71
72 final CelestialBody barycenter = CelestialBodyFactory.getEarthMoonBarycenter();
73 final CelestialBody earth = CelestialBodyFactory.getEarth();
74 final CelestialBody moon = CelestialBodyFactory.getMoon();
75
76 final Frame eme2000 = FramesFactory.getEME2000();
77 final Frame baryFrame = new TwoBodiesBaryFrame(earth,moon);
78
79
80 final FieldAbsoluteDate<T> date = new FieldAbsoluteDate<>(field, 2000, 01, 01, 0, 0, 00.000,
81 TimeScalesFactory.getUTC());
82
83
84 FieldVector3D<T> truePosBary = barycenter.getPosition(date, eme2000);
85 FieldVector3D<T> posBary = baryFrame.getTransformTo(eme2000,date).transformPosition(Vector3D.ZERO);
86
87
88 Assertions.assertEquals(truePosBary.getX().getReal(), posBary.getX().getReal(), 1.0e-8);
89 Assertions.assertEquals(truePosBary.getY().getReal(), posBary.getY().getReal(), 1.0e-8);
90 Assertions.assertEquals(truePosBary.getZ().getReal(), posBary.getZ().getReal(), 1.0e-8);
91 }
92
93 @BeforeEach
94 public void setUp() {
95 Utils.setDataRoot("regular-data");
96 }
97
98 }