1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.utils;
18
19 import org.hipparchus.analysis.differentiation.DerivativeStructure;
20 import org.hipparchus.analysis.differentiation.UnivariateDerivative1;
21 import org.hipparchus.analysis.differentiation.UnivariateDerivative2;
22 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
23 import org.hipparchus.geometry.euclidean.threed.Vector3D;
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.TestUtils;
28 import org.orekit.Utils;
29 import org.orekit.errors.OrekitIllegalArgumentException;
30 import org.orekit.errors.OrekitMessages;
31 import org.orekit.frames.Frame;
32 import org.orekit.frames.FramesFactory;
33 import org.orekit.frames.Transform;
34 import org.orekit.time.AbsoluteDate;
35
36 public class AbsolutePVCoordinatesTest {
37
38 @BeforeEach
39 public void setUp() {
40 Utils.setDataRoot("regular-data");
41 }
42
43 @Test
44 public void testPVOnlyConstructor() {
45
46 AbsoluteDate date = AbsoluteDate.J2000_EPOCH;
47 Frame frame = FramesFactory.getEME2000();
48 Vector3D p = new Vector3D(1, 2, 3);
49 Vector3D v = new Vector3D(4, 5, 6);
50
51
52 AbsolutePVCoordinates actual = new AbsolutePVCoordinates(frame, date, p, v);
53
54
55 Assertions.assertEquals(date, actual.getDate());
56 Assertions.assertEquals(1, actual.getPosition().getX(), 0);
57 Assertions.assertEquals(2, actual.getPosition().getY(), 0);
58 Assertions.assertEquals(3, actual.getPosition().getZ(), 0);
59 Assertions.assertEquals(4, actual.getVelocity().getX(), 0);
60 Assertions.assertEquals(5, actual.getVelocity().getY(), 0);
61 Assertions.assertEquals(6, actual.getVelocity().getZ(), 0);
62 Assertions.assertEquals(Vector3D.ZERO, actual.getAcceleration());
63 }
64
65 @Test
66 public void testPVCoordinatesCopyConstructor() {
67
68 AbsoluteDate date = AbsoluteDate.J2000_EPOCH;
69 Frame frame = FramesFactory.getEME2000();
70 PVCoordinates pv = new PVCoordinates(new Vector3D(1, 2, 3), new Vector3D(4, 5, 6));
71
72
73 AbsolutePVCoordinates actual = new AbsolutePVCoordinates(frame, date, pv);
74
75
76 Assertions.assertEquals(date, actual.getDate());
77 Assertions.assertEquals(1, actual.getPosition().getX(), 0);
78 Assertions.assertEquals(2, actual.getPosition().getY(), 0);
79 Assertions.assertEquals(3, actual.getPosition().getZ(), 0);
80 Assertions.assertEquals(4, actual.getVelocity().getX(), 0);
81 Assertions.assertEquals(5, actual.getVelocity().getY(), 0);
82 Assertions.assertEquals(6, actual.getVelocity().getZ(), 0);
83 Assertions.assertEquals(Vector3D.ZERO, actual.getAcceleration());
84 }
85
86 @Test
87 public void testLinearConstructors() {
88 Frame frame = FramesFactory.getEME2000();
89 AbsolutePVCoordinates pv1 = new AbsolutePVCoordinates(frame,
90 AbsoluteDate.CCSDS_EPOCH,
91 new Vector3D( 1, 0.1, 10),
92 new Vector3D(-1, -0.1, -10),
93 new Vector3D(10, -1.0, -100));
94 AbsolutePVCoordinates pv2 = new AbsolutePVCoordinates(frame,
95 AbsoluteDate.FIFTIES_EPOCH,
96 new Vector3D( 2, 0.2, 20),
97 new Vector3D(-2, -0.2, -20),
98 new Vector3D(20, -2.0, -200));
99 AbsolutePVCoordinates pv3 = new AbsolutePVCoordinates(frame,
100 AbsoluteDate.GALILEO_EPOCH,
101 new Vector3D( 3, 0.3, 30),
102 new Vector3D(-3, -0.3, -30),
103 new Vector3D(30, -3.0, -300));
104 AbsolutePVCoordinates pv4 = new AbsolutePVCoordinates(frame,
105 AbsoluteDate.JULIAN_EPOCH,
106 new Vector3D( 4, 0.4, 40),
107 new Vector3D(-4, -0.4, -40),
108 new Vector3D(40, -4.0, -400));
109 assertPV(pv4, new AbsolutePVCoordinates(AbsoluteDate.JULIAN_EPOCH, 4, pv1), 1.0e-15);
110 assertPV(pv2, new AbsolutePVCoordinates(AbsoluteDate.FIFTIES_EPOCH, pv1, pv3), 1.0e-15);
111 assertPV(pv3, new AbsolutePVCoordinates(AbsoluteDate.GALILEO_EPOCH, 1, pv1, 1, pv2), 1.0e-15);
112 assertPV(new AbsolutePVCoordinates(AbsoluteDate.J2000_EPOCH, 2, pv4),
113 new AbsolutePVCoordinates(AbsoluteDate.J2000_EPOCH, 3, pv1, 1, pv2, 1, pv3),
114 1.0e-15);
115 assertPV(new AbsolutePVCoordinates(AbsoluteDate.J2000_EPOCH, 3, pv3),
116 new AbsolutePVCoordinates(AbsoluteDate.J2000_EPOCH, 3, pv1, 1, pv2, 1, pv4),
117 1.0e-15);
118 assertPV(new AbsolutePVCoordinates(AbsoluteDate.J2000_EPOCH, 5, pv4),
119 new AbsolutePVCoordinates(AbsoluteDate.J2000_EPOCH, 4, pv1, 3, pv2, 2, pv3, 1, pv4),
120 1.0e-15);
121 }
122
123 @Test
124 public void testDifferentFrames() {
125 final AbsolutePVCoordinates apv1 = new AbsolutePVCoordinates(FramesFactory.getEME2000(),
126 AbsoluteDate.ARBITRARY_EPOCH,
127 Vector3D.ZERO, Vector3D.ZERO, Vector3D.ZERO);
128 final AbsolutePVCoordinates apv2 = new AbsolutePVCoordinates(FramesFactory.getGCRF(),
129 AbsoluteDate.ARBITRARY_EPOCH,
130 Vector3D.ZERO, Vector3D.ZERO, Vector3D.ZERO);
131 try {
132 new AbsolutePVCoordinates(AbsoluteDate.ARBITRARY_EPOCH, apv1, apv2);
133 Assertions.fail("an exception should have been thrown");
134 } catch (OrekitIllegalArgumentException oe) {
135 Assertions.assertEquals(OrekitMessages.INCOMPATIBLE_FRAMES, oe.getSpecifier());
136 Assertions.assertEquals(apv1.getFrame().getName(), oe.getParts()[0]);
137 Assertions.assertEquals(apv2.getFrame().getName(), oe.getParts()[1]);
138 }
139 }
140
141 @Test
142 public void testToDerivativeStructureVector1() {
143 FieldVector3D<DerivativeStructure> fv =
144 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
145 AbsoluteDate.GALILEO_EPOCH,
146 new Vector3D( 1, 0.1, 10),
147 new Vector3D(-1, -0.1, -10),
148 new Vector3D(10, -1.0, -100)).toDerivativeStructureVector(1);
149 Assertions.assertEquals(1, fv.getX().getFreeParameters());
150 Assertions.assertEquals(1, fv.getX().getOrder());
151 Assertions.assertEquals( 1.0, fv.getX().getReal(), 1.0e-10);
152 Assertions.assertEquals( 0.1, fv.getY().getReal(), 1.0e-10);
153 Assertions.assertEquals( 10.0, fv.getZ().getReal(), 1.0e-10);
154 Assertions.assertEquals( -1.0, fv.getX().getPartialDerivative(1), 1.0e-15);
155 Assertions.assertEquals( -0.1, fv.getY().getPartialDerivative(1), 1.0e-15);
156 Assertions.assertEquals( -10.0, fv.getZ().getPartialDerivative(1), 1.0e-15);
157 assertPV(new AbsolutePVCoordinates(FramesFactory.getEME2000(),
158 AbsoluteDate.GALILEO_EPOCH,
159 new Vector3D( 1, 0.1, 10),
160 new Vector3D(-1, -0.1, -10),
161 Vector3D.ZERO),
162 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
163 AbsoluteDate.GALILEO_EPOCH, fv), 1.0e-15);
164
165 for (double dt = 0; dt < 10; dt += 0.125) {
166 Vector3D p = new PVCoordinates(new Vector3D( 1, 0.1, 10),
167 new Vector3D(-1, -0.1, -10)).shiftedBy(dt).getPosition();
168 Assertions.assertEquals(p.getX(), fv.getX().taylor(dt), 1.0e-14);
169 Assertions.assertEquals(p.getY(), fv.getY().taylor(dt), 1.0e-14);
170 Assertions.assertEquals(p.getZ(), fv.getZ().taylor(dt), 1.0e-14);
171 }
172
173 AbsolutePVCoordinates pv = new AbsolutePVCoordinates(FramesFactory.getEME2000(),
174 AbsoluteDate.GALILEO_EPOCH,
175 fv);
176 Assertions.assertEquals( 1.0, pv.getPosition().getX(), 1.0e-10);
177 Assertions.assertEquals( 0.1, pv.getPosition().getY(), 1.0e-10);
178 Assertions.assertEquals( 10.0, pv.getPosition().getZ(), 1.0e-10);
179 Assertions.assertEquals( -1.0, pv.getVelocity().getX(), 1.0e-15);
180 Assertions.assertEquals( -0.1, pv.getVelocity().getY(), 1.0e-15);
181 Assertions.assertEquals( -10.0, pv.getVelocity().getZ(), 1.0e-15);
182
183 }
184
185 @Test
186 public void testToDerivativeStructureVector2() {
187 FieldVector3D<DerivativeStructure> fv =
188 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
189 AbsoluteDate.GALILEO_EPOCH,
190 new Vector3D( 1, 0.1, 10),
191 new Vector3D(-1, -0.1, -10),
192 new Vector3D(10, -1.0, -100)).toDerivativeStructureVector(2);
193 Assertions.assertEquals(1, fv.getX().getFreeParameters());
194 Assertions.assertEquals(2, fv.getX().getOrder());
195 Assertions.assertEquals( 1.0, fv.getX().getReal(), 1.0e-10);
196 Assertions.assertEquals( 0.1, fv.getY().getReal(), 1.0e-10);
197 Assertions.assertEquals( 10.0, fv.getZ().getReal(), 1.0e-10);
198 Assertions.assertEquals( -1.0, fv.getX().getPartialDerivative(1), 1.0e-15);
199 Assertions.assertEquals( -0.1, fv.getY().getPartialDerivative(1), 1.0e-15);
200 Assertions.assertEquals( -10.0, fv.getZ().getPartialDerivative(1), 1.0e-15);
201 Assertions.assertEquals( 10.0, fv.getX().getPartialDerivative(2), 1.0e-15);
202 Assertions.assertEquals( -1.0, fv.getY().getPartialDerivative(2), 1.0e-15);
203 Assertions.assertEquals(-100.0, fv.getZ().getPartialDerivative(2), 1.0e-15);
204 assertPV(new AbsolutePVCoordinates(FramesFactory.getEME2000(),
205 AbsoluteDate.GALILEO_EPOCH,
206 new Vector3D( 1, 0.1, 10),
207 new Vector3D(-1, -0.1, -10),
208 new Vector3D(10, -1.0, -100)),
209 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
210 AbsoluteDate.GALILEO_EPOCH, fv), 1.0e-15);
211
212 for (double dt = 0; dt < 10; dt += 0.125) {
213 Vector3D p = new PVCoordinates(new Vector3D( 1, 0.1, 10),
214 new Vector3D(-1, -0.1, -10),
215 new Vector3D(10, -1.0, -100)).shiftedBy(dt).getPosition();
216 Assertions.assertEquals(p.getX(), fv.getX().taylor(dt), 1.0e-14);
217 Assertions.assertEquals(p.getY(), fv.getY().taylor(dt), 1.0e-14);
218 Assertions.assertEquals(p.getZ(), fv.getZ().taylor(dt), 1.0e-14);
219 }
220
221 AbsolutePVCoordinates pv = new AbsolutePVCoordinates(FramesFactory.getEME2000(),
222 AbsoluteDate.GALILEO_EPOCH,
223 fv);
224 Assertions.assertEquals( 1.0, pv.getPosition().getX(), 1.0e-10);
225 Assertions.assertEquals( 0.1, pv.getPosition().getY(), 1.0e-10);
226 Assertions.assertEquals( 10.0, pv.getPosition().getZ(), 1.0e-10);
227 Assertions.assertEquals( -1.0, pv.getVelocity().getX(), 1.0e-15);
228 Assertions.assertEquals( -0.1, pv.getVelocity().getY(), 1.0e-15);
229 Assertions.assertEquals( -10.0, pv.getVelocity().getZ(), 1.0e-15);
230 Assertions.assertEquals( 10.0, pv.getAcceleration().getX(), 1.0e-15);
231 Assertions.assertEquals( -1.0, pv.getAcceleration().getY(), 1.0e-15);
232 Assertions.assertEquals(-100.0, pv.getAcceleration().getZ(), 1.0e-15);
233
234 }
235
236 @Test
237 public void testToUnivariateDerivative1Vector() {
238 FieldVector3D<UnivariateDerivative1> fv =
239 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
240 AbsoluteDate.GALILEO_EPOCH,
241 new Vector3D( 1, 0.1, 10),
242 new Vector3D(-1, -0.1, -10),
243 new Vector3D(10, -1.0, -100)).toUnivariateDerivative1Vector();
244 Assertions.assertEquals(1, fv.getX().getFreeParameters());
245 Assertions.assertEquals(1, fv.getX().getOrder());
246 Assertions.assertEquals( 1.0, fv.getX().getReal(), 1.0e-10);
247 Assertions.assertEquals( 0.1, fv.getY().getReal(), 1.0e-10);
248 Assertions.assertEquals( 10.0, fv.getZ().getReal(), 1.0e-10);
249 Assertions.assertEquals( -1.0, fv.getX().getPartialDerivative(1), 1.0e-15);
250 Assertions.assertEquals( -0.1, fv.getY().getPartialDerivative(1), 1.0e-15);
251 Assertions.assertEquals( -10.0, fv.getZ().getPartialDerivative(1), 1.0e-15);
252 assertPV(new AbsolutePVCoordinates(FramesFactory.getEME2000(),
253 AbsoluteDate.GALILEO_EPOCH,
254 new Vector3D( 1, 0.1, 10),
255 new Vector3D(-1, -0.1, -10),
256 Vector3D.ZERO),
257 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
258 AbsoluteDate.GALILEO_EPOCH, fv), 1.0e-15);
259
260 for (double dt = 0; dt < 10; dt += 0.125) {
261 Vector3D p = new PVCoordinates(new Vector3D( 1, 0.1, 10),
262 new Vector3D(-1, -0.1, -10)).shiftedBy(dt).getPosition();
263 Assertions.assertEquals(p.getX(), fv.getX().taylor(dt), 1.0e-14);
264 Assertions.assertEquals(p.getY(), fv.getY().taylor(dt), 1.0e-14);
265 Assertions.assertEquals(p.getZ(), fv.getZ().taylor(dt), 1.0e-14);
266 }
267
268 AbsolutePVCoordinates pv = new AbsolutePVCoordinates(FramesFactory.getEME2000(),
269 AbsoluteDate.GALILEO_EPOCH,
270 fv);
271 Assertions.assertEquals( 1.0, pv.getPosition().getX(), 1.0e-10);
272 Assertions.assertEquals( 0.1, pv.getPosition().getY(), 1.0e-10);
273 Assertions.assertEquals( 10.0, pv.getPosition().getZ(), 1.0e-10);
274 Assertions.assertEquals( -1.0, pv.getVelocity().getX(), 1.0e-15);
275 Assertions.assertEquals( -0.1, pv.getVelocity().getY(), 1.0e-15);
276 Assertions.assertEquals( -10.0, pv.getVelocity().getZ(), 1.0e-15);
277
278 }
279
280 @Test
281 public void testToUnivariateDerivative2Vector() {
282 FieldVector3D<UnivariateDerivative2> fv =
283 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
284 AbsoluteDate.GALILEO_EPOCH,
285 new Vector3D( 1, 0.1, 10),
286 new Vector3D(-1, -0.1, -10),
287 new Vector3D(10, -1.0, -100)).toUnivariateDerivative2Vector();
288 Assertions.assertEquals(1, fv.getX().getFreeParameters());
289 Assertions.assertEquals(2, fv.getX().getOrder());
290 Assertions.assertEquals( 1.0, fv.getX().getReal(), 1.0e-10);
291 Assertions.assertEquals( 0.1, fv.getY().getReal(), 1.0e-10);
292 Assertions.assertEquals( 10.0, fv.getZ().getReal(), 1.0e-10);
293 Assertions.assertEquals( -1.0, fv.getX().getPartialDerivative(1), 1.0e-15);
294 Assertions.assertEquals( -0.1, fv.getY().getPartialDerivative(1), 1.0e-15);
295 Assertions.assertEquals( -10.0, fv.getZ().getPartialDerivative(1), 1.0e-15);
296 Assertions.assertEquals( 10.0, fv.getX().getPartialDerivative(2), 1.0e-15);
297 Assertions.assertEquals( -1.0, fv.getY().getPartialDerivative(2), 1.0e-15);
298 Assertions.assertEquals(-100.0, fv.getZ().getPartialDerivative(2), 1.0e-15);
299 assertPV(new AbsolutePVCoordinates(FramesFactory.getEME2000(),
300 AbsoluteDate.GALILEO_EPOCH,
301 new Vector3D( 1, 0.1, 10),
302 new Vector3D(-1, -0.1, -10),
303 new Vector3D(10, -1.0, -100)),
304 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
305 AbsoluteDate.GALILEO_EPOCH, fv), 1.0e-15);
306
307 for (double dt = 0; dt < 10; dt += 0.125) {
308 Vector3D p = new PVCoordinates(new Vector3D( 1, 0.1, 10),
309 new Vector3D(-1, -0.1, -10),
310 new Vector3D(10, -1.0, -100)).shiftedBy(dt).getPosition();
311 Assertions.assertEquals(p.getX(), fv.getX().taylor(dt), 1.0e-14);
312 Assertions.assertEquals(p.getY(), fv.getY().taylor(dt), 1.0e-14);
313 Assertions.assertEquals(p.getZ(), fv.getZ().taylor(dt), 1.0e-14);
314 }
315
316 AbsolutePVCoordinates pv = new AbsolutePVCoordinates(FramesFactory.getEME2000(),
317 AbsoluteDate.GALILEO_EPOCH,
318 fv);
319 Assertions.assertEquals( 1.0, pv.getPosition().getX(), 1.0e-10);
320 Assertions.assertEquals( 0.1, pv.getPosition().getY(), 1.0e-10);
321 Assertions.assertEquals( 10.0, pv.getPosition().getZ(), 1.0e-10);
322 Assertions.assertEquals( -1.0, pv.getVelocity().getX(), 1.0e-15);
323 Assertions.assertEquals( -0.1, pv.getVelocity().getY(), 1.0e-15);
324 Assertions.assertEquals( -10.0, pv.getVelocity().getZ(), 1.0e-15);
325 Assertions.assertEquals( 10.0, pv.getAcceleration().getX(), 1.0e-15);
326 Assertions.assertEquals( -1.0, pv.getAcceleration().getY(), 1.0e-15);
327 Assertions.assertEquals(-100.0, pv.getAcceleration().getZ(), 1.0e-15);
328
329 }
330
331 @Test
332 public void testShift() {
333 Vector3D p1 = new Vector3D( 1, 0.1, 10);
334 Vector3D v1 = new Vector3D( -1, -0.1, -10);
335 Vector3D a1 = new Vector3D( 10, 1.0, 100);
336 Vector3D p2 = new Vector3D( 7, 0.7, 70);
337 Vector3D v2 = new Vector3D(-11, -1.1, -110);
338 Vector3D a2 = new Vector3D( 10, 1.0, 100);
339 assertPV(new AbsolutePVCoordinates(FramesFactory.getEME2000(), AbsoluteDate.J2000_EPOCH, p2, v2, a2),
340 new AbsolutePVCoordinates(FramesFactory.getEME2000(), AbsoluteDate.J2000_EPOCH.shiftedBy(1.0), p1, v1, a1).shiftedBy(-1.0), 1.0e-15);
341 Assertions.assertEquals(0.0, AbsolutePVCoordinates.estimateVelocity(p1, p2, -1.0).subtract(new Vector3D(-6, -0.6, -60)).getNorm(), 1.0e-15);
342 }
343
344 @Test
345 public void testToString() {
346 AbsolutePVCoordinates pv =
347 new AbsolutePVCoordinates(FramesFactory.getEME2000(),
348 AbsoluteDate.J2000_EPOCH,
349 new Vector3D( 1, 0.1, 10),
350 new Vector3D(-1, -0.1, -10),
351 new Vector3D(10, 1.0, 100));
352 Assertions.assertEquals("{2000-01-01T11:58:55.816, P(1.0, 0.1, 10.0), V(-1.0, -0.1, -10.0), A(10.0, 1.0, 100.0)}", pv.toString());
353 }
354
355 @Test
356 public void testSamePV() {
357
358 AbsoluteDate date = AbsoluteDate.J2000_EPOCH;
359 Frame frame = FramesFactory.getEME2000();
360 Vector3D p = new Vector3D(1, 2, 3);
361 Vector3D v = new Vector3D(4, 5, 6);
362 Frame otherEme2000 = new Frame(frame, Transform.IDENTITY, "other-EME2000");
363
364
365 AbsolutePVCoordinates actual = new AbsolutePVCoordinates(frame, date, p, v);
366
367
368 Assertions.assertSame(actual.getPosition(), actual.getPosition(frame));
369 Assertions.assertNotSame(actual.getPosition(), actual.getPosition(otherEme2000));
370 Assertions.assertEquals(0.0,
371 Vector3D.distance(actual.getPosition(frame),
372 actual.getPosition(otherEme2000)),
373 1.0e-15);
374 Assertions.assertEquals(0.0,
375 Vector3D.distance(actual.getPVCoordinates(frame).getPosition(),
376 actual.getPVCoordinates(date, frame).getPosition()),
377 1.0e-15);
378 Assertions.assertEquals(0.0,
379 Vector3D.distance(actual.getPVCoordinates(frame).getVelocity(),
380 actual.getPVCoordinates(date, frame).getVelocity()),
381 1.0e-15);
382 Assertions.assertEquals(0.0,
383 Vector3D.distance(actual.getPVCoordinates(frame).getAcceleration(),
384 actual.getPVCoordinates(date, frame).getAcceleration()),
385 1.0e-15);
386 Assertions.assertEquals(0.0,
387 Vector3D.distance(actual.getPVCoordinates(frame).getPosition(),
388 actual.getPVCoordinates(date, otherEme2000).getPosition()),
389 1.0e-15);
390 Assertions.assertEquals(0.0,
391 Vector3D.distance(actual.getPVCoordinates(frame).getVelocity(),
392 actual.getPVCoordinates(date, otherEme2000).getVelocity()),
393 1.0e-15);
394 Assertions.assertEquals(0.0,
395 Vector3D.distance(actual.getPVCoordinates(frame).getAcceleration(),
396 actual.getPVCoordinates(date, otherEme2000).getAcceleration()),
397 1.0e-15);
398 }
399
400 @Test
401 public void testIssue1557(){
402
403 final AbsolutePVCoordinates absPV = TestUtils.getFakeAbsolutePVCoordinates();
404
405
406 final Vector3D velocity = absPV.getVelocity(absPV.getDate(), absPV.getFrame());
407
408
409 final PVCoordinates refPV = absPV.getPVCoordinates();
410 Assertions.assertEquals(refPV.getVelocity(), velocity);
411 }
412
413 @Test
414 public void testTaylorProvider() {
415
416 AbsoluteDate date = AbsoluteDate.J2000_EPOCH;
417 Frame frame = FramesFactory.getEME2000();
418 Vector3D p = new Vector3D(1, 2, 3);
419 Vector3D v = new Vector3D(4, 5, 6);
420
421
422 AbsolutePVCoordinates actual = new AbsolutePVCoordinates(frame, date, p, v);
423 final PVCoordinatesProvider pv = actual.toTaylorProvider();
424
425
426 Assertions.assertEquals(0.0,
427 Vector3D.distance(actual.getPosition(date, frame), pv.getPosition(date, frame)),
428 1.0e-15);
429 Assertions.assertEquals(actual.getPVCoordinates(date, frame).toString(), pv.getPVCoordinates(date, frame).toString());
430
431 }
432
433 public static void assertPV(TimeStampedPVCoordinates expected, TimeStampedPVCoordinates real, double epsilon) {
434 Assertions.assertTrue(expected.getDate().isCloseTo(real.getDate(), epsilon));
435 Assertions.assertEquals(expected.getPosition().getX(), real.getPosition().getX(), epsilon);
436 Assertions.assertEquals(expected.getPosition().getY(), real.getPosition().getY(), epsilon);
437 Assertions.assertEquals(expected.getPosition().getZ(), real.getPosition().getZ(), epsilon);
438 Assertions.assertEquals(expected.getVelocity().getX(), real.getVelocity().getX(), epsilon);
439 Assertions.assertEquals(expected.getVelocity().getY(), real.getVelocity().getY(), epsilon);
440 Assertions.assertEquals(expected.getVelocity().getZ(), real.getVelocity().getZ(), epsilon);
441 Assertions.assertEquals(expected.getAcceleration().getX(), real.getAcceleration().getX(), epsilon);
442 Assertions.assertEquals(expected.getAcceleration().getY(), real.getAcceleration().getY(), epsilon);
443 Assertions.assertEquals(expected.getAcceleration().getZ(), real.getAcceleration().getZ(), epsilon);
444 }
445
446 }