1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.utils;
19
20 import org.hipparchus.CalculusFieldElement;
21 import org.hipparchus.geometry.euclidean.threed.FieldVector3D;
22 import org.hipparchus.geometry.euclidean.threed.Vector3D;
23 import org.orekit.frames.Frame;
24 import org.orekit.time.AbsoluteDate;
25 import org.orekit.time.FieldAbsoluteDate;
26
27
28
29
30
31
32
33
34
35
36
37
38 public class FrameAdapter implements ExtendedPositionProvider {
39
40
41 private final Frame originFrame;
42
43
44
45
46 public FrameAdapter(final Frame originFrame) {
47 this.originFrame = originFrame;
48 }
49
50
51 @Override
52 public Vector3D getPosition(final AbsoluteDate date, final Frame frame) {
53 return originFrame.getStaticTransformTo(frame, date).transformPosition(Vector3D.ZERO);
54 }
55
56
57 @Override
58 public <T extends CalculusFieldElement<T>> FieldVector3D<T> getPosition(final FieldAbsoluteDate<T> date,
59 final Frame frame) {
60 return originFrame.getStaticTransformTo(frame, date).transformPosition(Vector3D.ZERO);
61 }
62
63
64 @Override
65 public Vector3D getVelocity(final AbsoluteDate date, final Frame frame) {
66 return originFrame.getKinematicTransformTo(frame, date).transformOnlyPV(PVCoordinates.ZERO).getVelocity();
67 }
68
69
70 @Override
71 public <T extends CalculusFieldElement<T>> FieldVector3D<T> getVelocity(final FieldAbsoluteDate<T> date, final Frame frame) {
72 return originFrame.getKinematicTransformTo(frame, date).transformOnlyPV(FieldPVCoordinates.getZero(date.getField())).getVelocity();
73 }
74
75
76 @Override
77 public TimeStampedPVCoordinates getPVCoordinates(final AbsoluteDate date, final Frame frame) {
78 return new TimeStampedPVCoordinates(date,
79 originFrame.getTransformTo(frame, date).transformPVCoordinates(PVCoordinates.ZERO));
80 }
81
82
83 @Override
84 public <T extends CalculusFieldElement<T>> TimeStampedFieldPVCoordinates<T> getPVCoordinates(final FieldAbsoluteDate<T> date,
85 final Frame frame) {
86 return new TimeStampedFieldPVCoordinates<>(date,
87 originFrame.getTransformTo(frame, date).transformPVCoordinates(PVCoordinates.ZERO));
88 }
89 }