1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.time;
19
20 import org.hipparchus.CalculusFieldElement;
21 import org.hipparchus.Field;
22 import org.hipparchus.util.Binary64Field;
23 import org.junit.jupiter.api.Assertions;
24 import org.junit.jupiter.api.Test;
25
26 import java.util.Arrays;
27
28 class FieldClockOffsetHermiteInterpolatorTest {
29
30 @Test
31 void testNoRate() {
32 doTestNoRate(Binary64Field.getInstance());
33 }
34
35 private <T extends CalculusFieldElement<T>> void doTestNoRate(final Field<T> field) {
36 final T zero = field.getZero();
37 final FieldAbsoluteDate<T> t0 = FieldAbsoluteDate.getGalileoEpoch(field);
38 final FieldClockOffsetHermiteInterpolator<T> interpolator = new FieldClockOffsetHermiteInterpolator<>(4);
39 FieldClockOffset<T> interpolated =
40 interpolator.interpolate(t0.shiftedBy(2.5),
41 Arrays.asList(new FieldClockOffset<>(t0.shiftedBy(0), zero.newInstance( 0.0), zero.newInstance(Double.NaN), zero.newInstance(Double.NaN)),
42 new FieldClockOffset<>(t0.shiftedBy(1), zero.newInstance( 1.0), zero.newInstance(Double.NaN), zero.newInstance(Double.NaN)),
43 new FieldClockOffset<>(t0.shiftedBy(2), zero.newInstance( 4.0), zero.newInstance(Double.NaN), zero.newInstance(Double.NaN)),
44 new FieldClockOffset<>(t0.shiftedBy(3), zero.newInstance( 9.0), zero.newInstance(Double.NaN), zero.newInstance(Double.NaN)),
45 new FieldClockOffset<>(t0.shiftedBy(4), zero.newInstance(16.0), zero.newInstance(Double.NaN), zero.newInstance(Double.NaN)),
46 new FieldClockOffset<>(t0.shiftedBy(5), zero.newInstance(25.0), zero.newInstance(Double.NaN), zero.newInstance(Double.NaN))));
47 Assertions.assertEquals(6.25, interpolated.getOffset().getReal(), 1.0e-15);
48 Assertions.assertEquals(5.00, interpolated.getRate().getReal(), 1.0e-15);
49 Assertions.assertEquals(2.00, interpolated.getAcceleration().getReal(), 1.0e-15);
50 }
51
52 @Test
53 void testNoAcceleration() {
54 doTestNoAcceleration(Binary64Field.getInstance());
55 }
56
57 private <T extends CalculusFieldElement<T>> void doTestNoAcceleration(final Field<T> field) {
58 final T zero = field.getZero();
59 final FieldAbsoluteDate<T> t0 = FieldAbsoluteDate.getGalileoEpoch(field);
60 final FieldClockOffsetHermiteInterpolator<T> interpolator = new FieldClockOffsetHermiteInterpolator<>(4);
61 FieldClockOffset<T> interpolated =
62 interpolator.interpolate(t0.shiftedBy(2.5),
63 Arrays.asList(new FieldClockOffset<>(t0.shiftedBy(0), zero.newInstance( 0.0), zero.newInstance( 0.0), zero.newInstance(Double.NaN)),
64 new FieldClockOffset<>(t0.shiftedBy(1), zero.newInstance( 1.0), zero.newInstance( 2.0), zero.newInstance(Double.NaN)),
65 new FieldClockOffset<>(t0.shiftedBy(2), zero.newInstance( 4.0), zero.newInstance( 4.0), zero.newInstance(Double.NaN)),
66 new FieldClockOffset<>(t0.shiftedBy(3), zero.newInstance( 9.0), zero.newInstance( 6.0), zero.newInstance(Double.NaN)),
67 new FieldClockOffset<>(t0.shiftedBy(4), zero.newInstance(16.0), zero.newInstance( 8.0), zero.newInstance(Double.NaN)),
68 new FieldClockOffset<>(t0.shiftedBy(5), zero.newInstance(25.0), zero.newInstance(10.0), zero.newInstance(Double.NaN))));
69 Assertions.assertEquals(6.25, interpolated.getOffset().getReal(), 1.0e-15);
70 Assertions.assertEquals(5.00, interpolated.getRate().getReal(), 1.0e-15);
71 Assertions.assertEquals(2.00, interpolated.getAcceleration().getReal(), 1.0e-15);
72 }
73
74 @Test
75 void testComplete() {
76 doTestComplete(Binary64Field.getInstance());
77 }
78
79 private <T extends CalculusFieldElement<T>> void doTestComplete(final Field<T> field) {
80 final T zero = field.getZero();
81 final FieldAbsoluteDate<T> t0 = FieldAbsoluteDate.getGalileoEpoch(field);
82 final FieldClockOffsetHermiteInterpolator<T> interpolator = new FieldClockOffsetHermiteInterpolator<>(4);
83 FieldClockOffset<T> interpolated =
84 interpolator.interpolate(t0.shiftedBy(2.5),
85 Arrays.asList(new FieldClockOffset<>(t0.shiftedBy(0), zero.newInstance( 0.0), zero.newInstance( 0.0), zero.newInstance(2.0)),
86 new FieldClockOffset<>(t0.shiftedBy(1), zero.newInstance( 1.0), zero.newInstance( 2.0), zero.newInstance(2.0)),
87 new FieldClockOffset<>(t0.shiftedBy(2), zero.newInstance( 4.0), zero.newInstance( 4.0), zero.newInstance(2.0)),
88 new FieldClockOffset<>(t0.shiftedBy(3), zero.newInstance( 9.0), zero.newInstance( 6.0), zero.newInstance(2.0)),
89 new FieldClockOffset<>(t0.shiftedBy(4), zero.newInstance(16.0), zero.newInstance( 8.0), zero.newInstance(2.0)),
90 new FieldClockOffset<>(t0.shiftedBy(5), zero.newInstance(25.0), zero.newInstance(10.0), zero.newInstance(2.0))));
91 Assertions.assertEquals(6.25, interpolated.getOffset().getReal(), 1.0e-15);
92 Assertions.assertEquals(5.00, interpolated.getRate().getReal(), 1.0e-15);
93 Assertions.assertEquals(2.00, interpolated.getAcceleration().getReal(), 1.0e-15);
94 }
95
96 }