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.
Files changed (151) hide show
  1. open_space_toolkit_astrodynamics-17.2.0.dist-info/METADATA +30 -0
  2. open_space_toolkit_astrodynamics-17.2.0.dist-info/RECORD +151 -0
  3. open_space_toolkit_astrodynamics-17.2.0.dist-info/WHEEL +5 -0
  4. open_space_toolkit_astrodynamics-17.2.0.dist-info/top_level.txt +1 -0
  5. open_space_toolkit_astrodynamics-17.2.0.dist-info/zip-safe +1 -0
  6. ostk/__init__.py +1 -0
  7. ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-312-x86_64-linux-gnu.so +0 -0
  8. ostk/astrodynamics/__init__.py +11 -0
  9. ostk/astrodynamics/__init__.pyi +720 -0
  10. ostk/astrodynamics/access.pyi +577 -0
  11. ostk/astrodynamics/conjunction/__init__.pyi +121 -0
  12. ostk/astrodynamics/conjunction/close_approach.pyi +89 -0
  13. ostk/astrodynamics/conjunction/message/__init__.pyi +3 -0
  14. ostk/astrodynamics/conjunction/message/ccsds.pyi +705 -0
  15. ostk/astrodynamics/converters.py +130 -0
  16. ostk/astrodynamics/converters.pyi +58 -0
  17. ostk/astrodynamics/data/__init__.pyi +3 -0
  18. ostk/astrodynamics/data/provider.pyi +22 -0
  19. ostk/astrodynamics/dataframe.py +597 -0
  20. ostk/astrodynamics/display.py +281 -0
  21. ostk/astrodynamics/dynamics.pyi +311 -0
  22. ostk/astrodynamics/eclipse.pyi +70 -0
  23. ostk/astrodynamics/estimator.pyi +268 -0
  24. ostk/astrodynamics/event_condition.pyi +910 -0
  25. ostk/astrodynamics/flight/__init__.pyi +626 -0
  26. ostk/astrodynamics/flight/profile/__init__.pyi +99 -0
  27. ostk/astrodynamics/flight/profile/model.pyi +179 -0
  28. ostk/astrodynamics/flight/system.pyi +268 -0
  29. ostk/astrodynamics/guidance_law.pyi +416 -0
  30. ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.17 +0 -0
  31. ostk/astrodynamics/pytrajectory/__init__.py +1 -0
  32. ostk/astrodynamics/pytrajectory/__init__.pyi +3 -0
  33. ostk/astrodynamics/pytrajectory/pystate.py +263 -0
  34. ostk/astrodynamics/pytrajectory/pystate.pyi +66 -0
  35. ostk/astrodynamics/solver.pyi +432 -0
  36. ostk/astrodynamics/test/__init__.py +1 -0
  37. ostk/astrodynamics/test/access/__init__.py +1 -0
  38. ostk/astrodynamics/test/access/test_generator.py +319 -0
  39. ostk/astrodynamics/test/access/test_visibility_criterion.py +201 -0
  40. ostk/astrodynamics/test/conftest.py +119 -0
  41. ostk/astrodynamics/test/conjunction/close_approach/__init__.py +0 -0
  42. ostk/astrodynamics/test/conjunction/close_approach/test_generator.py +228 -0
  43. ostk/astrodynamics/test/conjunction/message/ccsds/__init__.py +1 -0
  44. ostk/astrodynamics/test/conjunction/message/ccsds/conftest.py +325 -0
  45. ostk/astrodynamics/test/conjunction/message/ccsds/data/cdm.json +303 -0
  46. ostk/astrodynamics/test/conjunction/message/ccsds/test_cdm.py +416 -0
  47. ostk/astrodynamics/test/conjunction/test_close_approach.py +244 -0
  48. ostk/astrodynamics/test/data/provider/test_off_nadir.py +58 -0
  49. ostk/astrodynamics/test/dynamics/__init__.py +1 -0
  50. ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity.csv +565 -0
  51. ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity_Truth.csv +100 -0
  52. ostk/astrodynamics/test/dynamics/test_atmospheric_drag.py +128 -0
  53. ostk/astrodynamics/test/dynamics/test_central_body_gravity.py +58 -0
  54. ostk/astrodynamics/test/dynamics/test_dynamics.py +50 -0
  55. ostk/astrodynamics/test/dynamics/test_position_derivative.py +51 -0
  56. ostk/astrodynamics/test/dynamics/test_tabulated.py +138 -0
  57. ostk/astrodynamics/test/dynamics/test_third_body_gravity.py +67 -0
  58. ostk/astrodynamics/test/dynamics/test_thruster.py +157 -0
  59. ostk/astrodynamics/test/eclipse/__init__.py +1 -0
  60. ostk/astrodynamics/test/eclipse/test_generator.py +138 -0
  61. ostk/astrodynamics/test/estimator/test_orbit_determination_solver.py +261 -0
  62. ostk/astrodynamics/test/estimator/test_tle_solver.py +216 -0
  63. ostk/astrodynamics/test/event_condition/test_angular_condition.py +113 -0
  64. ostk/astrodynamics/test/event_condition/test_boolean_condition.py +55 -0
  65. ostk/astrodynamics/test/event_condition/test_brouwer_lyddane_mean_long_condition.py +135 -0
  66. ostk/astrodynamics/test/event_condition/test_coe_condition.py +135 -0
  67. ostk/astrodynamics/test/event_condition/test_instant_condition.py +48 -0
  68. ostk/astrodynamics/test/event_condition/test_logical_condition.py +120 -0
  69. ostk/astrodynamics/test/event_condition/test_real_condition.py +50 -0
  70. ostk/astrodynamics/test/flight/__init__.py +1 -0
  71. ostk/astrodynamics/test/flight/profile/model/test_tabulated_profile.py +115 -0
  72. ostk/astrodynamics/test/flight/system/__init__.py +1 -0
  73. ostk/astrodynamics/test/flight/system/test_propulsion_system.py +64 -0
  74. ostk/astrodynamics/test/flight/system/test_satellite_system.py +83 -0
  75. ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py +71 -0
  76. ostk/astrodynamics/test/flight/test_maneuver.py +231 -0
  77. ostk/astrodynamics/test/flight/test_profile.py +293 -0
  78. ostk/astrodynamics/test/flight/test_system.py +45 -0
  79. ostk/astrodynamics/test/guidance_law/test_constant_thrust.py +177 -0
  80. ostk/astrodynamics/test/guidance_law/test_guidance_law.py +60 -0
  81. ostk/astrodynamics/test/guidance_law/test_heterogeneous_guidance_law.py +164 -0
  82. ostk/astrodynamics/test/guidance_law/test_qlaw.py +209 -0
  83. ostk/astrodynamics/test/solvers/__init__.py +1 -0
  84. ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +196 -0
  85. ostk/astrodynamics/test/solvers/test_least_squares_solver.py +334 -0
  86. ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +161 -0
  87. ostk/astrodynamics/test/test_access.py +128 -0
  88. ostk/astrodynamics/test/test_converters.py +290 -0
  89. ostk/astrodynamics/test/test_dataframe.py +1355 -0
  90. ostk/astrodynamics/test/test_display.py +184 -0
  91. ostk/astrodynamics/test/test_event_condition.py +80 -0
  92. ostk/astrodynamics/test/test_import.py +26 -0
  93. ostk/astrodynamics/test/test_root_solver.py +70 -0
  94. ostk/astrodynamics/test/test_trajectory.py +126 -0
  95. ostk/astrodynamics/test/test_utilities.py +338 -0
  96. ostk/astrodynamics/test/test_viewer.py +318 -0
  97. ostk/astrodynamics/test/trajectory/__init__.py +1 -0
  98. ostk/astrodynamics/test/trajectory/model/test_nadir_trajectory.py +87 -0
  99. ostk/astrodynamics/test/trajectory/model/test_tabulated_trajectory.py +303 -0
  100. ostk/astrodynamics/test/trajectory/model/test_target_scan_trajectory.py +126 -0
  101. ostk/astrodynamics/test/trajectory/orbit/__init__.py +1 -0
  102. ostk/astrodynamics/test/trajectory/orbit/message/__init__.py +1 -0
  103. ostk/astrodynamics/test/trajectory/orbit/message/spacex/__init__.py +1 -0
  104. ostk/astrodynamics/test/trajectory/orbit/message/spacex/conftest.py +18 -0
  105. ostk/astrodynamics/test/trajectory/orbit/message/spacex/data/opm_1.yaml +44 -0
  106. ostk/astrodynamics/test/trajectory/orbit/message/spacex/test_opm.py +108 -0
  107. ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +1 -0
  108. ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +1 -0
  109. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py +65 -0
  110. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py +102 -0
  111. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py +102 -0
  112. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +305 -0
  113. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +1 -0
  114. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +337 -0
  115. ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +130 -0
  116. ostk/astrodynamics/test/trajectory/orbit/models/test_modified_equinoctial.py +142 -0
  117. ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +234 -0
  118. ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +1 -0
  119. ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +380 -0
  120. ostk/astrodynamics/test/trajectory/orbit/test_model.py +1 -0
  121. ostk/astrodynamics/test/trajectory/orbit/test_pass.py +75 -0
  122. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_angular_velocity.py +30 -0
  123. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py +18 -0
  124. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py +136 -0
  125. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py +107 -0
  126. ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py +115 -0
  127. ostk/astrodynamics/test/trajectory/state/test_coordinate_broker.py +84 -0
  128. ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +58 -0
  129. ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +316 -0
  130. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py +81 -0
  131. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +119 -0
  132. ostk/astrodynamics/test/trajectory/test_model.py +1 -0
  133. ostk/astrodynamics/test/trajectory/test_orbit.py +212 -0
  134. ostk/astrodynamics/test/trajectory/test_propagator.py +452 -0
  135. ostk/astrodynamics/test/trajectory/test_segment.py +694 -0
  136. ostk/astrodynamics/test/trajectory/test_sequence.py +550 -0
  137. ostk/astrodynamics/test/trajectory/test_state.py +629 -0
  138. ostk/astrodynamics/test/trajectory/test_state_builder.py +172 -0
  139. ostk/astrodynamics/trajectory/__init__.pyi +1982 -0
  140. ostk/astrodynamics/trajectory/model.pyi +259 -0
  141. ostk/astrodynamics/trajectory/orbit/__init__.pyi +349 -0
  142. ostk/astrodynamics/trajectory/orbit/message/__init__.pyi +3 -0
  143. ostk/astrodynamics/trajectory/orbit/message/spacex.pyi +264 -0
  144. ostk/astrodynamics/trajectory/orbit/model/__init__.pyi +648 -0
  145. ostk/astrodynamics/trajectory/orbit/model/brouwerLyddaneMean.pyi +121 -0
  146. ostk/astrodynamics/trajectory/orbit/model/kepler.pyi +709 -0
  147. ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi +330 -0
  148. ostk/astrodynamics/trajectory/state/__init__.pyi +402 -0
  149. ostk/astrodynamics/trajectory/state/coordinate_subset.pyi +208 -0
  150. ostk/astrodynamics/utilities.py +396 -0
  151. ostk/astrodynamics/viewer.py +851 -0
