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, t.getAngular());
56
57 return new Attitude(frame, rawAttitude.addOffset(frame2Ref));
58
59 }
60
61
62 @Override
63 public <T extends CalculusFieldElement<T>> FieldAttitude<T>
64 build(final Frame frame, final FieldPVCoordinatesProvider<T> pvProv,
65 final TimeStampedFieldAngularCoordinates<T> rawAttitude) {
66
67 final FieldAbsoluteDate<T> date = rawAttitude.getDate();
68 final FieldTransform<T> t = frame.getTransformTo(referenceFrame, date);
69 final TimeStampedFieldAngularCoordinates<T> frame2Ref =
70 new TimeStampedFieldAngularCoordinates<>(date,
71 t.getRotation(),
72 t.getRotationRate(),
73 t.getRotationAcceleration());
74
75 return new FieldAttitude<>(frame, rawAttitude.addOffset(frame2Ref));
76
77 }
78
79 }