open-space-toolkit-astrodynamics 13.1.0__py39-none-manylinux2014_aarch64.whl → 14.0.0__py39-none-manylinux2014_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-14.0.0.dist-info}/METADATA +3 -3
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-14.0.0.dist-info}/RECORD +52 -20
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-14.0.0.dist-info}/WHEEL +1 -1
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-aarch64-linux-gnu.so +0 -0
- ostk/astrodynamics/__init__.pyi +785 -0
- ostk/astrodynamics/access.pyi +588 -0
- ostk/astrodynamics/conjunction/__init__.pyi +3 -0
- ostk/astrodynamics/conjunction/message/__init__.pyi +3 -0
- ostk/astrodynamics/conjunction/message/ccsds.pyi +723 -0
- ostk/astrodynamics/converters.pyi +58 -0
- ostk/astrodynamics/data/__init__.pyi +3 -0
- ostk/astrodynamics/data/provider.pyi +22 -0
- ostk/astrodynamics/dynamics.pyi +329 -0
- ostk/astrodynamics/event_condition.pyi +580 -0
- ostk/astrodynamics/flight/__init__.pyi +547 -0
- ostk/astrodynamics/flight/profile/__init__.pyi +102 -0
- ostk/astrodynamics/flight/profile/model.pyi +176 -0
- ostk/astrodynamics/flight/system.pyi +277 -0
- ostk/astrodynamics/guidance_law.pyi +282 -0
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.14 +0 -0
- ostk/astrodynamics/py.typed +0 -0
- ostk/astrodynamics/pytrajectory/__init__.pyi +3 -0
- ostk/astrodynamics/pytrajectory/pystate.py +2 -4
- ostk/astrodynamics/pytrajectory/pystate.pyi +65 -0
- ostk/astrodynamics/solver.pyi +232 -0
- ostk/astrodynamics/test/access/test_generator.py +130 -59
- ostk/astrodynamics/test/access/test_visibility_criterion.py +198 -0
- ostk/astrodynamics/test/data/provider/test_off_nadir.py +58 -0
- ostk/astrodynamics/test/flight/test_maneuver.py +49 -64
- ostk/astrodynamics/test/flight/test_profile.py +4 -2
- ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +24 -11
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +9 -1
- ostk/astrodynamics/test/test_display.py +11 -5
- ostk/astrodynamics/test/test_viewer.py +70 -1
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py +136 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +9 -0
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +21 -13
- ostk/astrodynamics/test/trajectory/test_propagator.py +21 -27
- ostk/astrodynamics/test/trajectory/test_segment.py +0 -1
- ostk/astrodynamics/trajectory/__init__.pyi +1796 -0
- ostk/astrodynamics/trajectory/orbit/__init__.pyi +361 -0
- ostk/astrodynamics/trajectory/orbit/message/__init__.pyi +3 -0
- ostk/astrodynamics/trajectory/orbit/message/spacex.pyi +273 -0
- ostk/astrodynamics/trajectory/orbit/model/__init__.pyi +517 -0
- ostk/astrodynamics/trajectory/orbit/model/brouwerLyddaneMean.pyi +127 -0
- ostk/astrodynamics/trajectory/orbit/model/kepler.pyi +581 -0
- ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi +333 -0
- ostk/astrodynamics/trajectory/state/__init__.pyi +406 -0
- ostk/astrodynamics/trajectory/state/coordinate_subset.pyi +223 -0
- ostk/astrodynamics/viewer.py +32 -0
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.13 +0 -0
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-14.0.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-14.0.0.dist-info}/zip-safe +0 -0
@@ -0,0 +1,581 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
import numpy
|
3
|
+
import ostk.core.type
|
4
|
+
import ostk.physics.coordinate
|
5
|
+
import ostk.physics.environment.object
|
6
|
+
import ostk.physics.environment.object.celestial
|
7
|
+
import ostk.physics.time
|
8
|
+
import ostk.physics.unit
|
9
|
+
import typing
|
10
|
+
__all__ = ['COE']
|
11
|
+
class COE:
|
12
|
+
"""
|
13
|
+
|
14
|
+
Classical orbital elements.
|
15
|
+
|
16
|
+
Provides the classical orbital elements used to describe the orbit of a body around another.
|
17
|
+
|
18
|
+
.. math::
|
19
|
+
|
20
|
+
\\begin{aligned}
|
21
|
+
a & = \\text{semi-major axis} \\\\
|
22
|
+
e & = \\text{eccentricity} \\\\
|
23
|
+
i & = \\text{inclination} \\\\
|
24
|
+
\\Omega & = \\text{right ascension of the ascending node} \\\\
|
25
|
+
\\omega & = \\text{argument of periapsis} \\\\
|
26
|
+
\\nu & = \\text{true anomaly} \\\\
|
27
|
+
M & = \\text{mean anomaly} \\\\
|
28
|
+
E & = \\text{eccentric anomaly} \\\\
|
29
|
+
r_p & = \\text{periapsis radius} \\\\
|
30
|
+
r_a & = \\text{apoapsis radius}
|
31
|
+
\\end{aligned}
|
32
|
+
|
33
|
+
|
34
|
+
"""
|
35
|
+
class AnomalyType:
|
36
|
+
"""
|
37
|
+
|
38
|
+
The type of Anomaly.
|
39
|
+
|
40
|
+
|
41
|
+
Members:
|
42
|
+
|
43
|
+
TrueAnomaly : True Anomaly
|
44
|
+
|
45
|
+
MeanAnomaly : Mean Anomaly
|
46
|
+
|
47
|
+
EccentricAnomaly : Eccentric Anomaly
|
48
|
+
"""
|
49
|
+
EccentricAnomaly: typing.ClassVar[COE.AnomalyType] # value = <AnomalyType.EccentricAnomaly: 2>
|
50
|
+
MeanAnomaly: typing.ClassVar[COE.AnomalyType] # value = <AnomalyType.MeanAnomaly: 1>
|
51
|
+
TrueAnomaly: typing.ClassVar[COE.AnomalyType] # value = <AnomalyType.TrueAnomaly: 0>
|
52
|
+
__members__: typing.ClassVar[dict[str, COE.AnomalyType]] # value = {'TrueAnomaly': <AnomalyType.TrueAnomaly: 0>, 'MeanAnomaly': <AnomalyType.MeanAnomaly: 1>, 'EccentricAnomaly': <AnomalyType.EccentricAnomaly: 2>}
|
53
|
+
@staticmethod
|
54
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
55
|
+
...
|
56
|
+
def __eq__(self, other: typing.Any) -> bool:
|
57
|
+
...
|
58
|
+
def __getstate__(self) -> int:
|
59
|
+
...
|
60
|
+
def __hash__(self) -> int:
|
61
|
+
...
|
62
|
+
def __index__(self) -> int:
|
63
|
+
...
|
64
|
+
def __init__(self, value: int) -> None:
|
65
|
+
...
|
66
|
+
def __int__(self) -> int:
|
67
|
+
...
|
68
|
+
def __ne__(self, other: typing.Any) -> bool:
|
69
|
+
...
|
70
|
+
def __repr__(self) -> str:
|
71
|
+
...
|
72
|
+
def __setstate__(self, state: int) -> None:
|
73
|
+
...
|
74
|
+
def __str__(self) -> str:
|
75
|
+
...
|
76
|
+
@property
|
77
|
+
def name(self) -> str:
|
78
|
+
...
|
79
|
+
@property
|
80
|
+
def value(self) -> int:
|
81
|
+
...
|
82
|
+
class Element:
|
83
|
+
"""
|
84
|
+
|
85
|
+
Classical Orbital Element enumeration.
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
Members:
|
90
|
+
|
91
|
+
SemiMajorAxis : Semi-Major Axis
|
92
|
+
|
93
|
+
Eccentricity : Eccentricity
|
94
|
+
|
95
|
+
Inclination : Inclination
|
96
|
+
|
97
|
+
Aop : Argument of Perigee
|
98
|
+
|
99
|
+
Raan : Right Angle of the Ascending Node
|
100
|
+
|
101
|
+
TrueAnomaly : True Anomaly
|
102
|
+
|
103
|
+
MeanAnomaly : Mean Anomaly
|
104
|
+
|
105
|
+
EccentricAnomaly : Eccentric Anomaly
|
106
|
+
"""
|
107
|
+
Aop: typing.ClassVar[COE.Element] # value = <Element.Aop: 4>
|
108
|
+
EccentricAnomaly: typing.ClassVar[COE.Element] # value = <Element.EccentricAnomaly: 7>
|
109
|
+
Eccentricity: typing.ClassVar[COE.Element] # value = <Element.Eccentricity: 1>
|
110
|
+
Inclination: typing.ClassVar[COE.Element] # value = <Element.Inclination: 2>
|
111
|
+
MeanAnomaly: typing.ClassVar[COE.Element] # value = <Element.MeanAnomaly: 6>
|
112
|
+
Raan: typing.ClassVar[COE.Element] # value = <Element.Raan: 3>
|
113
|
+
SemiMajorAxis: typing.ClassVar[COE.Element] # value = <Element.SemiMajorAxis: 0>
|
114
|
+
TrueAnomaly: typing.ClassVar[COE.Element] # value = <Element.TrueAnomaly: 5>
|
115
|
+
__members__: typing.ClassVar[dict[str, COE.Element]] # value = {'SemiMajorAxis': <Element.SemiMajorAxis: 0>, 'Eccentricity': <Element.Eccentricity: 1>, 'Inclination': <Element.Inclination: 2>, 'Aop': <Element.Aop: 4>, 'Raan': <Element.Raan: 3>, 'TrueAnomaly': <Element.TrueAnomaly: 5>, 'MeanAnomaly': <Element.MeanAnomaly: 6>, 'EccentricAnomaly': <Element.EccentricAnomaly: 7>}
|
116
|
+
@staticmethod
|
117
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
118
|
+
...
|
119
|
+
def __eq__(self, other: typing.Any) -> bool:
|
120
|
+
...
|
121
|
+
def __getstate__(self) -> int:
|
122
|
+
...
|
123
|
+
def __hash__(self) -> int:
|
124
|
+
...
|
125
|
+
def __index__(self) -> int:
|
126
|
+
...
|
127
|
+
def __init__(self, value: int) -> None:
|
128
|
+
...
|
129
|
+
def __int__(self) -> int:
|
130
|
+
...
|
131
|
+
def __ne__(self, other: typing.Any) -> bool:
|
132
|
+
...
|
133
|
+
def __repr__(self) -> str:
|
134
|
+
...
|
135
|
+
def __setstate__(self, state: int) -> None:
|
136
|
+
...
|
137
|
+
def __str__(self) -> str:
|
138
|
+
...
|
139
|
+
@property
|
140
|
+
def name(self) -> str:
|
141
|
+
...
|
142
|
+
@property
|
143
|
+
def value(self) -> int:
|
144
|
+
...
|
145
|
+
__hash__: typing.ClassVar[None] = None
|
146
|
+
@staticmethod
|
147
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
148
|
+
...
|
149
|
+
@staticmethod
|
150
|
+
def cartesian(cartesian_state: tuple[ostk.physics.coordinate.Position, ostk.physics.coordinate.Velocity], gravitational_parameter: ostk.physics.unit.Derived) -> COE:
|
151
|
+
"""
|
152
|
+
Create a `COE` model from Cartesian state.
|
153
|
+
|
154
|
+
Args:
|
155
|
+
cartesian_state (CartesianState): The Cartesian state.
|
156
|
+
gravitational_parameter (float): The gravitational parameter of the central body.
|
157
|
+
|
158
|
+
Returns:
|
159
|
+
COE: The `COE` model.
|
160
|
+
"""
|
161
|
+
@staticmethod
|
162
|
+
@typing.overload
|
163
|
+
def compute_angular_momentum(semi_major_axis: ostk.core.type.Real, eccentricity: ostk.core.type.Real, gravitational_parameter: ostk.physics.unit.Derived) -> ostk.core.type.Real:
|
164
|
+
"""
|
165
|
+
Compute the angular momentum from the semi-major axis and the eccentricity.
|
166
|
+
|
167
|
+
Args:
|
168
|
+
semi_major_axis (float): The semi-major axis. In meters.
|
169
|
+
eccentricity (float): The eccentricity.
|
170
|
+
gravitational_parameter (Derived): The gravitational parameter of the central body.
|
171
|
+
|
172
|
+
Returns:
|
173
|
+
Derived: The angular momentum.
|
174
|
+
"""
|
175
|
+
@staticmethod
|
176
|
+
@typing.overload
|
177
|
+
def compute_angular_momentum(semi_latus_rectum: ostk.core.type.Real, gravitational_parameter: ostk.physics.unit.Derived) -> ostk.core.type.Real:
|
178
|
+
"""
|
179
|
+
Compute the angular momentum from the semi-latus rectum.
|
180
|
+
|
181
|
+
Args:
|
182
|
+
semi_latus_rectum (float): The semi-latus rectum. In meters.
|
183
|
+
gravitational_parameter (Derived): The gravitational parameter of the central body.
|
184
|
+
|
185
|
+
Returns:
|
186
|
+
Derived: The angular momentum.
|
187
|
+
"""
|
188
|
+
@staticmethod
|
189
|
+
def compute_ltan(raan: ostk.physics.unit.Angle, instant: ostk.physics.time.Instant, sun: ostk.physics.environment.object.celestial.Sun = ...) -> ostk.physics.time.Time:
|
190
|
+
"""
|
191
|
+
Compute the Local Time of the Ascending Node (LTAN) from the RAAN and instant.
|
192
|
+
|
193
|
+
Args:
|
194
|
+
raan (Angle): The Right Ascension of the Ascending Node.
|
195
|
+
instant (Instant): The instant at which to compute LTAN.
|
196
|
+
sun (Sun): The Sun model.
|
197
|
+
|
198
|
+
Returns:
|
199
|
+
float: The Local Time of the Ascending Node (LTAN) in hours.
|
200
|
+
"""
|
201
|
+
@staticmethod
|
202
|
+
def compute_mean_ltan(raan: ostk.physics.unit.Angle, instant: ostk.physics.time.Instant, sun: ostk.physics.environment.object.celestial.Sun = ...) -> ostk.physics.time.Time:
|
203
|
+
"""
|
204
|
+
Compute the Mean Local Time of the Ascending Node (MLTAN) from the RAAN and instant.
|
205
|
+
|
206
|
+
Args:
|
207
|
+
raan (Angle): The Right Ascension of the Ascending Node.
|
208
|
+
instant (Instant): The instant at which to compute MLTAN.
|
209
|
+
sun (Sun): The Sun model.
|
210
|
+
|
211
|
+
Returns:
|
212
|
+
float: The Mean Local Time of the Ascending Node (MLTAN) in hours.
|
213
|
+
"""
|
214
|
+
@staticmethod
|
215
|
+
def compute_radial_distance(semi_latus_rectum: ostk.core.type.Real, eccentricity: ostk.core.type.Real, true_anomaly: ostk.core.type.Real) -> ostk.core.type.Real:
|
216
|
+
"""
|
217
|
+
Compute the radial distance from the semi-latus rectum and the eccentricity.
|
218
|
+
|
219
|
+
Args:
|
220
|
+
semi_latus_rectum (float): The semi-latus rectum. In meters.
|
221
|
+
eccentricity (float): The eccentricity.
|
222
|
+
true_anomaly (float): The true anomly. In degrees.
|
223
|
+
|
224
|
+
Returns:
|
225
|
+
Length: The radial distance.
|
226
|
+
"""
|
227
|
+
@staticmethod
|
228
|
+
def compute_semi_latus_rectum(semi_major_axis: ostk.core.type.Real, eccentricity: ostk.core.type.Real) -> ostk.core.type.Real:
|
229
|
+
"""
|
230
|
+
Compute the semi-latus rectum from the semi-major axis and the eccentricity.
|
231
|
+
|
232
|
+
Args:
|
233
|
+
semi_major_axis (float): The semi-major axis. In meters.
|
234
|
+
eccentricity (float): The eccentricity.
|
235
|
+
|
236
|
+
Returns:
|
237
|
+
Length: The semi-latus rectum.
|
238
|
+
"""
|
239
|
+
@staticmethod
|
240
|
+
def eccentric_anomaly_from_mean_anomaly(mean_anomaly: ostk.physics.unit.Angle, eccentricity: ostk.core.type.Real, tolerance: ostk.core.type.Real) -> ostk.physics.unit.Angle:
|
241
|
+
"""
|
242
|
+
Compute the eccentric anomaly from the mean anomaly.
|
243
|
+
|
244
|
+
Args:
|
245
|
+
mean_anomaly (Angle): The mean anomaly.
|
246
|
+
eccentricity (float): The eccentricity.
|
247
|
+
tolerance (float): The tolerance of the root solver.
|
248
|
+
|
249
|
+
Returns:
|
250
|
+
Angle: The eccentric anomaly.
|
251
|
+
"""
|
252
|
+
@staticmethod
|
253
|
+
def eccentric_anomaly_from_true_anomaly(true_anomaly: ostk.physics.unit.Angle, eccentricity: ostk.core.type.Real) -> ostk.physics.unit.Angle:
|
254
|
+
"""
|
255
|
+
Compute the eccentric anomaly from the true anomaly.
|
256
|
+
|
257
|
+
Args:
|
258
|
+
true_anomaly (Angle): The true anomaly.
|
259
|
+
eccentricity (float): The eccentricity.
|
260
|
+
|
261
|
+
Returns:
|
262
|
+
Angle: The eccentric anomaly.
|
263
|
+
"""
|
264
|
+
@staticmethod
|
265
|
+
def from_SI_vector(vector: numpy.ndarray[numpy.float64[6, 1]], anomaly_type: COE.AnomalyType) -> COE:
|
266
|
+
"""
|
267
|
+
Create a `COE` model from a state vector in SI units.
|
268
|
+
|
269
|
+
Args:
|
270
|
+
vector (Vector6d): The state vector.
|
271
|
+
anomaly_type (AnomalyType): The type of anomaly.
|
272
|
+
|
273
|
+
Returns:
|
274
|
+
COE: The `COE` model.
|
275
|
+
"""
|
276
|
+
@staticmethod
|
277
|
+
@typing.overload
|
278
|
+
def frozen_orbit(semi_major_axis: ostk.physics.unit.Length, celestial_object: ostk.physics.environment.object.Celestial, eccentricity: ostk.core.type.Real = ..., inclination: ostk.physics.unit.Angle = ..., raan: ostk.physics.unit.Angle = ..., aop: ostk.physics.unit.Angle = ..., true_anomaly: ostk.physics.unit.Angle = ...) -> COE:
|
279
|
+
"""
|
280
|
+
Build a `COE` model of a frozen orbit.
|
281
|
+
|
282
|
+
The critical angles for inclination are 63.4349 degrees and 116.5651 degrees.
|
283
|
+
The critical angles for AoP are 90.0 degrees and 270.0 degrees.
|
284
|
+
|
285
|
+
At a minimum, a semi-major axis and shared pointer to a central celestial body with a defined J2 and J3
|
286
|
+
must be provided. In this case, the inclination and AoP are set to critical angles, and the eccentricity
|
287
|
+
is derived from inclination. RAAN and true anomaly default to zero degrees.
|
288
|
+
|
289
|
+
Additionally, the following combinations of inputs are supported:
|
290
|
+
- AoP (inclination set to critical value, eccentricity derived)
|
291
|
+
- AoP and eccentricity (inclination derived)
|
292
|
+
- AoP and inclination, but at least one of them must be a critical value (eccentricity derived)
|
293
|
+
- Inclination (AoP set to critical value, eccentricity derived)
|
294
|
+
- Eccentricity (AoP set to critical value, inclination derived)
|
295
|
+
|
296
|
+
Note that inclination and eccentricity cannot both be provided.
|
297
|
+
|
298
|
+
RAAN and True Anomaly may be provided alongside any of these arguments, and will be passed through
|
299
|
+
to the resulting COE as they do not impact the frozen orbit condition.
|
300
|
+
|
301
|
+
Args:
|
302
|
+
semi_major_axis (Length): The semi-major axis.
|
303
|
+
celestial_object (Celestial): The celestial object.
|
304
|
+
eccentricity (float): The eccentricity.
|
305
|
+
inclination (Angle): The inclination.
|
306
|
+
raan (Angle): The right ascension of the ascending node.
|
307
|
+
aop (Angle): The argument of periapsis.
|
308
|
+
true_anomaly (Angle): The true anomaly.
|
309
|
+
|
310
|
+
Returns:
|
311
|
+
COE: The `COE` model.
|
312
|
+
"""
|
313
|
+
@staticmethod
|
314
|
+
@typing.overload
|
315
|
+
def frozen_orbit(semi_major_axis: ostk.physics.unit.Length, equatorial_radius: ostk.physics.unit.Length, j2: ostk.core.type.Real, j3: ostk.core.type.Real, eccentricity: ostk.core.type.Real = ..., inclination: ostk.physics.unit.Angle = ..., raan: ostk.physics.unit.Angle = ..., aop: ostk.physics.unit.Angle = ..., true_anomaly: ostk.physics.unit.Angle = ...) -> COE:
|
316
|
+
"""
|
317
|
+
Build a `COE` model of a frozen orbit.
|
318
|
+
|
319
|
+
The critical angles for inclination are 63.4349 degrees and 116.5651 degrees.
|
320
|
+
The critical angles for AoP are 90.0 degrees and 270.0 degrees.
|
321
|
+
|
322
|
+
At a minimum, a semi-major axis, equatorial radius, J2, and J3 must be provided. In this case,
|
323
|
+
the inclination and AoP are set to critical angles, and the eccentricity is derived from inclination.
|
324
|
+
RAAN and true anomaly default to zero degrees.
|
325
|
+
|
326
|
+
Additionally, the following combinations of inputs are supported:
|
327
|
+
- AoP (inclination set to critical value, eccentricity derived)
|
328
|
+
- AoP and eccentricity (inclination derived)
|
329
|
+
- AoP and inclination, but at least one of them must be a critical value (eccentricity derived)
|
330
|
+
- Inclination (AoP set to critical value, eccentricity derived)
|
331
|
+
- Eccentricity (AoP set to critical value, inclination derived)
|
332
|
+
|
333
|
+
Note that inclination and eccentricity cannot both be provided.
|
334
|
+
|
335
|
+
RAAN and True Anomaly may be provided alongside any of these arguments, and will be passed through
|
336
|
+
to the resulting COE as they do not impact the frozen orbit condition.
|
337
|
+
|
338
|
+
Args:
|
339
|
+
semi_major_axis (Length): The semi-major axis.
|
340
|
+
equatorial_radius (Length): The equatorial radius.
|
341
|
+
j2 (float): The second zonal harmonic coefficient.
|
342
|
+
j3 (float): The third zonal harmonic coefficient.
|
343
|
+
eccentricity (float): The eccentricity.
|
344
|
+
inclination (Angle): The inclination.
|
345
|
+
raan (Angle): The right ascension of the ascending node.
|
346
|
+
aop (Angle): The argument of periapsis.
|
347
|
+
true_anomaly (Angle): The true anomaly.
|
348
|
+
|
349
|
+
Returns:
|
350
|
+
COE: The `COE` model.
|
351
|
+
"""
|
352
|
+
@staticmethod
|
353
|
+
def mean_anomaly_from_eccentric_anomaly(eccentric_anomaly: ostk.physics.unit.Angle, eccentricity: ostk.core.type.Real) -> ostk.physics.unit.Angle:
|
354
|
+
"""
|
355
|
+
Compute the mean anomaly from the eccentric anomaly.
|
356
|
+
|
357
|
+
Args:
|
358
|
+
eccentric_anomaly (Angle): The eccentric anomaly.
|
359
|
+
eccentricity (float): The eccentricity.
|
360
|
+
|
361
|
+
Returns:
|
362
|
+
Angle: The mean anomaly.
|
363
|
+
"""
|
364
|
+
@staticmethod
|
365
|
+
def string_from_element(element: COE.Element) -> ostk.core.type.String:
|
366
|
+
"""
|
367
|
+
Get the string representation of an element.
|
368
|
+
|
369
|
+
Args:
|
370
|
+
element (Element): The element.
|
371
|
+
|
372
|
+
Returns:
|
373
|
+
str: The string representation.
|
374
|
+
"""
|
375
|
+
@staticmethod
|
376
|
+
def true_anomaly_from_eccentric_anomaly(eccentric_anomaly: ostk.physics.unit.Angle, eccentricity: ostk.core.type.Real) -> ostk.physics.unit.Angle:
|
377
|
+
"""
|
378
|
+
Compute the true anomaly from the eccentric anomaly.
|
379
|
+
|
380
|
+
Args:
|
381
|
+
eccentric_anomaly (Angle): The eccentric anomaly.
|
382
|
+
eccentricity (float): The eccentricity.
|
383
|
+
|
384
|
+
Returns:
|
385
|
+
Angle: The true anomaly.
|
386
|
+
"""
|
387
|
+
@staticmethod
|
388
|
+
def true_anomaly_from_mean_anomaly(mean_anomaly: ostk.physics.unit.Angle, eccentricity: ostk.core.type.Real, tolerance: ostk.core.type.Real) -> ostk.physics.unit.Angle:
|
389
|
+
"""
|
390
|
+
Compute the true anomaly from the mean anomaly.
|
391
|
+
|
392
|
+
Args:
|
393
|
+
mean_anomaly (Angle): The mean anomaly.
|
394
|
+
eccentricity (float): The eccentricity.
|
395
|
+
tolerance (float): The tolerance of the root solver.
|
396
|
+
|
397
|
+
Returns:
|
398
|
+
Angle: The true anomaly.
|
399
|
+
"""
|
400
|
+
@staticmethod
|
401
|
+
def undefined() -> COE:
|
402
|
+
"""
|
403
|
+
Create an undefined `COE` model.
|
404
|
+
|
405
|
+
Returns:
|
406
|
+
COE: The undefined `COE` model.
|
407
|
+
"""
|
408
|
+
def __eq__(self, arg0: COE) -> bool:
|
409
|
+
...
|
410
|
+
def __init__(self, semi_major_axis: ostk.physics.unit.Length, eccentricity: ostk.core.type.Real, inclination: ostk.physics.unit.Angle, raan: ostk.physics.unit.Angle, aop: ostk.physics.unit.Angle, true_anomaly: ostk.physics.unit.Angle) -> None:
|
411
|
+
"""
|
412
|
+
Constructor.
|
413
|
+
|
414
|
+
Args:
|
415
|
+
semi_major_axis (Length): The semi-major axis.
|
416
|
+
eccentricity (float): The eccentricity.
|
417
|
+
inclination (Angle): The inclination.
|
418
|
+
raan (Angle): The right ascension of the ascending node.
|
419
|
+
aop (Angle): The argument of periapsis.
|
420
|
+
true_anomaly (Angle): The true anomaly.
|
421
|
+
"""
|
422
|
+
def __ne__(self, arg0: COE) -> bool:
|
423
|
+
...
|
424
|
+
def __repr__(self) -> str:
|
425
|
+
...
|
426
|
+
def __str__(self) -> str:
|
427
|
+
...
|
428
|
+
def get_SI_vector(self, anomaly_type: COE.AnomalyType) -> numpy.ndarray[numpy.float64[6, 1]]:
|
429
|
+
"""
|
430
|
+
Get the state vector of the COE in the specified anomaly type.
|
431
|
+
|
432
|
+
Args:
|
433
|
+
anomaly_type (AnomalyType): The type of anomaly.
|
434
|
+
|
435
|
+
Returns:
|
436
|
+
numpy.ndarray: The state vector of the COE in the specified anomaly type.
|
437
|
+
"""
|
438
|
+
def get_angular_momentum(self, arg0: ostk.physics.unit.Derived) -> ostk.physics.unit.Derived:
|
439
|
+
"""
|
440
|
+
Get the angular momentum of the COE.
|
441
|
+
|
442
|
+
Args:
|
443
|
+
gravitational_parameter (Derived): The gravitational parameter of the central body.
|
444
|
+
|
445
|
+
Returns:
|
446
|
+
Derived: The angular momentum of the COE.
|
447
|
+
"""
|
448
|
+
def get_aop(self) -> ostk.physics.unit.Angle:
|
449
|
+
"""
|
450
|
+
Get the argument of periapsis of the COE.
|
451
|
+
|
452
|
+
Returns:
|
453
|
+
Angle: The argument of periapsis of the COE.
|
454
|
+
"""
|
455
|
+
def get_apoapsis_radius(self) -> ostk.physics.unit.Length:
|
456
|
+
"""
|
457
|
+
Get the apoapsis radius of the COE.
|
458
|
+
|
459
|
+
Returns:
|
460
|
+
Length: The apoapsis radius of the COE.
|
461
|
+
"""
|
462
|
+
def get_cartesian_state(self, gravitational_parameter: ostk.physics.unit.Derived, frame: ostk.physics.coordinate.Frame) -> tuple[ostk.physics.coordinate.Position, ostk.physics.coordinate.Velocity]:
|
463
|
+
"""
|
464
|
+
Get the Cartesian state of the COE.
|
465
|
+
|
466
|
+
Args:
|
467
|
+
gravitational_parameter (double): The gravitational parameter of the central body.
|
468
|
+
frame (Frame): The reference frame in which to express the Cartesian state.
|
469
|
+
|
470
|
+
Returns:
|
471
|
+
CartesianState: The Cartesian state of the COE.
|
472
|
+
"""
|
473
|
+
def get_eccentric_anomaly(self) -> ostk.physics.unit.Angle:
|
474
|
+
"""
|
475
|
+
Get the eccentric anomaly of the COE.
|
476
|
+
|
477
|
+
Returns:
|
478
|
+
Angle: The eccentric anomaly of the COE.
|
479
|
+
"""
|
480
|
+
def get_eccentricity(self) -> ostk.core.type.Real:
|
481
|
+
"""
|
482
|
+
Get the eccentricity of the COE.
|
483
|
+
|
484
|
+
Returns:
|
485
|
+
float: The eccentricity of the COE.
|
486
|
+
"""
|
487
|
+
def get_inclination(self) -> ostk.physics.unit.Angle:
|
488
|
+
"""
|
489
|
+
Get the inclination of the COE.
|
490
|
+
|
491
|
+
Returns:
|
492
|
+
Angle: The inclination of the COE.
|
493
|
+
"""
|
494
|
+
def get_mean_anomaly(self) -> ostk.physics.unit.Angle:
|
495
|
+
"""
|
496
|
+
Get the mean anomaly of the COE.
|
497
|
+
|
498
|
+
Returns:
|
499
|
+
Angle: The mean anomaly of the COE.
|
500
|
+
"""
|
501
|
+
def get_mean_motion(self, gravitational_parameter: ostk.physics.unit.Derived) -> ostk.physics.unit.Derived:
|
502
|
+
"""
|
503
|
+
Get the mean motion of the COE.
|
504
|
+
|
505
|
+
Args:
|
506
|
+
gravitational_parameter (Derived): The gravitational parameter of the central body.
|
507
|
+
|
508
|
+
Returns:
|
509
|
+
Derived: The mean motion of the COE.
|
510
|
+
"""
|
511
|
+
def get_nodal_precession_rate(self, gravitational_parameter: ostk.physics.unit.Derived, equatorial_radius: ostk.physics.unit.Length, j2: ostk.core.type.Real) -> ostk.physics.unit.Derived:
|
512
|
+
"""
|
513
|
+
Get the nodal precession of the COE.
|
514
|
+
|
515
|
+
Args:
|
516
|
+
gravitational_parameter (Derived): The gravitational parameter of the central body.
|
517
|
+
equatorial_radius (Length): The equatorial radius of the central body.
|
518
|
+
j2 (float): The second zonal harmonic coefficient of the central body.
|
519
|
+
|
520
|
+
Returns:
|
521
|
+
Derived: The nodal precession of the COE.
|
522
|
+
"""
|
523
|
+
def get_orbital_period(self, gravitational_parameter: ostk.physics.unit.Derived) -> ostk.physics.time.Duration:
|
524
|
+
"""
|
525
|
+
Get the orbital period of the COE.
|
526
|
+
|
527
|
+
Args:
|
528
|
+
gravitational_parameter (double): The gravitational parameter of the central body.
|
529
|
+
|
530
|
+
Returns:
|
531
|
+
Duration: The orbital period of the COE.
|
532
|
+
"""
|
533
|
+
def get_periapsis_radius(self) -> ostk.physics.unit.Length:
|
534
|
+
"""
|
535
|
+
Get the periapsis radius of the COE.
|
536
|
+
|
537
|
+
Returns:
|
538
|
+
Length: The periapsis radius of the COE.
|
539
|
+
"""
|
540
|
+
def get_raan(self) -> ostk.physics.unit.Angle:
|
541
|
+
"""
|
542
|
+
Get the right ascension of the ascending node of the COE.
|
543
|
+
|
544
|
+
Returns:
|
545
|
+
Angle: The right ascension of the ascending node of the COE.
|
546
|
+
"""
|
547
|
+
def get_radial_distance(self) -> ostk.physics.unit.Length:
|
548
|
+
"""
|
549
|
+
Get the radial distance of the COE.
|
550
|
+
|
551
|
+
Returns:
|
552
|
+
Length: The radial distance of the COE.
|
553
|
+
"""
|
554
|
+
def get_semi_latus_rectum(self) -> ostk.physics.unit.Length:
|
555
|
+
"""
|
556
|
+
Get the semi-latus rectum of the COE.
|
557
|
+
|
558
|
+
Returns:
|
559
|
+
Length: The semilatus rectum of the COE.
|
560
|
+
"""
|
561
|
+
def get_semi_major_axis(self) -> ostk.physics.unit.Length:
|
562
|
+
"""
|
563
|
+
Get the semi-major axis of the COE.
|
564
|
+
|
565
|
+
Returns:
|
566
|
+
Length: The semi-major axis of the COE.
|
567
|
+
"""
|
568
|
+
def get_true_anomaly(self) -> ostk.physics.unit.Angle:
|
569
|
+
"""
|
570
|
+
Get the true anomaly of the COE.
|
571
|
+
|
572
|
+
Returns:
|
573
|
+
Angle: The true anomaly of the COE.
|
574
|
+
"""
|
575
|
+
def is_defined(self) -> bool:
|
576
|
+
"""
|
577
|
+
Check if the COE is defined.
|
578
|
+
|
579
|
+
Returns:
|
580
|
+
bool: True if the COE is defined, False otherwise.
|
581
|
+
"""
|