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