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.KeplerianOrbit;
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.BrouwerLyddanePropagator;
27 import org.orekit.time.AbsoluteDate;
28 import org.orekit.propagation.conversion.averaging.elements.AveragedKeplerianWithMeanAngle;
29
30
31
32
33
34
35
36
37
38 public class BrouwerLyddaneOrbitalState extends AbstractHarmonicsBasedOrbitalState {
39
40
41 private static final double M2 = 0.;
42
43
44 private final AveragedKeplerianWithMeanAngle averagedElements;
45
46
47
48
49
50
51
52
53 public BrouwerLyddaneOrbitalState(final AbsoluteDate date,
54 final AveragedKeplerianWithMeanAngle elements,
55 final Frame frame,
56 final UnnormalizedSphericalHarmonicsProvider harmonicsProvider) {
57 super(date, frame, harmonicsProvider);
58 this.averagedElements = elements;
59 }
60
61
62 @Override
63 public OrbitType getOrbitType() {
64 return OrbitType.KEPLERIAN;
65 }
66
67
68 @Override
69 public PositionAngleType getPositionAngleType() {
70 return PositionAngleType.MEAN;
71 }
72
73
74 @Override
75 public AveragedKeplerianWithMeanAngle getAveragedElements() {
76 return averagedElements;
77 }
78
79
80 @Override
81 public Orbit toOsculatingOrbit() {
82 final BrouwerLyddanePropagator propagator = createPropagator();
83 return propagator.propagateOrbit(getDate());
84 }
85
86
87
88
89
90 private BrouwerLyddanePropagator createPropagator() {
91 final KeplerianOrbit orekitOrbit = createOrekitOrbit();
92 return new BrouwerLyddanePropagator(orekitOrbit, getHarmonicsProvider(),
93 PropagationType.MEAN, M2);
94 }
95
96
97
98
99
100 private KeplerianOrbit createOrekitOrbit() {
101 return new KeplerianOrbit(averagedElements.getAveragedSemiMajorAxis(),
102 averagedElements.getAveragedEccentricity(), averagedElements.getAveragedInclination(),
103 averagedElements.getAveragedPerigeeArgument(),
104 averagedElements.getAveragedRightAscensionOfTheAscendingNode(),
105 averagedElements.getAveragedMeanAnomaly(), getPositionAngleType(), getFrame(),
106 getDate(), getMu());
107 }
108
109 }