1 package org.orekit.attitudes;
2
3 import org.hipparchus.CalculusFieldElement;
4 import org.hipparchus.analysis.differentiation.FieldUnivariateDerivative2;
5 import org.hipparchus.complex.Complex;
6 import org.hipparchus.complex.ComplexField;
7 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
8 import org.hipparchus.geometry.euclidean.threed.Vector3D;
9 import org.junit.jupiter.api.Assertions;
10 import org.junit.jupiter.api.Test;
11 import org.orekit.bodies.OneAxisEllipsoid;
12 import org.orekit.frames.Frame;
13 import org.orekit.time.AbsoluteDate;
14 import org.orekit.utils.ExtendedPositionProvider;
15 import org.orekit.utils.PVCoordinates;
16 import org.orekit.utils.TimeStampedFieldPVCoordinates;
17 import org.orekit.utils.TimeStampedPVCoordinates;
18
19 class TargetProviderTest {
20
21 @Test
22 void testGetTargetDirection() {
23
24 final TestTargetProvider testTargetProvider = new TestTargetProvider();
25 final TimeStampedPVCoordinates pvCoordinates = new TimeStampedPVCoordinates(AbsoluteDate.ARBITRARY_EPOCH,
26 new PVCoordinates());
27
28 final Vector3D targetVector = testTargetProvider.getTargetDirection(null, null, pvCoordinates, null);
29
30 final Vector3D expectedVector = testTargetProvider.getDerivative2TargetDirection(null, null,
31 pvCoordinates, null).toVector3D();
32 Assertions.assertEquals(expectedVector, targetVector);
33 }
34
35 @Test
36 void testFieldGetTargetDirection() {
37
38 final TestTargetProvider testTargetProvider = new TestTargetProvider();
39 final TimeStampedPVCoordinates pvCoordinates = new TimeStampedPVCoordinates(AbsoluteDate.ARBITRARY_EPOCH,
40 new PVCoordinates());
41 final TimeStampedFieldPVCoordinates<Complex> fieldPVCoordinates = new TimeStampedFieldPVCoordinates<Complex>(ComplexField.getInstance(),
42 pvCoordinates);
43
44 final FieldVector3D<Complex> targetVector = testTargetProvider.getTargetDirection(null, null, fieldPVCoordinates, null);
45
46 final FieldVector3D<FieldUnivariateDerivative2<Complex>> ud2Vector = testTargetProvider.getDerivative2TargetDirection(null, null,
47 fieldPVCoordinates, null);
48 final FieldVector3D<Complex> expectedVector = new FieldVector3D<>(ud2Vector.getX().getValue(), ud2Vector.getY().getValue(),
49 ud2Vector.getZ().getValue());
50 Assertions.assertEquals(expectedVector, targetVector);
51 }
52
53 private static class TestTargetProvider implements TargetProvider {
54
55 @Override
56 public <T extends CalculusFieldElement<T>> FieldVector3D<T> getTargetDirection(ExtendedPositionProvider sun, OneAxisEllipsoid earth,
57 TimeStampedFieldPVCoordinates<T> pv, Frame frame) {
58 return new FieldVector3D<>(pv.getDate().getField(), pv.getPosition().toVector3D());
59 }
60 }
61
62 }