open-space-toolkit-astrodynamics 17.2.0__py312-none-manylinux2014_x86_64.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-17.2.0.dist-info/METADATA +30 -0
- open_space_toolkit_astrodynamics-17.2.0.dist-info/RECORD +151 -0
- open_space_toolkit_astrodynamics-17.2.0.dist-info/WHEEL +5 -0
- open_space_toolkit_astrodynamics-17.2.0.dist-info/top_level.txt +1 -0
- open_space_toolkit_astrodynamics-17.2.0.dist-info/zip-safe +1 -0
- ostk/__init__.py +1 -0
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-312-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/__init__.py +11 -0
- ostk/astrodynamics/__init__.pyi +720 -0
- ostk/astrodynamics/access.pyi +577 -0
- ostk/astrodynamics/conjunction/__init__.pyi +121 -0
- ostk/astrodynamics/conjunction/close_approach.pyi +89 -0
- ostk/astrodynamics/conjunction/message/__init__.pyi +3 -0
- ostk/astrodynamics/conjunction/message/ccsds.pyi +705 -0
- ostk/astrodynamics/converters.py +130 -0
- ostk/astrodynamics/converters.pyi +58 -0
- ostk/astrodynamics/data/__init__.pyi +3 -0
- ostk/astrodynamics/data/provider.pyi +22 -0
- ostk/astrodynamics/dataframe.py +597 -0
- ostk/astrodynamics/display.py +281 -0
- ostk/astrodynamics/dynamics.pyi +311 -0
- ostk/astrodynamics/eclipse.pyi +70 -0
- ostk/astrodynamics/estimator.pyi +268 -0
- ostk/astrodynamics/event_condition.pyi +910 -0
- ostk/astrodynamics/flight/__init__.pyi +626 -0
- ostk/astrodynamics/flight/profile/__init__.pyi +99 -0
- ostk/astrodynamics/flight/profile/model.pyi +179 -0
- ostk/astrodynamics/flight/system.pyi +268 -0
- ostk/astrodynamics/guidance_law.pyi +416 -0
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.17 +0 -0
- ostk/astrodynamics/pytrajectory/__init__.py +1 -0
- ostk/astrodynamics/pytrajectory/__init__.pyi +3 -0
- ostk/astrodynamics/pytrajectory/pystate.py +263 -0
- ostk/astrodynamics/pytrajectory/pystate.pyi +66 -0
- ostk/astrodynamics/solver.pyi +432 -0
- ostk/astrodynamics/test/__init__.py +1 -0
- ostk/astrodynamics/test/access/__init__.py +1 -0
- ostk/astrodynamics/test/access/test_generator.py +319 -0
- ostk/astrodynamics/test/access/test_visibility_criterion.py +201 -0
- ostk/astrodynamics/test/conftest.py +119 -0
- ostk/astrodynamics/test/conjunction/close_approach/__init__.py +0 -0
- ostk/astrodynamics/test/conjunction/close_approach/test_generator.py +228 -0
- ostk/astrodynamics/test/conjunction/message/ccsds/__init__.py +1 -0
- ostk/astrodynamics/test/conjunction/message/ccsds/conftest.py +325 -0
- ostk/astrodynamics/test/conjunction/message/ccsds/data/cdm.json +303 -0
- ostk/astrodynamics/test/conjunction/message/ccsds/test_cdm.py +416 -0
- ostk/astrodynamics/test/conjunction/test_close_approach.py +244 -0
- ostk/astrodynamics/test/data/provider/test_off_nadir.py +58 -0
- ostk/astrodynamics/test/dynamics/__init__.py +1 -0
- ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity.csv +565 -0
- ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity_Truth.csv +100 -0
- ostk/astrodynamics/test/dynamics/test_atmospheric_drag.py +128 -0
- ostk/astrodynamics/test/dynamics/test_central_body_gravity.py +58 -0
- ostk/astrodynamics/test/dynamics/test_dynamics.py +50 -0
- ostk/astrodynamics/test/dynamics/test_position_derivative.py +51 -0
- ostk/astrodynamics/test/dynamics/test_tabulated.py +138 -0
- ostk/astrodynamics/test/dynamics/test_third_body_gravity.py +67 -0
- ostk/astrodynamics/test/dynamics/test_thruster.py +157 -0
- ostk/astrodynamics/test/eclipse/__init__.py +1 -0
- ostk/astrodynamics/test/eclipse/test_generator.py +138 -0
- ostk/astrodynamics/test/estimator/test_orbit_determination_solver.py +261 -0
- ostk/astrodynamics/test/estimator/test_tle_solver.py +216 -0
- ostk/astrodynamics/test/event_condition/test_angular_condition.py +113 -0
- ostk/astrodynamics/test/event_condition/test_boolean_condition.py +55 -0
- ostk/astrodynamics/test/event_condition/test_brouwer_lyddane_mean_long_condition.py +135 -0
- ostk/astrodynamics/test/event_condition/test_coe_condition.py +135 -0
- ostk/astrodynamics/test/event_condition/test_instant_condition.py +48 -0
- ostk/astrodynamics/test/event_condition/test_logical_condition.py +120 -0
- ostk/astrodynamics/test/event_condition/test_real_condition.py +50 -0
- ostk/astrodynamics/test/flight/__init__.py +1 -0
- ostk/astrodynamics/test/flight/profile/model/test_tabulated_profile.py +115 -0
- ostk/astrodynamics/test/flight/system/__init__.py +1 -0
- ostk/astrodynamics/test/flight/system/test_propulsion_system.py +64 -0
- ostk/astrodynamics/test/flight/system/test_satellite_system.py +83 -0
- ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py +71 -0
- ostk/astrodynamics/test/flight/test_maneuver.py +231 -0
- ostk/astrodynamics/test/flight/test_profile.py +293 -0
- ostk/astrodynamics/test/flight/test_system.py +45 -0
- ostk/astrodynamics/test/guidance_law/test_constant_thrust.py +177 -0
- ostk/astrodynamics/test/guidance_law/test_guidance_law.py +60 -0
- ostk/astrodynamics/test/guidance_law/test_heterogeneous_guidance_law.py +164 -0
- ostk/astrodynamics/test/guidance_law/test_qlaw.py +209 -0
- ostk/astrodynamics/test/solvers/__init__.py +1 -0
- ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +196 -0
- ostk/astrodynamics/test/solvers/test_least_squares_solver.py +334 -0
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +161 -0
- ostk/astrodynamics/test/test_access.py +128 -0
- ostk/astrodynamics/test/test_converters.py +290 -0
- ostk/astrodynamics/test/test_dataframe.py +1355 -0
- ostk/astrodynamics/test/test_display.py +184 -0
- ostk/astrodynamics/test/test_event_condition.py +80 -0
- ostk/astrodynamics/test/test_import.py +26 -0
- ostk/astrodynamics/test/test_root_solver.py +70 -0
- ostk/astrodynamics/test/test_trajectory.py +126 -0
- ostk/astrodynamics/test/test_utilities.py +338 -0
- ostk/astrodynamics/test/test_viewer.py +318 -0
- ostk/astrodynamics/test/trajectory/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/model/test_nadir_trajectory.py +87 -0
- ostk/astrodynamics/test/trajectory/model/test_tabulated_trajectory.py +303 -0
- ostk/astrodynamics/test/trajectory/model/test_target_scan_trajectory.py +126 -0
- ostk/astrodynamics/test/trajectory/orbit/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/message/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/message/spacex/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/message/spacex/conftest.py +18 -0
- ostk/astrodynamics/test/trajectory/orbit/message/spacex/data/opm_1.yaml +44 -0
- ostk/astrodynamics/test/trajectory/orbit/message/spacex/test_opm.py +108 -0
- ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py +65 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py +102 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py +102 -0
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +305 -0
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +337 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +130 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_modified_equinoctial.py +142 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +234 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +380 -0
- ostk/astrodynamics/test/trajectory/orbit/test_model.py +1 -0
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py +75 -0
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_angular_velocity.py +30 -0
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py +18 -0
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py +136 -0
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py +107 -0
- ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py +115 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinate_broker.py +84 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +58 -0
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +316 -0
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py +81 -0
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +119 -0
- ostk/astrodynamics/test/trajectory/test_model.py +1 -0
- ostk/astrodynamics/test/trajectory/test_orbit.py +212 -0
- ostk/astrodynamics/test/trajectory/test_propagator.py +452 -0
- ostk/astrodynamics/test/trajectory/test_segment.py +694 -0
- ostk/astrodynamics/test/trajectory/test_sequence.py +550 -0
- ostk/astrodynamics/test/trajectory/test_state.py +629 -0
- ostk/astrodynamics/test/trajectory/test_state_builder.py +172 -0
- ostk/astrodynamics/trajectory/__init__.pyi +1982 -0
- ostk/astrodynamics/trajectory/model.pyi +259 -0
- ostk/astrodynamics/trajectory/orbit/__init__.pyi +349 -0
- ostk/astrodynamics/trajectory/orbit/message/__init__.pyi +3 -0
- ostk/astrodynamics/trajectory/orbit/message/spacex.pyi +264 -0
- ostk/astrodynamics/trajectory/orbit/model/__init__.pyi +648 -0
- ostk/astrodynamics/trajectory/orbit/model/brouwerLyddaneMean.pyi +121 -0
- ostk/astrodynamics/trajectory/orbit/model/kepler.pyi +709 -0
- ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi +330 -0
- ostk/astrodynamics/trajectory/state/__init__.pyi +402 -0
- ostk/astrodynamics/trajectory/state/coordinate_subset.pyi +208 -0
- ostk/astrodynamics/utilities.py +396 -0
- ostk/astrodynamics/viewer.py +851 -0
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import numpy
|
|
3
|
+
import ostk.astrodynamics.trajectory
|
|
4
|
+
import ostk.astrodynamics.trajectory.orbit
|
|
5
|
+
import ostk.core.type
|
|
6
|
+
import ostk.mathematics.curve_fitting
|
|
7
|
+
import ostk.physics.coordinate
|
|
8
|
+
import ostk.physics.environment.object
|
|
9
|
+
import ostk.physics.time
|
|
10
|
+
import ostk.physics.unit
|
|
11
|
+
import typing
|
|
12
|
+
from . import brouwerLyddaneMean
|
|
13
|
+
from . import kepler
|
|
14
|
+
from . import sgp4
|
|
15
|
+
__all__ = ['BrouwerLyddaneMean', 'Kepler', 'ModifiedEquinoctial', 'Propagated', 'SGP4', 'Tabulated', 'brouwerLyddaneMean', 'kepler', 'sgp4']
|
|
16
|
+
class BrouwerLyddaneMean(kepler.COE):
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
Brouwer-Lyddane mean orbit elements. This is a parent class, please use the Short or Long child classes as appropriate.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
"""
|
|
23
|
+
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, mean_anomaly: ostk.physics.unit.Angle) -> None:
|
|
24
|
+
"""
|
|
25
|
+
Constructor.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
semi_major_axis (Length): The semi-major axis.
|
|
29
|
+
eccentricity (float): The eccentricity.
|
|
30
|
+
inclination (Angle): The inclination.
|
|
31
|
+
raan (Angle): The right ascension of the ascending node.
|
|
32
|
+
aop (Angle): The argument of periapsis.
|
|
33
|
+
mean_anomaly (Angle): The mean anomaly.
|
|
34
|
+
"""
|
|
35
|
+
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]:
|
|
36
|
+
"""
|
|
37
|
+
Get the Cartesian state of the `BrouwerLyddaneMean` model.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
gravitational_parameter (float): The gravitational parameter of the central body.
|
|
41
|
+
frame (str): The reference frame in which the state is expressed.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
CartesianState: The Cartesian state.
|
|
45
|
+
"""
|
|
46
|
+
def get_eccentric_anomaly(self) -> ostk.physics.unit.Angle:
|
|
47
|
+
"""
|
|
48
|
+
Get the eccentric anomaly of the `BrouwerLyddaneMean` model.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Angle: The eccentric anomaly.
|
|
52
|
+
"""
|
|
53
|
+
def get_mean_anomaly(self) -> ostk.physics.unit.Angle:
|
|
54
|
+
"""
|
|
55
|
+
Get the mean anomaly of the `BrouwerLyddaneMean` model.
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
Angle: The mean anomaly.
|
|
59
|
+
"""
|
|
60
|
+
def get_true_anomaly(self) -> ostk.physics.unit.Angle:
|
|
61
|
+
"""
|
|
62
|
+
Get the true anomaly of the `BrouwerLyddaneMean` model.
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Angle: The true anomaly.
|
|
66
|
+
"""
|
|
67
|
+
def to_coe(self) -> kepler.COE:
|
|
68
|
+
"""
|
|
69
|
+
Convert the `BrouwerLyddaneMean` model to classical orbital elements.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
COE: The classical orbital elements.
|
|
73
|
+
"""
|
|
74
|
+
class Kepler(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
A Kepler orbit model.
|
|
78
|
+
|
|
79
|
+
Provides the interface for orbit models.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
"""
|
|
83
|
+
class PerturbationType:
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
The Perturbation Type due to Oblateness
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
Members:
|
|
91
|
+
|
|
92
|
+
No : No perturbation
|
|
93
|
+
|
|
94
|
+
J2 : J2 perturbation
|
|
95
|
+
|
|
96
|
+
J4 : J4 perturbation
|
|
97
|
+
"""
|
|
98
|
+
J2: typing.ClassVar[Kepler.PerturbationType] # value = <PerturbationType.J2: 1>
|
|
99
|
+
J4: typing.ClassVar[Kepler.PerturbationType] # value = <PerturbationType.J4: 2>
|
|
100
|
+
No: typing.ClassVar[Kepler.PerturbationType] # value = <PerturbationType.No: 0>
|
|
101
|
+
__members__: typing.ClassVar[dict[str, Kepler.PerturbationType]] # value = {'No': <PerturbationType.No: 0>, 'J2': <PerturbationType.J2: 1>, 'J4': <PerturbationType.J4: 2>}
|
|
102
|
+
def __eq__(self, other: typing.Any) -> bool:
|
|
103
|
+
...
|
|
104
|
+
def __getstate__(self) -> int:
|
|
105
|
+
...
|
|
106
|
+
def __hash__(self) -> int:
|
|
107
|
+
...
|
|
108
|
+
def __index__(self) -> int:
|
|
109
|
+
...
|
|
110
|
+
def __init__(self, value: int) -> None:
|
|
111
|
+
...
|
|
112
|
+
def __int__(self) -> int:
|
|
113
|
+
...
|
|
114
|
+
def __ne__(self, other: typing.Any) -> bool:
|
|
115
|
+
...
|
|
116
|
+
def __repr__(self) -> str:
|
|
117
|
+
...
|
|
118
|
+
def __setstate__(self, state: int) -> None:
|
|
119
|
+
...
|
|
120
|
+
def __str__(self) -> str:
|
|
121
|
+
...
|
|
122
|
+
@property
|
|
123
|
+
def name(self) -> str:
|
|
124
|
+
...
|
|
125
|
+
@property
|
|
126
|
+
def value(self) -> int:
|
|
127
|
+
...
|
|
128
|
+
__hash__: typing.ClassVar[None] = None
|
|
129
|
+
@staticmethod
|
|
130
|
+
def string_from_perturbation_type(perturbation_type: Kepler.PerturbationType) -> ostk.core.type.String:
|
|
131
|
+
"""
|
|
132
|
+
Get the string representation of a `PerturbationType`.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
perturbation_type (PerturbationType): The perturbation type.
|
|
136
|
+
|
|
137
|
+
Returns:
|
|
138
|
+
str: The string representation.
|
|
139
|
+
"""
|
|
140
|
+
def __eq__(self, arg0: Kepler) -> bool:
|
|
141
|
+
...
|
|
142
|
+
@typing.overload
|
|
143
|
+
def __init__(self, coe: typing.Any, epoch: ostk.physics.time.Instant, gravitational_parameter: ostk.physics.unit.Derived, equatorial_radius: ostk.physics.unit.Length, j2: ostk.core.type.Real, j4: ostk.core.type.Real, perturbation_type: Kepler.PerturbationType) -> None:
|
|
144
|
+
"""
|
|
145
|
+
Constructor.
|
|
146
|
+
|
|
147
|
+
Args:
|
|
148
|
+
coe (COE): The classical orbital elements.
|
|
149
|
+
epoch (Instant): The epoch.
|
|
150
|
+
gravitational_parameter (Derived): The gravitational parameter.
|
|
151
|
+
equatorial_radius (Length): The equatorial radius.
|
|
152
|
+
j2 (float): The J2 coefficient.
|
|
153
|
+
j4 (float): The J4 coefficient.
|
|
154
|
+
perturbation_type (PerturbationType): The perturbation type.
|
|
155
|
+
"""
|
|
156
|
+
@typing.overload
|
|
157
|
+
def __init__(self, coe: typing.Any, epoch: ostk.physics.time.Instant, celestial_object: ostk.physics.environment.object.Celestial, perturbation_type: Kepler.PerturbationType, in_fixed_frame: bool = False) -> None:
|
|
158
|
+
"""
|
|
159
|
+
Constructor.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
coe (COE): The classical orbital elements.
|
|
163
|
+
epoch (Instant): The epoch.
|
|
164
|
+
celestial_object (Celestial): The celestial object.
|
|
165
|
+
perturbation_type (PerturbationType): The perturbation type.
|
|
166
|
+
in_fixed_frame (bool): If True, the state is expressed in the fixed frame, otherwise it is expressed in the inertial frame. Default is False.
|
|
167
|
+
"""
|
|
168
|
+
def __ne__(self, arg0: Kepler) -> bool:
|
|
169
|
+
...
|
|
170
|
+
def __repr__(self) -> str:
|
|
171
|
+
...
|
|
172
|
+
def __str__(self) -> str:
|
|
173
|
+
...
|
|
174
|
+
def calculate_revolution_number_at(self, instant: ostk.physics.time.Instant) -> ostk.core.type.Integer:
|
|
175
|
+
"""
|
|
176
|
+
Calculate the revolution number of the `Kepler` model at a given instant.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
instant (Instant): The instant.
|
|
180
|
+
|
|
181
|
+
Returns:
|
|
182
|
+
int: The revolution number.
|
|
183
|
+
"""
|
|
184
|
+
def calculate_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
|
|
185
|
+
"""
|
|
186
|
+
Calculate the state of the `Kepler` model at a given instant.
|
|
187
|
+
|
|
188
|
+
Args:
|
|
189
|
+
instant (Instant): The instant.
|
|
190
|
+
|
|
191
|
+
Returns:
|
|
192
|
+
State: The state.
|
|
193
|
+
"""
|
|
194
|
+
def get_classical_orbital_elements(self) -> ...:
|
|
195
|
+
"""
|
|
196
|
+
Get the classical orbital elements of the `Kepler` model.
|
|
197
|
+
|
|
198
|
+
Returns:
|
|
199
|
+
COE: The classical orbital elements.
|
|
200
|
+
"""
|
|
201
|
+
def get_epoch(self) -> ostk.physics.time.Instant:
|
|
202
|
+
"""
|
|
203
|
+
Get the epoch of the `Kepler` model.
|
|
204
|
+
|
|
205
|
+
Returns:
|
|
206
|
+
Instant: The epoch.
|
|
207
|
+
"""
|
|
208
|
+
def get_equatorial_radius(self) -> ostk.physics.unit.Length:
|
|
209
|
+
"""
|
|
210
|
+
Get the equatorial radius of the `Kepler` model.
|
|
211
|
+
|
|
212
|
+
Returns:
|
|
213
|
+
Length: The equatorial radius.
|
|
214
|
+
"""
|
|
215
|
+
def get_gravitational_parameter(self) -> ostk.physics.unit.Derived:
|
|
216
|
+
"""
|
|
217
|
+
Get the gravitational parameter of the `Kepler` model.
|
|
218
|
+
|
|
219
|
+
Returns:
|
|
220
|
+
Derived: The gravitational parameter.
|
|
221
|
+
"""
|
|
222
|
+
def get_j2(self) -> ostk.core.type.Real:
|
|
223
|
+
"""
|
|
224
|
+
Get the J2 coefficient of the `Kepler` model.
|
|
225
|
+
|
|
226
|
+
Returns:
|
|
227
|
+
float: The J2 coefficient.
|
|
228
|
+
"""
|
|
229
|
+
def get_j4(self) -> ostk.core.type.Real:
|
|
230
|
+
"""
|
|
231
|
+
Get the J4 coefficient of the `Kepler` model.
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
float: The J4 coefficient.
|
|
235
|
+
"""
|
|
236
|
+
def get_perturbation_type(self) -> Kepler.PerturbationType:
|
|
237
|
+
"""
|
|
238
|
+
Get the perturbation type of the `Kepler` model.
|
|
239
|
+
|
|
240
|
+
Returns:
|
|
241
|
+
PerturbationType: The perturbation type.
|
|
242
|
+
"""
|
|
243
|
+
def get_revolution_number_at_epoch(self) -> ostk.core.type.Integer:
|
|
244
|
+
"""
|
|
245
|
+
Get the revolution number at the epoch of the `Kepler` model.
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
int: The revolution number.
|
|
249
|
+
"""
|
|
250
|
+
def is_defined(self) -> bool:
|
|
251
|
+
"""
|
|
252
|
+
Check if the `Kepler` model is defined.
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
bool: True if the `Kepler` model is defined, False otherwise.
|
|
256
|
+
"""
|
|
257
|
+
class ModifiedEquinoctial:
|
|
258
|
+
"""
|
|
259
|
+
|
|
260
|
+
Modified Equinoctial Orbital Elements (ModifiedEquinoctial).
|
|
261
|
+
|
|
262
|
+
The Modified Equinoctial Orbital Elements (ModifiedEquinoctial) provide a non-singular representation of an orbit,
|
|
263
|
+
useful for a wide range of eccentricities and inclinations (except for i = 180 deg).
|
|
264
|
+
|
|
265
|
+
Elements:
|
|
266
|
+
p: semi-latus rectum (m)
|
|
267
|
+
f: x-component of eccentricity vector (e * cos(RAAN + AOP))
|
|
268
|
+
g: y-component of eccentricity vector (e * sin(RAAN + AOP))
|
|
269
|
+
h: x-component of node vector (tan(i/2) * cos(RAAN))
|
|
270
|
+
k: y-component of node vector (tan(i/2) * sin(RAAN))
|
|
271
|
+
L: true longitude (RAAN + AOP + True Anomaly) (rad)
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
"""
|
|
275
|
+
__hash__: typing.ClassVar[None] = None
|
|
276
|
+
@staticmethod
|
|
277
|
+
def cartesian(cartesian_state: tuple[ostk.physics.coordinate.Position, ostk.physics.coordinate.Velocity], gravitational_parameter: ostk.physics.unit.Derived) -> ModifiedEquinoctial:
|
|
278
|
+
"""
|
|
279
|
+
Create ModifiedEquinoctial from Cartesian state (position, velocity).
|
|
280
|
+
|
|
281
|
+
Args:
|
|
282
|
+
cartesian_state (tuple[Position, Velocity]): Cartesian state (Position, Velocity). Must be in an inertial frame.
|
|
283
|
+
gravitational_parameter (Derived): Gravitational parameter of the central body.
|
|
284
|
+
|
|
285
|
+
Returns:
|
|
286
|
+
ModifiedEquinoctial: ModifiedEquinoctial object.
|
|
287
|
+
"""
|
|
288
|
+
@staticmethod
|
|
289
|
+
def coe(coe: kepler.COE) -> ModifiedEquinoctial:
|
|
290
|
+
"""
|
|
291
|
+
Create Modified Equinoctial elements from Classical Orbital Elements (COE).
|
|
292
|
+
|
|
293
|
+
Args:
|
|
294
|
+
coe (COE): Classical Orbital Elements.
|
|
295
|
+
|
|
296
|
+
Returns:
|
|
297
|
+
ModifiedEquinoctial: Modified Equinoctial Elements.
|
|
298
|
+
"""
|
|
299
|
+
@staticmethod
|
|
300
|
+
def undefined() -> ModifiedEquinoctial:
|
|
301
|
+
"""
|
|
302
|
+
Create an undefined ModifiedEquinoctial object.
|
|
303
|
+
|
|
304
|
+
Returns:
|
|
305
|
+
ModifiedEquinoctial: Undefined ModifiedEquinoctial object.
|
|
306
|
+
"""
|
|
307
|
+
def __eq__(self, arg0: ModifiedEquinoctial) -> bool:
|
|
308
|
+
...
|
|
309
|
+
def __init__(self, semi_latus_rectum: ostk.physics.unit.Length, eccentricity_x: ostk.core.type.Real, eccentricity_y: ostk.core.type.Real, node_x: ostk.core.type.Real, node_y: ostk.core.type.Real, true_longitude: ostk.physics.unit.Angle) -> None:
|
|
310
|
+
"""
|
|
311
|
+
Constructor.
|
|
312
|
+
|
|
313
|
+
Args:
|
|
314
|
+
semi_latus_rectum (Length): Semi-latus rectum.
|
|
315
|
+
eccentricity_x (float): x-component of eccentricity vector.
|
|
316
|
+
eccentricity_y (float): y-component of eccentricity vector.
|
|
317
|
+
node_x (float): x-component of node vector.
|
|
318
|
+
node_y (float): y-component of node vector.
|
|
319
|
+
true_longitude (Angle): True longitude.
|
|
320
|
+
"""
|
|
321
|
+
def __ne__(self, arg0: ModifiedEquinoctial) -> bool:
|
|
322
|
+
...
|
|
323
|
+
def __repr__(self) -> str:
|
|
324
|
+
...
|
|
325
|
+
def __str__(self) -> str:
|
|
326
|
+
...
|
|
327
|
+
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]:
|
|
328
|
+
"""
|
|
329
|
+
Get Cartesian state (position, velocity) from ModifiedEquinoctial.
|
|
330
|
+
|
|
331
|
+
Args:
|
|
332
|
+
gravitational_parameter (Derived): Gravitational parameter of the central body.
|
|
333
|
+
frame (Frame): The reference frame for the output Cartesian state. Must be an inertial frame.
|
|
334
|
+
|
|
335
|
+
Returns:
|
|
336
|
+
tuple[Position, Velocity]: Position and Velocity.
|
|
337
|
+
"""
|
|
338
|
+
def get_eccentricity_x(self) -> ostk.core.type.Real:
|
|
339
|
+
"""
|
|
340
|
+
Get x-component of eccentricity vector (f).
|
|
341
|
+
|
|
342
|
+
Returns:
|
|
343
|
+
float: f component.
|
|
344
|
+
"""
|
|
345
|
+
def get_eccentricity_y(self) -> ostk.core.type.Real:
|
|
346
|
+
"""
|
|
347
|
+
Get y-component of eccentricity vector (g).
|
|
348
|
+
|
|
349
|
+
Returns:
|
|
350
|
+
float: g component.
|
|
351
|
+
"""
|
|
352
|
+
def get_node_x(self) -> ostk.core.type.Real:
|
|
353
|
+
"""
|
|
354
|
+
Get x-component of node vector (h).
|
|
355
|
+
|
|
356
|
+
Returns:
|
|
357
|
+
float: h component.
|
|
358
|
+
"""
|
|
359
|
+
def get_node_y(self) -> ostk.core.type.Real:
|
|
360
|
+
"""
|
|
361
|
+
Get y-component of node vector (k).
|
|
362
|
+
|
|
363
|
+
Returns:
|
|
364
|
+
float: k component.
|
|
365
|
+
"""
|
|
366
|
+
def get_semi_latus_rectum(self) -> ostk.physics.unit.Length:
|
|
367
|
+
"""
|
|
368
|
+
Get semi-latus rectum (p).
|
|
369
|
+
|
|
370
|
+
Returns:
|
|
371
|
+
Length: Semi-latus rectum.
|
|
372
|
+
"""
|
|
373
|
+
def get_si_vector(self) -> numpy.ndarray[numpy.float64[6, 1]]:
|
|
374
|
+
"""
|
|
375
|
+
Get ModifiedEquinoctial elements as a 6D vector in SI units.
|
|
376
|
+
[p (m), f, g, h, k, L (rad)]
|
|
377
|
+
|
|
378
|
+
Returns:
|
|
379
|
+
numpy.ndarray: 6D vector of elements in SI units.
|
|
380
|
+
"""
|
|
381
|
+
def get_true_longitude(self) -> ostk.physics.unit.Angle:
|
|
382
|
+
"""
|
|
383
|
+
Get true longitude (L).
|
|
384
|
+
|
|
385
|
+
Returns:
|
|
386
|
+
Angle: True longitude.
|
|
387
|
+
"""
|
|
388
|
+
def is_defined(self) -> bool:
|
|
389
|
+
"""
|
|
390
|
+
Check if ModifiedEquinoctial is defined.
|
|
391
|
+
|
|
392
|
+
Returns:
|
|
393
|
+
bool: True if ModifiedEquinoctial is defined.
|
|
394
|
+
"""
|
|
395
|
+
def to_coe(self, gravitational_parameter: ostk.physics.unit.Derived) -> kepler.COE:
|
|
396
|
+
"""
|
|
397
|
+
Convert Modified Equinoctial to Classical Orbital Elements (COE).
|
|
398
|
+
|
|
399
|
+
Args:
|
|
400
|
+
gravitational_parameter (Derived): Gravitational parameter of the central body.
|
|
401
|
+
|
|
402
|
+
Returns:
|
|
403
|
+
COE: Classical Orbital Elements.
|
|
404
|
+
"""
|
|
405
|
+
class Propagated(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
406
|
+
"""
|
|
407
|
+
|
|
408
|
+
A Propagated orbit model.
|
|
409
|
+
|
|
410
|
+
Provides the interface for orbit models.
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
"""
|
|
414
|
+
__hash__: typing.ClassVar[None] = None
|
|
415
|
+
def __eq__(self, arg0: Propagated) -> bool:
|
|
416
|
+
...
|
|
417
|
+
@typing.overload
|
|
418
|
+
def __init__(self, propagator: typing.Any, state: ostk.astrodynamics.trajectory.State, initial_revolution_number: ostk.core.type.Integer = 1) -> None:
|
|
419
|
+
"""
|
|
420
|
+
Constructor.
|
|
421
|
+
|
|
422
|
+
Args:
|
|
423
|
+
propagator (Propagator): The propagator.
|
|
424
|
+
state (State): The initial state.
|
|
425
|
+
initial_revolution_number (int, optional): The initial revolution number. Defaults to 1.
|
|
426
|
+
"""
|
|
427
|
+
@typing.overload
|
|
428
|
+
def __init__(self, propagator: typing.Any, state_array: list[ostk.astrodynamics.trajectory.State], initial_revolution_number: ostk.core.type.Integer = 1) -> None:
|
|
429
|
+
"""
|
|
430
|
+
Constructor.
|
|
431
|
+
|
|
432
|
+
Args:
|
|
433
|
+
propagator (Propagator): The propagator.
|
|
434
|
+
state_array (list[State]): The initial state array.
|
|
435
|
+
initial_revolution_number (int, optional): The initial revolution number. Defaults to 1.
|
|
436
|
+
"""
|
|
437
|
+
def __ne__(self, arg0: Propagated) -> bool:
|
|
438
|
+
...
|
|
439
|
+
def __repr__(self) -> str:
|
|
440
|
+
...
|
|
441
|
+
def __str__(self) -> str:
|
|
442
|
+
...
|
|
443
|
+
def access_cached_state_array(self) -> list[ostk.astrodynamics.trajectory.State]:
|
|
444
|
+
"""
|
|
445
|
+
Access the cached state array of the `Propagated` model.
|
|
446
|
+
|
|
447
|
+
Returns:
|
|
448
|
+
list[State]: The cached state array.
|
|
449
|
+
"""
|
|
450
|
+
def access_propagator(self) -> ...:
|
|
451
|
+
"""
|
|
452
|
+
Access the propagator of the `Propagated` model.
|
|
453
|
+
|
|
454
|
+
Returns:
|
|
455
|
+
Propagator: The propagator.
|
|
456
|
+
"""
|
|
457
|
+
def calculate_revolution_number_at(self, instant: ostk.physics.time.Instant) -> ostk.core.type.Integer:
|
|
458
|
+
"""
|
|
459
|
+
Calculate the revolution number of the `Propagated` model at a given instant.
|
|
460
|
+
|
|
461
|
+
Args:
|
|
462
|
+
instant (Instant): The instant.
|
|
463
|
+
|
|
464
|
+
Returns:
|
|
465
|
+
int: The revolution number.
|
|
466
|
+
"""
|
|
467
|
+
def calculate_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
|
|
468
|
+
"""
|
|
469
|
+
Calculate the state of the `Propagated` model at a given instant.
|
|
470
|
+
|
|
471
|
+
Args:
|
|
472
|
+
instant (Instant): The instant.
|
|
473
|
+
|
|
474
|
+
Returns:
|
|
475
|
+
State: The state.
|
|
476
|
+
"""
|
|
477
|
+
def calculate_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[ostk.astrodynamics.trajectory.State]:
|
|
478
|
+
"""
|
|
479
|
+
Calculate the states of the `Propagated` model at given instants.
|
|
480
|
+
|
|
481
|
+
Args:
|
|
482
|
+
instants (list[Instant]): The instants.
|
|
483
|
+
|
|
484
|
+
Returns:
|
|
485
|
+
list[State]: The states.
|
|
486
|
+
"""
|
|
487
|
+
def get_epoch(self) -> ostk.physics.time.Instant:
|
|
488
|
+
"""
|
|
489
|
+
Get the epoch of the `Propagated` model.
|
|
490
|
+
|
|
491
|
+
Returns:
|
|
492
|
+
Instant: The epoch.
|
|
493
|
+
"""
|
|
494
|
+
def get_revolution_number_at_epoch(self) -> ostk.core.type.Integer:
|
|
495
|
+
"""
|
|
496
|
+
Get the revolution number at the epoch of the `Propagated` model.
|
|
497
|
+
|
|
498
|
+
Returns:
|
|
499
|
+
int: The revolution number.
|
|
500
|
+
"""
|
|
501
|
+
def is_defined(self) -> bool:
|
|
502
|
+
"""
|
|
503
|
+
Check if the `Propagated` model is defined.
|
|
504
|
+
|
|
505
|
+
Returns:
|
|
506
|
+
bool: True if the `Propagated` model is defined, False otherwise.
|
|
507
|
+
"""
|
|
508
|
+
def set_cached_state_array(self, state_array: list[ostk.astrodynamics.trajectory.State]) -> None:
|
|
509
|
+
"""
|
|
510
|
+
Set the cached state array of the `Propagated` model.
|
|
511
|
+
|
|
512
|
+
Args:
|
|
513
|
+
state_array (list[State]): The state array.
|
|
514
|
+
"""
|
|
515
|
+
class SGP4(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
516
|
+
"""
|
|
517
|
+
|
|
518
|
+
A SGP4 model.
|
|
519
|
+
|
|
520
|
+
Provides the interface for orbit models.
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
"""
|
|
524
|
+
def __init__(self, tle: typing.Any) -> None:
|
|
525
|
+
"""
|
|
526
|
+
Constructor.
|
|
527
|
+
|
|
528
|
+
Args:
|
|
529
|
+
tle (TLE): The TLE.
|
|
530
|
+
"""
|
|
531
|
+
def calculate_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
|
|
532
|
+
"""
|
|
533
|
+
Calculate the state of the `SGP4` model at a given instant.
|
|
534
|
+
|
|
535
|
+
Args:
|
|
536
|
+
instant (Instant): The instant.
|
|
537
|
+
|
|
538
|
+
Returns:
|
|
539
|
+
State: The state.
|
|
540
|
+
"""
|
|
541
|
+
def get_epoch(self) -> ostk.physics.time.Instant:
|
|
542
|
+
"""
|
|
543
|
+
Get the epoch of the `SGP4` model.
|
|
544
|
+
|
|
545
|
+
Returns:
|
|
546
|
+
Instant: The epoch.
|
|
547
|
+
"""
|
|
548
|
+
def get_revolution_number_at_epoch(self) -> ostk.core.type.Integer:
|
|
549
|
+
"""
|
|
550
|
+
Get the revolution number at the epoch of the `SGP4` model.
|
|
551
|
+
|
|
552
|
+
Returns:
|
|
553
|
+
int: The revolution number.
|
|
554
|
+
"""
|
|
555
|
+
def get_tle(self) -> ...:
|
|
556
|
+
"""
|
|
557
|
+
Get the TLE of the `SGP4` model.
|
|
558
|
+
|
|
559
|
+
Returns:
|
|
560
|
+
TLE: The TLE.
|
|
561
|
+
"""
|
|
562
|
+
def is_defined(self) -> bool:
|
|
563
|
+
"""
|
|
564
|
+
Check if the `SGP4` model is defined.
|
|
565
|
+
|
|
566
|
+
Returns:
|
|
567
|
+
bool: True if the `SGP4` model is defined, False otherwise.
|
|
568
|
+
"""
|
|
569
|
+
class Tabulated(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
570
|
+
"""
|
|
571
|
+
|
|
572
|
+
Tabulated orbit model.
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
"""
|
|
576
|
+
__hash__: typing.ClassVar[None] = None
|
|
577
|
+
def __eq__(self, arg0: Tabulated) -> bool:
|
|
578
|
+
...
|
|
579
|
+
def __init__(self, states: list[ostk.astrodynamics.trajectory.State], initial_revolution_number: ostk.core.type.Integer, interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> None:
|
|
580
|
+
"""
|
|
581
|
+
Constructor.
|
|
582
|
+
|
|
583
|
+
Args:
|
|
584
|
+
states (list[State]): The states.
|
|
585
|
+
initial_revolution_number (int): The initial revolution number.
|
|
586
|
+
interpolation_type (Interpolator.Type, optional): The interpolation type.
|
|
587
|
+
"""
|
|
588
|
+
def __ne__(self, arg0: Tabulated) -> bool:
|
|
589
|
+
...
|
|
590
|
+
def __repr__(self) -> str:
|
|
591
|
+
...
|
|
592
|
+
def __str__(self) -> str:
|
|
593
|
+
...
|
|
594
|
+
def calculate_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
|
|
595
|
+
"""
|
|
596
|
+
Calculate the state of the `Tabulated` model at a given instant.
|
|
597
|
+
|
|
598
|
+
Args:
|
|
599
|
+
instant (Instant): The instant.
|
|
600
|
+
|
|
601
|
+
Returns:
|
|
602
|
+
State: The state.
|
|
603
|
+
"""
|
|
604
|
+
def calculate_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[ostk.astrodynamics.trajectory.State]:
|
|
605
|
+
"""
|
|
606
|
+
Calculate the states of the `Tabulated` model at given instants.
|
|
607
|
+
|
|
608
|
+
Args:
|
|
609
|
+
instants (list[Instant]): The instants.
|
|
610
|
+
|
|
611
|
+
Returns:
|
|
612
|
+
list[State]: The states.
|
|
613
|
+
"""
|
|
614
|
+
def get_epoch(self) -> ostk.physics.time.Instant:
|
|
615
|
+
"""
|
|
616
|
+
Get the epoch of the `Tabulated` model.
|
|
617
|
+
|
|
618
|
+
Returns:
|
|
619
|
+
Instant: The epoch.
|
|
620
|
+
"""
|
|
621
|
+
def get_interpolation_type(self) -> ostk.mathematics.curve_fitting.Interpolator.Type:
|
|
622
|
+
"""
|
|
623
|
+
Get the interpolation type of the `Tabulated` model.
|
|
624
|
+
|
|
625
|
+
Returns:
|
|
626
|
+
Interpolator.Type: The interpolation type.
|
|
627
|
+
"""
|
|
628
|
+
def get_interval(self) -> ostk.physics.time.Interval:
|
|
629
|
+
"""
|
|
630
|
+
Get the interval of the `Tabulated` model.
|
|
631
|
+
|
|
632
|
+
Returns:
|
|
633
|
+
Interval: The interval.
|
|
634
|
+
"""
|
|
635
|
+
def get_revolution_number_at_epoch(self) -> ostk.core.type.Integer:
|
|
636
|
+
"""
|
|
637
|
+
Get the revolution number at the epoch of the `Tabulated` model.
|
|
638
|
+
|
|
639
|
+
Returns:
|
|
640
|
+
int: The revolution number.
|
|
641
|
+
"""
|
|
642
|
+
def is_defined(self) -> bool:
|
|
643
|
+
"""
|
|
644
|
+
Check if the `Tabulated` model is defined.
|
|
645
|
+
|
|
646
|
+
Returns:
|
|
647
|
+
bool: True if the `Tabulated` model is defined, False otherwise.
|
|
648
|
+
"""
|