@@ -0,0 +1,626 @@
1
+ from __future__ import annotations
2
+ import numpy
3
+ import ostk.astrodynamics
4
+ import ostk.astrodynamics.trajectory
5
+ import ostk.core.type
6
+ import ostk.mathematics.curve_fitting
7
+ import ostk.mathematics.geometry.d3.object
8
+ import ostk.mathematics.geometry.d3.transformation.rotation
9
+ import ostk.physics.coordinate
10
+ import ostk.physics.time
11
+ import ostk.physics.unit
12
+ import typing
13
+ from . import profile
14
+ from . import system
15
+ __all__ = ['Maneuver', 'Profile', 'System', 'profile', 'system']
16
+ class Maneuver:
17
+ """
18
+
19
+ Spacecraft Maneuver class.
20
+ Store an acceleration and mass flow rate profile of a spacecraft maneuver.
21
+
22
+ """
23
+ __hash__: typing.ClassVar[None] = None
24
+ @staticmethod
25
+ def constant_mass_flow_rate_profile(states: list[ostk.astrodynamics.trajectory.State], mass_flow_rate: ostk.core.type.Real) -> Maneuver:
26
+ """
27
+ Create a maneuver from a constant mass flow rate profile.
28
+
29
+ Args:
30
+ instants (list[Instant]): An array of instants, must be sorted.
31
+ acceleration_profile (list[numpy.ndarray]): An acceleration profile of the maneuver, one numpy.ndarray per instant.
32
+ frame (Frame): A frame in which the acceleration profile is defined.
33
+ mass_flow_rate (float): The constant mass flow rate (negative number expected).
34
+
35
+ Returns:
36
+ Maneuver: The created maneuver.
37
+ """
38
+ def __eq__(self, arg0: Maneuver) -> bool:
39
+ ...
40
+ def __init__(self, states: list[ostk.astrodynamics.trajectory.State]) -> None:
41
+ """
42
+ Constructor.
43
+
44
+ Args:
45
+ states (list[State]): An list of states, must be sorted, must include the CartesianPosition, CartesianVelocity, CartesianAcceleration and MassFlowRate subsets.
46
+ """
47
+ def __ne__(self, arg0: Maneuver) -> bool:
48
+ ...
49
+ def __repr__(self) -> str:
50
+ ...
51
+ def __str__(self) -> str:
52
+ ...
53
+ def calculate_average_specific_impulse(self, initial_spacecraft_mass: ostk.physics.unit.Mass) -> ostk.core.type.Real:
54
+ """
55
+ Calculate the average specific impulse of the maneuver.
56
+
57
+ Args:
58
+ initial_spacecraft_mass (Mass): The initial mass of the spacecraft.
59
+
60
+ Returns:
61
+ float: The average specific impulse (s).
62
+ """
63
+ def calculate_average_thrust(self, initial_spacecraft_mass: ostk.physics.unit.Mass) -> ostk.core.type.Real:
64
+ """
65
+ Calculate the average thrust of the maneuver.
66
+
67
+ Args:
68
+ initial_spacecraft_mass (Mass): The initial mass of the spacecraft.
69
+
70
+ Returns:
71
+ float: The average thrust (N).
72
+ """
73
+ def calculate_delta_mass(self) -> ostk.physics.unit.Mass:
74
+ """
75
+ Calculate the delta mass of the maneuver.
76
+
77
+ Returns:
78
+ Mass: The delta mass (always positive) (kg).
79
+ """
80
+ def calculate_delta_v(self) -> ostk.core.type.Real:
81
+ """
82
+ Calculate the delta-v of the maneuver.
83
+
84
+ Returns:
85
+ float: The delta-v value (m/s).
86
+ """
87
+ def calculate_mean_thrust_direction_and_maximum_angular_offset(self, local_orbital_frame_factory: ostk.astrodynamics.trajectory.LocalOrbitalFrameFactory) -> tuple[ostk.astrodynamics.trajectory.LocalOrbitalFrameDirection, ostk.physics.unit.Angle]:
88
+ """
89
+ Calculate the mean thrust direction in the Local Orbital Frame and its maximum angular offset w.r.t. the maneuver's thrust acceleration directions.
90
+
91
+ Args:
92
+ local_orbital_frame_factory (LocalOrbitalFrameFactory): The local orbital frame factory.
93
+
94
+ Returns:
95
+ Tuple[LocalOrbitalFrameDirection, Angle]: The mean thrust direction and its maximum angular offset.
96
+ """
97
+ def get_interval(self) -> ostk.physics.time.Interval:
98
+ """
99
+ Get the interval of the maneuver.
100
+
101
+ Returns:
102
+ Interval: The interval.
103
+ """
104
+ def get_states(self) -> list[ostk.astrodynamics.trajectory.State]:
105
+ """
106
+ Get the states.
107
+
108
+ Returns:
109
+ list[State]: The states.
110
+ """
111
+ def is_defined(self) -> bool:
112
+ """
113
+ Check if the maneuver is defined.
114
+
115
+ Returns:
116
+ bool: True if the maneuver is defined, False otherwise. (Always returns true).
117
+ """
118
+ def to_constant_local_orbital_frame_direction_maneuver(self, local_orbital_frame_factory: ostk.astrodynamics.trajectory.LocalOrbitalFrameFactory, maximum_allowed_angular_offset: ostk.physics.unit.Angle = ...) -> Maneuver:
119
+ """
120
+ Create a maneuver with a constant thrust acceleration direction in the Local Orbital Frame.
121
+
122
+ The new Maneuver contains the same states as the original Maneuver, but the thrust acceleration direction is
123
+ constant in the Local Orbital Frame. Said direction is the mean direction of the thrust acceleration directions
124
+ in the Local Orbital Frame of the original Maneuver. The thrust acceleration magnitude profile is the same as the original.
125
+
126
+ If defined, a runtime error will be thrown if the maximum allowed angular offset between the original thrust acceleration direction
127
+ and the mean thrust direction is violated.
128
+
129
+ Args:
130
+ local_orbital_frame_factory (LocalOrbitalFrameFactory): The local orbital frame factory.
131
+ maximum_allowed_angular_offset (Angle, optional): The maximum allowed angular offset to consider (if any). Defaults to Undefined.
132
+
133
+ Returns:
134
+ Maneuver: The constant local orbital frame direction maneuver.
135
+ """
136
+ def to_tabulated_dynamics(self, frame: ostk.physics.coordinate.Frame = ..., interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> ...:
137
+ """
138
+ Convert the maneuver to tabulated dynamics.
139
+
140
+ Args:
141
+ frame (Frame, optional): The frame in which the acceleration profile is defined. Defaults to the default acceleration frame.
142
+ interpolation_type (Interpolator.Type, optional): The interpolation type to use. Defaults to the default interpolation type.
143
+
144
+ Returns:
145
+ Tabulated: The tabulated dynamics.
146
+ """
147
+ class Profile:
148
+ """
149
+
150
+ Spacecraft Flight Profile.
151
+
152
+
153
+ """
154
+ class Axis:
155
+ """
156
+
157
+ The axis of the profile.
158
+
159
+
160
+ Members:
161
+
162
+ X : X axis
163
+
164
+ Y : Y axis
165
+
166
+ Z : Z axis
167
+ """
168
+ X: typing.ClassVar[Profile.Axis] # value = <Axis.X: 0>
169
+ Y: typing.ClassVar[Profile.Axis] # value = <Axis.Y: 1>
170
+ Z: typing.ClassVar[Profile.Axis] # value = <Axis.Z: 2>
171
+ __members__: typing.ClassVar[dict[str, Profile.Axis]] # value = {'X': <Axis.X: 0>, 'Y': <Axis.Y: 1>, 'Z': <Axis.Z: 2>}
172
+ def __eq__(self, other: typing.Any) -> bool:
173
+ ...
174
+ def __getstate__(self) -> int:
175
+ ...
176
+ def __hash__(self) -> int:
177
+ ...
178
+ def __index__(self) -> int:
179
+ ...
180
+ def __init__(self, value: int) -> None:
181
+ ...
182
+ def __int__(self) -> int:
183
+ ...
184
+ def __ne__(self, other: typing.Any) -> bool:
185
+ ...
186
+ def __repr__(self) -> str:
187
+ ...
188
+ def __setstate__(self, state: int) -> None:
189
+ ...
190
+ def __str__(self) -> str:
191
+ ...
192
+ @property
193
+ def name(self) -> str:
194
+ ...
195
+ @property
196
+ def value(self) -> int:
197
+ ...
198
+ class CustomTarget(Profile.Target):
199
+ """
200
+
201
+ The custom target.
202
+
203
+
204
+ """
205
+ @typing.overload
206
+ def __init__(self, orientation_generator: typing.Callable[[ostk.astrodynamics.trajectory.State], numpy.ndarray[numpy.float64[3, 1]]], direction: numpy.ndarray[numpy.float64[3, 1]]) -> None:
207
+ """
208
+ Constructor.
209
+
210
+ Args:
211
+ orientation_generator (Callable[np.ndarray, State]]): The orientation generator, accepts a state and returns a size 3 array of directions.
212
+ direction (Vector3d): The direction.
213
+ """
214
+ @typing.overload
215
+ def __init__(self, orientation_generator: typing.Callable[[ostk.astrodynamics.trajectory.State], numpy.ndarray[numpy.float64[3, 1]]], axis: Profile.Axis, anti_direction: bool = False) -> None:
216
+ """
217
+ Constructor from an axis.
218
+
219
+ Args:
220
+ orientation_generator (Callable[np.ndarray, State]]): The orientation generator, accepts a state and returns a size 3 array of directions.
221
+ axis (Axis): The axis to convert to a direction vector.
222
+ anti_direction (bool): If true, the direction is flipped. Defaults to False.
223
+ """
224
+ @property
225
+ def orientation_generator(self) -> typing.Callable[[ostk.astrodynamics.trajectory.State], numpy.ndarray[numpy.float64[3, 1]]]:
226
+ """
227
+ The orientation generator of the target.
228
+ """
229
+ class OrientationProfileTarget(Profile.Target):
230
+ """
231
+
232
+ The alignment profile target.
233
+
234
+
235
+ """
236
+ @typing.overload
237
+ def __init__(self, orientation_profile: list[tuple[ostk.physics.time.Instant, numpy.ndarray[numpy.float64[3, 1]]]], direction: numpy.ndarray[numpy.float64[3, 1]], interpolator_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> None:
238
+ """
239
+ Constructor.
240
+
241
+ Args:
242
+ orientation_profile (list[Tuple[Instant, Vector3d]]): The orientation profile.
243
+ direction (Vector3d): The direction.
244
+ interpolator_type (Interpolator.Type, optional): The type of interpolator to use. Defaults to Barycentric Rational.
245
+ """
246
+ @typing.overload
247
+ def __init__(self, orientation_profile: list[tuple[ostk.physics.time.Instant, numpy.ndarray[numpy.float64[3, 1]]]], axis: Profile.Axis, anti_direction: bool = False, interpolator_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> None:
248
+ """
249
+ Constructor from an axis.
250
+
251
+ Args:
252
+ orientation_profile (list[Tuple[Instant, Vector3d]]): The orientation profile.
253
+ axis (Axis): The axis to convert to a direction vector.
254
+ anti_direction (bool): If true, the direction is flipped. Defaults to False.
255
+ interpolator_type (Interpolator.Type, optional): The type of interpolator to use. Defaults to Barycentric Rational.
256
+ """
257
+ @property
258
+ def orientation_profile(self) -> list[tuple[ostk.physics.time.Instant, numpy.ndarray[numpy.float64[3, 1]]]]:
259
+ """
260
+ The orientation profile of the target.
261
+ """
262
+ class Target:
263
+ """
264
+
265
+ The target of the profile.
266
+
267
+
268
+ """
269
+ @typing.overload
270
+ def __init__(self, type: Profile.TargetType, direction: numpy.ndarray[numpy.float64[3, 1]]) -> None:
271
+ """
272
+ Constructor.
273
+
274
+ Args:
275
+ type (Profile.TargetType): The target type.
276
+ direction (Vector3d): The direction.
277
+ """
278
+ @typing.overload
279
+ def __init__(self, type: Profile.TargetType, axis: Profile.Axis, anti_direction: bool = False) -> None:
280
+ """
281
+ Constructor.
282
+
283
+ Args:
284
+ type (Profile.TargetType): The target type.
285
+ axis (Profile.Axis): The axis.
286
+ anti_direction (bool): True if the direction is flipped, False otherwise. Defaults to False.
287
+ """
288
+ @property
289
+ def direction(self) -> numpy.ndarray[numpy.float64[3, 1]]:
290
+ """
291
+ The direction of the target.
292
+ """
293
+ @property
294
+ def type(self) -> Profile.TargetType:
295
+ """
296
+ The type of the target.
297
+ """
298
+ class TargetType:
299
+ """
300
+
301
+ The target type of the profile.
302
+
303
+
304
+ Members:
305
+
306
+ GeocentricNadir : Geocentric nadir
307
+
308
+ GeodeticNadir : Geodetic nadir
309
+
310
+ TargetPosition : Target position
311
+
312
+ TargetVelocity : Target velocity
313
+
314
+ TargetSlidingGroundVelocity : Target sliding ground velocity
315
+
316
+ Sun : Sun
317
+
318
+ Moon : Moon
319
+
320
+ VelocityECI : Velocity in ECI
321
+
322
+ OrbitalMomentum : Orbital momentum
323
+
324
+ OrientationProfile : Orientation profile
325
+
326
+ Custom : Custom
327
+ """
328
+ Custom: typing.ClassVar[Profile.TargetType] # value = <TargetType.Custom: 10>
329
+ GeocentricNadir: typing.ClassVar[Profile.TargetType] # value = <TargetType.GeocentricNadir: 0>
330
+ GeodeticNadir: typing.ClassVar[Profile.TargetType] # value = <TargetType.GeodeticNadir: 1>
331
+ Moon: typing.ClassVar[Profile.TargetType] # value = <TargetType.Moon: 6>
332
+ OrbitalMomentum: typing.ClassVar[Profile.TargetType] # value = <TargetType.OrbitalMomentum: 8>
333
+ OrientationProfile: typing.ClassVar[Profile.TargetType] # value = <TargetType.OrientationProfile: 9>
334
+ Sun: typing.ClassVar[Profile.TargetType] # value = <TargetType.Sun: 5>
335
+ TargetPosition: typing.ClassVar[Profile.TargetType] # value = <TargetType.TargetPosition: 2>
336
+ TargetSlidingGroundVelocity: typing.ClassVar[Profile.TargetType] # value = <TargetType.TargetSlidingGroundVelocity: 4>
337
+ TargetVelocity: typing.ClassVar[Profile.TargetType] # value = <TargetType.TargetVelocity: 3>
338
+ VelocityECI: typing.ClassVar[Profile.TargetType] # value = <TargetType.VelocityECI: 7>
339
+ __members__: typing.ClassVar[dict[str, Profile.TargetType]] # value = {'GeocentricNadir': <TargetType.GeocentricNadir: 0>, 'GeodeticNadir': <TargetType.GeodeticNadir: 1>, 'TargetPosition': <TargetType.TargetPosition: 2>, 'TargetVelocity': <TargetType.TargetVelocity: 3>, 'TargetSlidingGroundVelocity': <TargetType.TargetSlidingGroundVelocity: 4>, 'Sun': <TargetType.Sun: 5>, 'Moon': <TargetType.Moon: 6>, 'VelocityECI': <TargetType.VelocityECI: 7>, 'OrbitalMomentum': <TargetType.OrbitalMomentum: 8>, 'OrientationProfile': <TargetType.OrientationProfile: 9>, 'Custom': <TargetType.Custom: 10>}
340
+ def __eq__(self, other: typing.Any) -> bool:
341
+ ...
342
+ def __getstate__(self) -> int:
343
+ ...
344
+ def __hash__(self) -> int:
345
+ ...
346
+ def __index__(self) -> int:
347
+ ...
348
+ def __init__(self, value: int) -> None:
349
+ ...
350
+ def __int__(self) -> int:
351
+ ...
352
+ def __ne__(self, other: typing.Any) -> bool:
353
+ ...
354
+ def __repr__(self) -> str:
355
+ ...
356
+ def __setstate__(self, state: int) -> None:
357
+ ...
358
+ def __str__(self) -> str:
359
+ ...
360
+ @property
361
+ def name(self) -> str:
362
+ ...
363
+ @property
364
+ def value(self) -> int:
365
+ ...
366
+ class TrajectoryTarget(Profile.Target):
367
+ """
368
+
369
+ The trajectory target.
370
+
371
+
372
+ """
373
+ @staticmethod
374
+ @typing.overload
375
+ def target_position(trajectory: ostk.astrodynamics.Trajectory, direction: numpy.ndarray[numpy.float64[3, 1]]) -> Profile.TrajectoryTarget:
376
+ """
377
+ Create a target, which produces a vector pointing from the observer to the target position.
378
+ """
379
+ @staticmethod
380
+ @typing.overload
381
+ def target_position(trajectory: ostk.astrodynamics.Trajectory, axis: Profile.Axis, anti_direction: bool = False) -> Profile.TrajectoryTarget:
382
+ """
383
+ Create a target, which produces a vector pointing from the observer to the target position.
384
+
385
+ Args:
386
+ trajectory (Trajectory): The trajectory.
387
+ axis (Axis): The axis to convert to a direction vector.
388
+ anti_direction (bool): If true, the direction is flipped. Defaults to False.
389
+ """
390
+ @staticmethod
391
+ @typing.overload
392
+ def target_sliding_ground_velocity(trajectory: ostk.astrodynamics.Trajectory, direction: numpy.ndarray[numpy.float64[3, 1]]) -> Profile.TrajectoryTarget:
393
+ """
394
+ Create a target, which produces a vector pointing along the ground velocity vector (aka the scan direction of the point sliding across the ground).
395
+ This will compensate for the rotation of the referenced celestial body.
396
+ """
397
+ @staticmethod
398
+ @typing.overload
399
+ def target_sliding_ground_velocity(trajectory: ostk.astrodynamics.Trajectory, axis: Profile.Axis, anti_direction: bool = False) -> Profile.TrajectoryTarget:
400
+ """
401
+ Create a target, which produces a vector pointing along the ground velocity vector (aka the scan direction of the point sliding across the ground).
402
+ This will compensate for the rotation of the referenced celestial body.
403
+
404
+ Args:
405
+ trajectory (Trajectory): The trajectory.
406
+ axis (Axis): The axis to convert to a direction vector.
407
+ anti_direction (bool): If true, the direction is flipped. Defaults to False.
408
+ """
409
+ @staticmethod
410
+ @typing.overload
411
+ def target_velocity(trajectory: ostk.astrodynamics.Trajectory, direction: numpy.ndarray[numpy.float64[3, 1]]) -> Profile.TrajectoryTarget:
412
+ """
413
+ Create a target, which produces a vector pointing along the scan direction.
414
+ """
415
+ @staticmethod
416
+ @typing.overload
417
+ def target_velocity(trajectory: ostk.astrodynamics.Trajectory, axis: Profile.Axis, anti_direction: bool = False) -> Profile.TrajectoryTarget:
418
+ """
419
+ Create a target, which produces a vector pointing along the scan direction.
420
+
421
+ Args:
422
+ trajectory (Trajectory): The trajectory.
423
+ axis (Axis): The axis to convert to a direction vector.
424
+ anti_direction (bool): If true, the direction is flipped. Defaults to False.
425
+ """
426
+ @property
427
+ def trajectory(self) -> ostk.astrodynamics.Trajectory:
428
+ """
429
+ The trajectory of the target. Used to compute the target position or velocity.
430
+ """
431
+ @staticmethod
432
+ def align_and_constrain(alignment_target: Profile.Target, clocking_target: Profile.Target, angular_offset: ostk.physics.unit.Angle = ...) -> typing.Callable[[ostk.astrodynamics.trajectory.State], ostk.mathematics.geometry.d3.transformation.rotation.Quaternion]:
433
+ """
434
+ Generate a function that provides a quaternion that aligns to the `alignment_target` and constrains to the `clocking_target` for a given state.
435
+
436
+ Args:
437
+ alignment_target (Profile.Target | Profile.TrajectoryTarget | Profile.OrientationProfileTarget | Profile.CustomTarget): The alignment target.
438
+ clocking_target (Profile.Target | Profile.TrajectoryTarget | Profile.OrientationProfileTarget | Profile.CustomTarget): The clocking target.
439
+ angular_offset (Angle): The angular offset. Defaults to `Angle.Zero()`.
440
+
441
+ Returns:
442
+ callable[Quaternion, State]: The custom orientation.
443
+ """
444
+ @staticmethod
445
+ @typing.overload
446
+ def custom_pointing(orbit: ostk.astrodynamics.trajectory.Orbit, orientation_generator: typing.Callable[[ostk.astrodynamics.trajectory.State], ostk.mathematics.geometry.d3.transformation.rotation.Quaternion]) -> Profile:
447
+ """
448
+ Create a custom pointing profile.
449
+
450
+ Args:
451
+ orbit (Orbit): The orbit.
452
+ orientation_generator (callable[Quaternion, State]): The orientation generator. Typically used in conjunction with `align_and_constrain`.
453
+
454
+ Returns:
455
+ Profile: The custom pointing profile.
456
+ """
457
+ @staticmethod
458
+ @typing.overload
459
+ def custom_pointing(orbit: ostk.astrodynamics.trajectory.Orbit, alignment_target: Profile.Target, clocking_target: Profile.Target, angular_offset: ostk.physics.unit.Angle = ...) -> Profile:
460
+ """
461
+ Create a custom pointing profile.
462
+
463
+ Args:
464
+ orbit (Orbit): The orbit.
465
+ alignment_target (Profile.Target): The alignment target.
466
+ clocking_target (Profile.Target): The clocking target.
467
+ angular_offset (Angle): The angular offset. Defaults to `Angle.Zero()`.
468
+
469
+ Returns:
470
+ Profile: The custom pointing profile.
471
+ """
472
+ @staticmethod
473
+ def inertial_pointing(trajectory: ostk.astrodynamics.Trajectory, quaternion: ostk.mathematics.geometry.d3.transformation.rotation.Quaternion) -> Profile:
474
+ """
475
+ Create an inertial pointing profile.
476
+
477
+ Args:
478
+ trajectory (Trajectory): The trajectory.
479
+ quaternion (Quaternion): The quaternion.
480
+
481
+ Returns:
482
+ Profile: The inertial pointing profile.
483
+ """
484
+ @staticmethod
485
+ def local_orbital_frame_pointing(orbit: ostk.astrodynamics.trajectory.Orbit, orbital_frame_type: ostk.astrodynamics.trajectory.Orbit.FrameType) -> Profile:
486
+ """
487
+ Create a profile aligned with the provided local orbital frame type.
488
+
489
+ Args:
490
+ orbit (Orbit): The orbit.
491
+ orbital_frame_type (OrbitalFrameType): The type of the orbital frame.
492
+
493
+ Returns:
494
+ Profile: The profile aligned with the local orbital frame.
495
+ """
496
+ @staticmethod
497
+ def undefined() -> Profile:
498
+ """
499
+ Create an undefined profile.
500
+
501
+ Returns:
502
+ Profile: The undefined profile.
503
+ """
504
+ def __init__(self, model: typing.Any) -> None:
505
+ """
506
+ Constructor.
507
+
508
+ Args:
509
+ model (Model): The profile model.
510
+ """
511
+ def __repr__(self) -> str:
512
+ ...
513
+ def __str__(self) -> str:
514
+ ...
515
+ def access_model(self) -> ...:
516
+ """
517
+ Access the profile model.
518
+
519
+ Returns:
520
+ Model: The profile model.
521
+ """
522
+ def construct_body_frame(self, frame_name: ostk.core.type.String, overwrite: bool = False) -> ostk.physics.coordinate.Frame:
523
+ """
524
+ Construct the body frame of the profile.
525
+
526
+ Args:
527
+ frame_name (str): The name of the frame.
528
+ overwrite (bool): If True, destruct existing frame with same name. Defaults to False.
529
+
530
+ Returns:
531
+ Frame: The body frame of the profile.
532
+ """
533
+ def get_axes_at(self, instant: ostk.physics.time.Instant) -> ostk.physics.coordinate.Axes:
534
+ """
535
+ Get the axes of the profile at a given instant.
536
+
537
+ Args:
538
+ instant (Instant): The instant.
539
+
540
+ Returns:
541
+ Frame: The axes of the profile at the given instant.
542
+ """
543
+ def get_state_at(self, instant: ostk.physics.time.Instant) -> ostk.astrodynamics.trajectory.State:
544
+ """
545
+ Get the state of the profile at a given instant.
546
+
547
+ Args:
548
+ instant (Instant): The instant.
549
+
550
+ Returns:
551
+ State: The state of the profile at the given instant.
552
+ """
553
+ def get_states_at(self, instants: list[ostk.physics.time.Instant]) -> list[ostk.astrodynamics.trajectory.State]:
554
+ """
555
+ Get the states of the profile at given instants.
556
+
557
+ Args:
558
+ instants (list): The instants.
559
+
560
+ Returns:
561
+ list: The states of the profile at the given instants.
562
+ """
563
+ def is_defined(self) -> bool:
564
+ """
565
+ Check if the profile is defined.
566
+
567
+ Returns:
568
+ bool: True if the profile is defined, False otherwise.
569
+ """
570
+ class System:
571
+ """
572
+
573
+ A flight system.
574
+
575
+ Provides the interface for flight systems.
576
+
577
+ .. warning:: This class is an abstract class and cannot be instantiated.
578
+
579
+
580
+ """
581
+ __hash__: typing.ClassVar[None] = None
582
+ @staticmethod
583
+ def undefined() -> System:
584
+ """
585
+ Create an undefined system.
586
+
587
+ Returns:
588
+ System: The undefined system.
589
+ """
590
+ def __eq__(self, arg0: System) -> bool:
591
+ ...
592
+ def __init__(self, mass: ostk.physics.unit.Mass, geometry: ostk.mathematics.geometry.d3.object.Composite) -> None:
593
+ """
594
+ Constructor.
595
+
596
+ Args:
597
+ mass (Mass): The mass of the system.
598
+ geometry (Composite): The geometry of the system.
599
+ """
600
+ def __ne__(self, arg0: System) -> bool:
601
+ ...
602
+ def __repr__(self) -> str:
603
+ ...
604
+ def __str__(self) -> str:
605
+ ...
606
+ def get_geometry(self) -> ostk.mathematics.geometry.d3.object.Composite:
607
+ """
608
+ Get the geometry of the system.
609
+
610
+ Returns:
611
+ Composite: The geometry of the system.
612
+ """
613
+ def get_mass(self) -> ostk.physics.unit.Mass:
614
+ """
615
+ Get the mass of the system.
616
+
617
+ Returns:
618
+ Mass: The mass of the system.
619
+ """
620
+ def is_defined(self) -> bool:
621
+ """
622
+ Check if the system is defined.
623
+
624
+ Returns:
625
+ bool: True if the system is defined, False otherwise.
626
+ """