1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.propagation.conversion.averaging;
18
19 import org.orekit.forces.gravity.potential.UnnormalizedSphericalHarmonicsProvider;
20 import org.orekit.frames.Frame;
21 import org.orekit.orbits.CircularOrbit;
22 import org.orekit.orbits.Orbit;
23 import org.orekit.orbits.OrbitType;
24 import org.orekit.orbits.PositionAngleType;
25 import org.orekit.propagation.PropagationType;
26 import org.orekit.propagation.analytical.EcksteinHechlerPropagator;
27 import org.orekit.time.AbsoluteDate;
28 import org.orekit.propagation.conversion.averaging.elements.AveragedCircularWithMeanAngle;
29
30
31
32
33
34
35
36
37
38 public class EcksteinHechlerOrbitalState extends AbstractHarmonicsBasedOrbitalState {
39
40
41 private final AveragedCircularWithMeanAngle averagedElements;
42
43
44
45
46
47
48
49
50 public EcksteinHechlerOrbitalState(final AbsoluteDate date,
51 final AveragedCircularWithMeanAngle elements,
52 final Frame frame,
53 final UnnormalizedSphericalHarmonicsProvider harmonicsProvider) {
54 super(date, frame, harmonicsProvider);
55 this.averagedElements = elements;
56 }
57
58
59 @Override
60 public OrbitType getOrbitType() {
61 return OrbitType.CIRCULAR;
62 }
63
64
65 @Override
66 public PositionAngleType getPositionAngleType() {
67 return PositionAngleType.MEAN;
68 }
69
70
71 @Override
72 public AveragedCircularWithMeanAngle getAveragedElements() {
73 return averagedElements;
74 }
75
76
77 @Override
78 public Orbit toOsculatingOrbit() {
79 final EcksteinHechlerPropagator propagator = createPropagator();
80 return propagator.propagateOrbit(getDate());
81 }
82
83
84
85
86
87 private EcksteinHechlerPropagator createPropagator() {
88 final CircularOrbit orekitOrbit = createOrekitOrbit();
89 return new EcksteinHechlerPropagator(orekitOrbit, getHarmonicsProvider(),
90 PropagationType.MEAN);
91 }
92
93
94
95
96
97 private CircularOrbit createOrekitOrbit() {
98 return new CircularOrbit(averagedElements.getAveragedSemiMajorAxis(),
99 averagedElements.getAveragedCircularEx(), averagedElements.getAveragedCircularEy(),
100 averagedElements.getAveragedInclination(),
101 averagedElements.getAveragedRightAscensionOfTheAscendingNode(),
102 averagedElements.getAveragedMeanLatitudeArgument(), getPositionAngleType(),
103 getFrame(), getDate(), getMu());
104 }
105
106 }