1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.estimation.common;
19
20 import org.hipparchus.geometry.euclidean.threed.Vector3D;
21 import org.orekit.attitudes.AttitudeProvider;
22 import org.orekit.attitudes.BodyCenterPointing;
23 import org.orekit.attitudes.InertialProvider;
24 import org.orekit.attitudes.LofOffset;
25 import org.orekit.attitudes.NadirPointing;
26 import org.orekit.attitudes.YawCompensation;
27 import org.orekit.attitudes.YawSteering;
28 import org.orekit.bodies.CelestialBodyFactory;
29 import org.orekit.bodies.OneAxisEllipsoid;
30 import org.orekit.frames.Frame;
31 import org.orekit.frames.FramesFactory;
32 import org.orekit.frames.LOFType;
33
34
35
36
37 enum AttitudeMode {
38
39
40 DEFAULT_LAW() {
41
42 @Override
43 public AttitudeProvider getProvider(Frame inertialFrame,
44 OneAxisEllipsoid body) {
45 return InertialProvider.of(FramesFactory.getEME2000());
46 }
47 },
48
49
50 NADIR_POINTING_WITH_YAW_COMPENSATION() {
51
52 @Override
53 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
54 return new YawCompensation(inertialFrame, new NadirPointing(inertialFrame, body));
55 }
56 },
57
58
59 CENTER_POINTING_WITH_YAW_STEERING {
60
61 @Override
62 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
63 return new YawSteering(inertialFrame,
64 new BodyCenterPointing(inertialFrame, body),
65 CelestialBodyFactory.getSun(),
66 Vector3D.PLUS_I);
67 }
68 },
69
70
71 LOF_ALIGNED_LVLH {
72
73 @Override
74 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
75 return new LofOffset(inertialFrame, LOFType.LVLH);
76 }
77 },
78
79
80
81
82 LOF_ALIGNED_LVLH_CCSDS {
83
84 @Override
85 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
86 return new LofOffset(inertialFrame, LOFType.LVLH_CCSDS);
87 }
88 },
89
90
91 LOF_ALIGNED_QSW {
92
93 @Override
94 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
95 return new LofOffset(inertialFrame, LOFType.QSW);
96 }
97 },
98
99
100 LOF_ALIGNED_TNW {
101
102 @Override
103 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
104 return new LofOffset(inertialFrame, LOFType.TNW);
105 }
106 },
107
108
109 LOF_ALIGNED_VNC {
110
111 @Override
112 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
113 return new LofOffset(inertialFrame, LOFType.VNC);
114 }
115 },
116
117
118
119
120 LOF_ALIGNED_EQW {
121
122 @Override
123 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
124 return new LofOffset(inertialFrame, LOFType.EQW);
125 }
126 },
127
128
129
130
131 LOF_ALIGNED_NTW {
132
133 @Override
134 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
135 return new LofOffset(inertialFrame, LOFType.NTW);
136 }
137 };
138
139
140
141
142
143
144 public abstract AttitudeProvider getProvider(Frame inertialFrame, OneAxisEllipsoid body);
145
146 }