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.LofOffset;
24 import org.orekit.attitudes.NadirPointing;
25 import org.orekit.attitudes.YawCompensation;
26 import org.orekit.attitudes.YawSteering;
27 import org.orekit.bodies.CelestialBodyFactory;
28 import org.orekit.bodies.OneAxisEllipsoid;
29 import org.orekit.frames.Frame;
30 import org.orekit.frames.LOFType;
31
32
33
34
35 enum AttitudeMode {
36
37
38 NADIR_POINTING_WITH_YAW_COMPENSATION() {
39
40 @Override
41 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
42 return new YawCompensation(inertialFrame, new NadirPointing(inertialFrame, body));
43 }
44 },
45
46
47 CENTER_POINTING_WITH_YAW_STEERING {
48
49 @Override
50 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
51 return new YawSteering(inertialFrame,
52 new BodyCenterPointing(inertialFrame, body),
53 CelestialBodyFactory.getSun(),
54 Vector3D.PLUS_I);
55 }
56 },
57
58
59 LOF_ALIGNED_LVLH {
60
61 @Override
62 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
63 return new LofOffset(inertialFrame, LOFType.LVLH);
64 }
65 },
66
67
68 LOF_ALIGNED_QSW {
69
70 @Override
71 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
72 return new LofOffset(inertialFrame, LOFType.QSW);
73 }
74 },
75
76
77 LOF_ALIGNED_TNW {
78
79 @Override
80 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
81 return new LofOffset(inertialFrame, LOFType.TNW);
82 }
83 },
84
85
86 LOF_ALIGNED_VNC {
87
88 @Override
89 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
90 return new LofOffset(inertialFrame, LOFType.VNC);
91 }
92 },
93
94
95 LOF_ALIGNED_VVLH {
96
97 @Override
98 public AttitudeProvider getProvider(final Frame inertialFrame, final OneAxisEllipsoid body) {
99 return new LofOffset(inertialFrame, LOFType.VVLH);
100 }
101 };
102
103
104
105
106
107
108 public abstract AttitudeProvider getProvider(Frame inertialFrame, OneAxisEllipsoid body);
109
110 }