1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.attitudes;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.orekit.frames.FieldTransform;
21 import org.orekit.frames.Frame;
22 import org.orekit.frames.Transform;
23 import org.orekit.time.AbsoluteDate;
24 import org.orekit.time.FieldAbsoluteDate;
25 import org.orekit.utils.FieldPVCoordinatesProvider;
26 import org.orekit.utils.PVCoordinatesProvider;
27 import org.orekit.utils.TimeStampedAngularCoordinates;
28 import org.orekit.utils.TimeStampedFieldAngularCoordinates;
29
30
31
32
33
34
35 public class FixedFrameBuilder implements AttitudeBuilder {
36
37
38 private final Frame referenceFrame;
39
40
41
42
43 public FixedFrameBuilder(final Frame referenceFrame) {
44 this.referenceFrame = referenceFrame;
45 }
46
47
48 @Override
49 public Attitude build(final Frame frame, final PVCoordinatesProvider pvProv,
50 final TimeStampedAngularCoordinates rawAttitude) {
51
52 final AbsoluteDate date = rawAttitude.getDate();
53 final Transform t = frame.getTransformTo(referenceFrame, date);
54 final TimeStampedAngularCoordinates frame2Ref =
55 new TimeStampedAngularCoordinates(date,
56 t.getRotation(),
57 t.getRotationRate(),
58 t.getRotationAcceleration());
59
60 return new Attitude(frame, rawAttitude.addOffset(frame2Ref));
61
62 }
63
64
65 @Override
66 public <T extends CalculusFieldElement<T>> FieldAttitude<T>
67 build(final Frame frame, final FieldPVCoordinatesProvider<T> pvProv,
68 final TimeStampedFieldAngularCoordinates<T> rawAttitude) {
69
70 final FieldAbsoluteDate<T> date = rawAttitude.getDate();
71 final FieldTransform<T> t = frame.getTransformTo(referenceFrame, date);
72 final TimeStampedFieldAngularCoordinates<T> frame2Ref =
73 new TimeStampedFieldAngularCoordinates<>(date,
74 t.getRotation(),
75 t.getRotationRate(),
76 t.getRotationAcceleration());
77
78 return new FieldAttitude<>(frame, rawAttitude.addOffset(frame2Ref));
79
80 }
81
82 }