open-space-toolkit-astrodynamics 13.1.0__py313-none-manylinux2014_aarch64.whl → 15.0.0__py313-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-15.0.0.dist-info}/METADATA +4 -4
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/RECORD +59 -28
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/WHEEL +1 -1
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-313-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 +54 -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.15 +0 -0
- ostk/astrodynamics/pytrajectory/__init__.pyi +3 -0
- ostk/astrodynamics/pytrajectory/pystate.py +2 -4
- ostk/astrodynamics/pytrajectory/pystate.pyi +63 -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/dynamics/test_dynamics.py +1 -1
- ostk/astrodynamics/test/flight/system/test_propulsion_system.py +2 -11
- ostk/astrodynamics/test/flight/system/test_satellite_system.py +6 -14
- ostk/astrodynamics/test/flight/test_maneuver.py +49 -64
- ostk/astrodynamics/test/flight/test_profile.py +4 -2
- ostk/astrodynamics/test/flight/test_system.py +5 -15
- ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +31 -16
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +9 -1
- ostk/astrodynamics/test/test_display.py +11 -5
- ostk/astrodynamics/test/test_event_condition.py +4 -2
- ostk/astrodynamics/test/test_utilities.py +1 -1
- 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/state/test_numerical_solver.py +4 -2
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +25 -15
- ostk/astrodynamics/test/trajectory/test_propagator.py +21 -27
- ostk/astrodynamics/test/trajectory/test_segment.py +0 -1
- ostk/astrodynamics/test/trajectory/test_state_builder.py +1 -0
- ostk/astrodynamics/trajectory/__init__.pyi +1800 -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-15.0.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-13.1.0.dist-info → open_space_toolkit_astrodynamics-15.0.0.dist-info}/zip-safe +0 -0
@@ -0,0 +1,588 @@
|
|
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.object
|
7
|
+
import ostk.physics
|
8
|
+
import ostk.physics.coordinate
|
9
|
+
import ostk.physics.coordinate.spherical
|
10
|
+
import ostk.physics.environment.object
|
11
|
+
import ostk.physics.time
|
12
|
+
import typing
|
13
|
+
__all__ = ['AccessTarget', 'Generator', 'VisibilityCriterion']
|
14
|
+
class AccessTarget:
|
15
|
+
"""
|
16
|
+
|
17
|
+
Represents the configuration for an Access target, including azimuth, elevation, and range intervals, as well
|
18
|
+
as position and LLA (Latitude, Longitude, Altitude).
|
19
|
+
|
20
|
+
"""
|
21
|
+
class Type:
|
22
|
+
"""
|
23
|
+
|
24
|
+
Enumeration of Access Target types.
|
25
|
+
|
26
|
+
|
27
|
+
Members:
|
28
|
+
|
29
|
+
Fixed
|
30
|
+
|
31
|
+
Trajectory
|
32
|
+
"""
|
33
|
+
Fixed: typing.ClassVar[AccessTarget.Type] # value = <Type.Fixed: 0>
|
34
|
+
Trajectory: typing.ClassVar[AccessTarget.Type] # value = <Type.Trajectory: 1>
|
35
|
+
__members__: typing.ClassVar[dict[str, AccessTarget.Type]] # value = {'Fixed': <Type.Fixed: 0>, 'Trajectory': <Type.Trajectory: 1>}
|
36
|
+
@staticmethod
|
37
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
38
|
+
...
|
39
|
+
def __eq__(self, other: typing.Any) -> bool:
|
40
|
+
...
|
41
|
+
def __getstate__(self) -> int:
|
42
|
+
...
|
43
|
+
def __hash__(self) -> int:
|
44
|
+
...
|
45
|
+
def __index__(self) -> int:
|
46
|
+
...
|
47
|
+
def __init__(self, value: int) -> None:
|
48
|
+
...
|
49
|
+
def __int__(self) -> int:
|
50
|
+
...
|
51
|
+
def __ne__(self, other: typing.Any) -> bool:
|
52
|
+
...
|
53
|
+
def __repr__(self) -> str:
|
54
|
+
...
|
55
|
+
def __setstate__(self, state: int) -> None:
|
56
|
+
...
|
57
|
+
def __str__(self) -> str:
|
58
|
+
...
|
59
|
+
@property
|
60
|
+
def name(self) -> str:
|
61
|
+
...
|
62
|
+
@property
|
63
|
+
def value(self) -> int:
|
64
|
+
...
|
65
|
+
Fixed: typing.ClassVar[AccessTarget.Type] # value = <Type.Fixed: 0>
|
66
|
+
Trajectory: typing.ClassVar[AccessTarget.Type] # value = <Type.Trajectory: 1>
|
67
|
+
@staticmethod
|
68
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
69
|
+
...
|
70
|
+
@staticmethod
|
71
|
+
def from_lla(visibility_criterion: typing.Any, lla: ostk.physics.coordinate.spherical.LLA, celestial: ostk.physics.environment.object.Celestial) -> AccessTarget:
|
72
|
+
"""
|
73
|
+
Create an AccessTarget from latitude, longitude, and altitude (LLA).
|
74
|
+
|
75
|
+
Args:
|
76
|
+
visibility_criterion (VisibilityCriterion): The visibility criterion.
|
77
|
+
lla (LLA): The latitude, longitude, and altitude.
|
78
|
+
celestial (Celestial): The celestial body.
|
79
|
+
|
80
|
+
Returns:
|
81
|
+
AccessTarget: The created AccessTarget instance.
|
82
|
+
"""
|
83
|
+
@staticmethod
|
84
|
+
def from_position(visibility_criterion: typing.Any, position: ostk.physics.coordinate.Position) -> AccessTarget:
|
85
|
+
"""
|
86
|
+
Create an AccessTarget from a fixed position.
|
87
|
+
|
88
|
+
Args:
|
89
|
+
visibility_criterion (VisibilityCriterion): The visibility criterion.
|
90
|
+
position (Position): The fixed position.
|
91
|
+
|
92
|
+
Returns:
|
93
|
+
AccessTarget: The created AccessTarget instance.
|
94
|
+
"""
|
95
|
+
@staticmethod
|
96
|
+
def from_trajectory(visibility_criterion: typing.Any, trajectory: ostk.astrodynamics.Trajectory) -> AccessTarget:
|
97
|
+
"""
|
98
|
+
Create an AccessTarget from a trajectory.
|
99
|
+
|
100
|
+
Args:
|
101
|
+
visibility_criterion (VisibilityCriterion): The visibility criterion.
|
102
|
+
trajectory (Trajectory): The trajectory.
|
103
|
+
|
104
|
+
Returns:
|
105
|
+
AccessTarget: The created AccessTarget instance.
|
106
|
+
"""
|
107
|
+
def compute_r_sez_ecef(self, celestial: ostk.physics.environment.object.Celestial) -> numpy.ndarray[numpy.float64[3, 3]]:
|
108
|
+
"""
|
109
|
+
Compute the rotation matrix from ECEF to SEZ frame.
|
110
|
+
|
111
|
+
Args:
|
112
|
+
celestial (Celestial): The celestial body for the rotation computation.
|
113
|
+
|
114
|
+
Returns:
|
115
|
+
numpy.ndarray: The rotation matrix (3x3).
|
116
|
+
"""
|
117
|
+
def get_lla(self, celestial: ostk.physics.environment.object.Celestial) -> ostk.physics.coordinate.spherical.LLA:
|
118
|
+
"""
|
119
|
+
Get the latitude, longitude, and altitude (LLA) of the access target.
|
120
|
+
|
121
|
+
Args:
|
122
|
+
celestial (Celestial): The celestial body for the LLA computation.
|
123
|
+
|
124
|
+
Returns:
|
125
|
+
LLA: The latitude, longitude, and altitude.
|
126
|
+
"""
|
127
|
+
def get_position(self) -> ostk.physics.coordinate.Position:
|
128
|
+
"""
|
129
|
+
Get the fixed position associated with the access target.
|
130
|
+
|
131
|
+
Returns:
|
132
|
+
Position: The position.
|
133
|
+
"""
|
134
|
+
def get_trajectory(self) -> ostk.astrodynamics.Trajectory:
|
135
|
+
"""
|
136
|
+
Get the trajectory associated with the access target.
|
137
|
+
|
138
|
+
Returns:
|
139
|
+
Trajectory: The trajectory.
|
140
|
+
"""
|
141
|
+
def get_type(self) -> AccessTarget.Type:
|
142
|
+
"""
|
143
|
+
Get the type of the access target.
|
144
|
+
|
145
|
+
Returns:
|
146
|
+
AccessTarget.Type: The type of the access target.
|
147
|
+
"""
|
148
|
+
def get_visibility_criterion(self) -> ...:
|
149
|
+
"""
|
150
|
+
Get the visibility criterion associated with the access target.
|
151
|
+
|
152
|
+
Returns:
|
153
|
+
VisibilityCriterion: The visibility criterion.
|
154
|
+
"""
|
155
|
+
class Generator:
|
156
|
+
"""
|
157
|
+
|
158
|
+
An access generator.
|
159
|
+
|
160
|
+
|
161
|
+
"""
|
162
|
+
@staticmethod
|
163
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
164
|
+
...
|
165
|
+
@staticmethod
|
166
|
+
def undefined() -> Generator:
|
167
|
+
"""
|
168
|
+
Get an undefined generator.
|
169
|
+
|
170
|
+
Returns:
|
171
|
+
Generator: An undefined generator.
|
172
|
+
"""
|
173
|
+
def __init__(self, environment: ostk.physics.Environment, step: ostk.physics.time.Duration = ..., tolerance: ostk.physics.time.Duration = ..., access_filter: typing.Callable[[ostk.astrodynamics.Access], bool] = None, state_filter: typing.Callable[[ostk.astrodynamics.trajectory.State, ostk.astrodynamics.trajectory.State], bool] = None) -> None:
|
174
|
+
"""
|
175
|
+
Constructor.
|
176
|
+
|
177
|
+
Args:
|
178
|
+
environment (Environment): The environment.
|
179
|
+
step (Duration): The step. Defaults to Duration.minutes(1.0).
|
180
|
+
tolerance (Duration): The tolerance. Defaults to Duration.microseconds(1.0).
|
181
|
+
access_filter (function): The access filter. Defaults to None.
|
182
|
+
state_filter (function): The state filter. Defaults to None.
|
183
|
+
"""
|
184
|
+
@typing.overload
|
185
|
+
def compute_accesses(self, interval: ostk.physics.time.Interval, access_target: AccessTarget, to_trajectory: ostk.astrodynamics.Trajectory, coarse: bool = False) -> list[ostk.astrodynamics.Access]:
|
186
|
+
"""
|
187
|
+
Compute the accesses.
|
188
|
+
|
189
|
+
Args:
|
190
|
+
interval (Interval): The time interval over which to compute accesses.
|
191
|
+
access_target (AccessTarget): The access target to compute the accesses with.
|
192
|
+
to_trajectory (Trajectory): The trajectory to co compute the accesses with.
|
193
|
+
coarse (bool): True to use coarse mode. Defaults to False. Only available for fixed targets.
|
194
|
+
|
195
|
+
Returns:
|
196
|
+
Accesses: The accesses.
|
197
|
+
"""
|
198
|
+
@typing.overload
|
199
|
+
def compute_accesses(self, interval: ostk.physics.time.Interval, access_targets: list[AccessTarget], to_trajectory: ostk.astrodynamics.Trajectory, coarse: bool = False) -> list[list[ostk.astrodynamics.Access]]:
|
200
|
+
"""
|
201
|
+
Compute the accesses.
|
202
|
+
|
203
|
+
Args:
|
204
|
+
interval (Interval): The time interval over which to compute accesses.
|
205
|
+
access_targets (list[AccessTarget]): The access targets to compute the accesses with.
|
206
|
+
to_trajectory (Trajectory): The trajectory to co compute the accesses with.
|
207
|
+
coarse (bool): True to use coarse mode. Defaults to False. Only available for fixed targets.
|
208
|
+
|
209
|
+
Returns:
|
210
|
+
Accesses: The accesses.
|
211
|
+
"""
|
212
|
+
def get_access_filter(self) -> typing.Callable[[ostk.astrodynamics.Access], bool]:
|
213
|
+
"""
|
214
|
+
Get the access filter.
|
215
|
+
|
216
|
+
Returns:
|
217
|
+
function: The access filter.
|
218
|
+
"""
|
219
|
+
def get_condition_function(self, access_target: AccessTarget, to_trajectory: ostk.astrodynamics.Trajectory) -> typing.Callable[[ostk.physics.time.Instant], bool]:
|
220
|
+
"""
|
221
|
+
Get the condition function.
|
222
|
+
|
223
|
+
Args:
|
224
|
+
access_target (AccessTarget): The access target from which the condition function is being evaluated against.
|
225
|
+
to_trajectory (Trajectory): The trajectory to which the condition function is being evaluated against.
|
226
|
+
|
227
|
+
Returns:
|
228
|
+
function: The condition function.
|
229
|
+
"""
|
230
|
+
def get_state_filter(self) -> typing.Callable[[ostk.astrodynamics.trajectory.State, ostk.astrodynamics.trajectory.State], bool]:
|
231
|
+
"""
|
232
|
+
Get the state filter.
|
233
|
+
|
234
|
+
Returns:
|
235
|
+
function: The state filter.
|
236
|
+
"""
|
237
|
+
def get_step(self) -> ostk.physics.time.Duration:
|
238
|
+
"""
|
239
|
+
Get the step.
|
240
|
+
|
241
|
+
Returns:
|
242
|
+
Duration: The step.
|
243
|
+
"""
|
244
|
+
def get_tolerance(self) -> ostk.physics.time.Duration:
|
245
|
+
"""
|
246
|
+
Get the tolerance.
|
247
|
+
|
248
|
+
Returns:
|
249
|
+
Duration: The tolerance.
|
250
|
+
"""
|
251
|
+
def is_defined(self) -> bool:
|
252
|
+
"""
|
253
|
+
Check if the generator is defined.
|
254
|
+
|
255
|
+
Returns:
|
256
|
+
bool: True if the generator is defined, False otherwise.
|
257
|
+
"""
|
258
|
+
def set_access_filter(self, access_filter: typing.Callable[[ostk.astrodynamics.Access], bool]) -> None:
|
259
|
+
"""
|
260
|
+
Set the access filter.
|
261
|
+
|
262
|
+
Args:
|
263
|
+
access_filter (function): The access filter.
|
264
|
+
"""
|
265
|
+
def set_state_filter(self, state_filter: typing.Callable[[ostk.astrodynamics.trajectory.State, ostk.astrodynamics.trajectory.State], bool]) -> None:
|
266
|
+
"""
|
267
|
+
Set the state filter.
|
268
|
+
|
269
|
+
Args:
|
270
|
+
state_filter (function): The state filter.
|
271
|
+
"""
|
272
|
+
def set_step(self, step: ostk.physics.time.Duration) -> None:
|
273
|
+
"""
|
274
|
+
Set the step.
|
275
|
+
|
276
|
+
Args:
|
277
|
+
step (Duration): The step.
|
278
|
+
"""
|
279
|
+
def set_tolerance(self, tolerance: ostk.physics.time.Duration) -> None:
|
280
|
+
"""
|
281
|
+
Set the tolerance.
|
282
|
+
|
283
|
+
Args:
|
284
|
+
tolerance (Duration): The tolerance.
|
285
|
+
"""
|
286
|
+
class VisibilityCriterion:
|
287
|
+
"""
|
288
|
+
|
289
|
+
A class representing a visibility criterion for accesses between objects.
|
290
|
+
|
291
|
+
"""
|
292
|
+
class AERInterval:
|
293
|
+
"""
|
294
|
+
|
295
|
+
An AER interval visibility criterion.
|
296
|
+
|
297
|
+
"""
|
298
|
+
@staticmethod
|
299
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
300
|
+
...
|
301
|
+
def __init__(self, azimuth_interval: ostk.mathematics.object.RealInterval, elevation_interval: ostk.mathematics.object.RealInterval, range_interval: ostk.mathematics.object.RealInterval) -> None:
|
302
|
+
"""
|
303
|
+
Constructs an AER interval.
|
304
|
+
|
305
|
+
Args:
|
306
|
+
azimuth_interval (RealInterval): Azimuth interval in degrees.
|
307
|
+
elevation_interval (RealInterval): Elevation interval in degrees.
|
308
|
+
range_interval (RealInterval): Range interval in meters.
|
309
|
+
"""
|
310
|
+
@typing.overload
|
311
|
+
def is_satisfied(self, aer: ostk.physics.coordinate.spherical.AER) -> bool:
|
312
|
+
"""
|
313
|
+
Checks if the given AER satisfies the criterion.
|
314
|
+
|
315
|
+
Args:
|
316
|
+
aer (AER): The Azimuth, Elevation, and Range to check.
|
317
|
+
|
318
|
+
Returns:
|
319
|
+
bool: True if the criterion is satisfied, False otherwise.
|
320
|
+
"""
|
321
|
+
@typing.overload
|
322
|
+
def is_satisfied(self, azimuth: ostk.core.type.Real, elevation: ostk.core.type.Real, range: ostk.core.type.Real) -> bool:
|
323
|
+
"""
|
324
|
+
Checks if the given Azimuth, Elevation, and Range values satisfy the criterion.
|
325
|
+
|
326
|
+
Args:
|
327
|
+
azimuth (float): Azimuth in radians.
|
328
|
+
elevation (float): Elevation in radians.
|
329
|
+
range (float): Range in meters.
|
330
|
+
|
331
|
+
Returns:
|
332
|
+
bool: True if the criterion is satisfied, False otherwise.
|
333
|
+
"""
|
334
|
+
@property
|
335
|
+
def azimuth(self) -> ostk.mathematics.object.RealInterval:
|
336
|
+
"""
|
337
|
+
Azimuth interval in radians.
|
338
|
+
|
339
|
+
:type: RealInterval
|
340
|
+
"""
|
341
|
+
@property
|
342
|
+
def elevation(self) -> ostk.mathematics.object.RealInterval:
|
343
|
+
"""
|
344
|
+
Elevation interval in radians.
|
345
|
+
|
346
|
+
:type: RealInterval
|
347
|
+
"""
|
348
|
+
@property
|
349
|
+
def range(self) -> ostk.mathematics.object.RealInterval:
|
350
|
+
"""
|
351
|
+
Range interval in meters.
|
352
|
+
|
353
|
+
:type: RealInterval
|
354
|
+
"""
|
355
|
+
class AERMask:
|
356
|
+
"""
|
357
|
+
|
358
|
+
An AER mask visibility criterion.
|
359
|
+
|
360
|
+
"""
|
361
|
+
@staticmethod
|
362
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
363
|
+
...
|
364
|
+
def __init__(self, azimuth_elevation_mask: dict[ostk.core.type.Real, ostk.core.type.Real], range_interval: ostk.mathematics.object.RealInterval) -> None:
|
365
|
+
"""
|
366
|
+
Constructs an AER mask.
|
367
|
+
|
368
|
+
Args:
|
369
|
+
azimuth_elevation_mask (dict): A map of azimuth angles (degrees) to elevation angles (degrees).
|
370
|
+
range_interval (RealInterval): Range interval in meters.
|
371
|
+
"""
|
372
|
+
@typing.overload
|
373
|
+
def is_satisfied(self, aer: ostk.physics.coordinate.spherical.AER) -> bool:
|
374
|
+
"""
|
375
|
+
Checks if the given AER satisfies the criterion.
|
376
|
+
|
377
|
+
Args:
|
378
|
+
aer (AER): The Azimuth, Elevation, and Range to check.
|
379
|
+
|
380
|
+
Returns:
|
381
|
+
bool: True if the criterion is satisfied, False otherwise.
|
382
|
+
"""
|
383
|
+
@typing.overload
|
384
|
+
def is_satisfied(self, azimuth: ostk.core.type.Real, elevation: ostk.core.type.Real, range: ostk.core.type.Real) -> bool:
|
385
|
+
"""
|
386
|
+
Checks if the given Azimuth, Elevation, and Range values satisfy the criterion.
|
387
|
+
|
388
|
+
Args:
|
389
|
+
azimuth (float): Azimuth in radians.
|
390
|
+
elevation (float): Elevation in radians.
|
391
|
+
range (float): Range in meters.
|
392
|
+
|
393
|
+
Returns:
|
394
|
+
bool: True if the criterion is satisfied, False otherwise.
|
395
|
+
"""
|
396
|
+
@property
|
397
|
+
def azimuth_elevation_mask(self) -> dict[ostk.core.type.Real, ostk.core.type.Real]:
|
398
|
+
"""
|
399
|
+
A map of azimuth angles to elevation angles in radians defining the mask.
|
400
|
+
|
401
|
+
:type: dict
|
402
|
+
"""
|
403
|
+
@property
|
404
|
+
def range(self) -> ostk.mathematics.object.RealInterval:
|
405
|
+
"""
|
406
|
+
Range interval in meters.
|
407
|
+
|
408
|
+
:type: RealInterval
|
409
|
+
"""
|
410
|
+
class ElevationInterval:
|
411
|
+
"""
|
412
|
+
|
413
|
+
An elevation interval visibility criterion.
|
414
|
+
|
415
|
+
"""
|
416
|
+
@staticmethod
|
417
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
418
|
+
...
|
419
|
+
def __init__(self, elevation_interval: ostk.mathematics.object.RealInterval) -> None:
|
420
|
+
"""
|
421
|
+
Constructs an ElevationInterval visibility criterion.
|
422
|
+
|
423
|
+
Args:
|
424
|
+
elevation_interval (RealInterval): The elevation interval in degrees.
|
425
|
+
"""
|
426
|
+
def is_satisfied(self, elevation: ostk.core.type.Real) -> bool:
|
427
|
+
"""
|
428
|
+
Checks if the given elevation angle satisfies the criterion.
|
429
|
+
|
430
|
+
Args:
|
431
|
+
elevation (float): Elevation angle in radians.
|
432
|
+
|
433
|
+
Returns:
|
434
|
+
bool: True if the criterion is satisfied, False otherwise.
|
435
|
+
"""
|
436
|
+
@property
|
437
|
+
def elevation(self) -> ostk.mathematics.object.RealInterval:
|
438
|
+
"""
|
439
|
+
Elevation interval in radians.
|
440
|
+
|
441
|
+
:type: RealInterval
|
442
|
+
"""
|
443
|
+
class LineOfSight:
|
444
|
+
"""
|
445
|
+
|
446
|
+
A line-of-sight visibility criterion.
|
447
|
+
|
448
|
+
"""
|
449
|
+
@staticmethod
|
450
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
451
|
+
...
|
452
|
+
def __init__(self, environment: ostk.physics.Environment) -> None:
|
453
|
+
"""
|
454
|
+
Constructs a LineOfSight visibility criterion.
|
455
|
+
|
456
|
+
Args:
|
457
|
+
environment (Environment): The environment to consider for line-of-sight calculations.
|
458
|
+
"""
|
459
|
+
def is_satisfied(self, instant: ostk.physics.time.Instant, from_position_coordinates: numpy.ndarray[numpy.float64[3, 1]], to_position_coordinates: numpy.ndarray[numpy.float64[3, 1]]) -> bool:
|
460
|
+
"""
|
461
|
+
Checks if the line-of-sight criterion is satisfied between two positions at a given instant.
|
462
|
+
|
463
|
+
Args:
|
464
|
+
instant (Instant): The time at which to perform the check.
|
465
|
+
from_position_coordinates (np.ndarray): The position coordinates (in meters) of the observer.
|
466
|
+
to_position_coordinates (np.ndarray): The position coordinates (in meters) of the target.
|
467
|
+
|
468
|
+
Returns:
|
469
|
+
bool: True if there is a clear line of sight, False otherwise.
|
470
|
+
"""
|
471
|
+
@staticmethod
|
472
|
+
def _pybind11_conduit_v1_(*args, **kwargs):
|
473
|
+
...
|
474
|
+
@staticmethod
|
475
|
+
def from_aer_interval(azimuth_interval: ostk.mathematics.object.RealInterval, elevation_interval: ostk.mathematics.object.RealInterval, range_interval: ostk.mathematics.object.RealInterval) -> VisibilityCriterion:
|
476
|
+
"""
|
477
|
+
Creates a visibility criterion from azimuth, elevation, and range intervals.
|
478
|
+
|
479
|
+
Args:
|
480
|
+
azimuth_interval (RealInterval): Azimuth interval in degrees.
|
481
|
+
elevation_interval (RealInterval): Elevation interval in degrees.
|
482
|
+
range_interval (RealInterval): Range interval in meters.
|
483
|
+
|
484
|
+
Returns:
|
485
|
+
VisibilityCriterion: The visibility criterion instance.
|
486
|
+
"""
|
487
|
+
@staticmethod
|
488
|
+
def from_aer_mask(azimuth_elevation_mask: dict[ostk.core.type.Real, ostk.core.type.Real], range_interval: ostk.mathematics.object.RealInterval) -> VisibilityCriterion:
|
489
|
+
"""
|
490
|
+
Creates a visibility criterion from an azimuth-elevation mask and range interval.
|
491
|
+
|
492
|
+
Args:
|
493
|
+
azimuth_elevation_mask (dict): A map of azimuth angles (degrees) to elevation angles (degrees).
|
494
|
+
range_interval (RealInterval): Range interval in meters.
|
495
|
+
|
496
|
+
Returns:
|
497
|
+
VisibilityCriterion: The visibility criterion instance.
|
498
|
+
"""
|
499
|
+
@staticmethod
|
500
|
+
def from_elevation_interval(elevation_interval: ostk.mathematics.object.RealInterval) -> VisibilityCriterion:
|
501
|
+
"""
|
502
|
+
Creates a visibility criterion from an elevation interval.
|
503
|
+
|
504
|
+
Args:
|
505
|
+
elevation_interval (RealInterval): The elevation interval in radians.
|
506
|
+
|
507
|
+
Returns:
|
508
|
+
VisibilityCriterion: The visibility criterion instance.
|
509
|
+
"""
|
510
|
+
@staticmethod
|
511
|
+
def from_line_of_sight(environment: ostk.physics.Environment) -> VisibilityCriterion:
|
512
|
+
"""
|
513
|
+
Creates a visibility criterion based on line-of-sight considerations.
|
514
|
+
|
515
|
+
Args:
|
516
|
+
environment (Environment): The environment to consider for line-of-sight calculations.
|
517
|
+
|
518
|
+
Returns:
|
519
|
+
VisibilityCriterion: The visibility criterion instance.
|
520
|
+
"""
|
521
|
+
def as_aer_interval(self) -> VisibilityCriterion.AERInterval | None:
|
522
|
+
"""
|
523
|
+
Casts the visibility criterion to an AERInterval.
|
524
|
+
|
525
|
+
Returns:
|
526
|
+
AERInterval: The AERInterval criterion.
|
527
|
+
|
528
|
+
Raises:
|
529
|
+
ValueError: If the criterion is not an AERInterval.
|
530
|
+
"""
|
531
|
+
def as_aer_mask(self) -> VisibilityCriterion.AERMask | None:
|
532
|
+
"""
|
533
|
+
Casts the visibility criterion to an AERMask.
|
534
|
+
|
535
|
+
Returns:
|
536
|
+
AERMask: The AERMask criterion.
|
537
|
+
|
538
|
+
Raises:
|
539
|
+
ValueError: If the criterion is not an AERMask.
|
540
|
+
"""
|
541
|
+
def as_elevation_interval(self) -> VisibilityCriterion.ElevationInterval | None:
|
542
|
+
"""
|
543
|
+
Casts the visibility criterion to an ElevationInterval.
|
544
|
+
|
545
|
+
Returns:
|
546
|
+
ElevationInterval: The ElevationInterval criterion.
|
547
|
+
|
548
|
+
Raises:
|
549
|
+
ValueError: If the criterion is not an ElevationInterval.
|
550
|
+
"""
|
551
|
+
def as_line_of_sight(self) -> VisibilityCriterion.LineOfSight | None:
|
552
|
+
"""
|
553
|
+
Casts the visibility criterion to a LineOfSight.
|
554
|
+
|
555
|
+
Returns:
|
556
|
+
LineOfSight: The LineOfSight criterion.
|
557
|
+
|
558
|
+
Raises:
|
559
|
+
ValueError: If the criterion is not a LineOfSight.
|
560
|
+
"""
|
561
|
+
def is_aer_interval(self) -> bool:
|
562
|
+
"""
|
563
|
+
Checks if the visibility criterion is an AERInterval.
|
564
|
+
|
565
|
+
Returns:
|
566
|
+
bool: True if it is an AERInterval criterion, False otherwise.
|
567
|
+
"""
|
568
|
+
def is_aer_mask(self) -> bool:
|
569
|
+
"""
|
570
|
+
Checks if the visibility criterion is an AERMask.
|
571
|
+
|
572
|
+
Returns:
|
573
|
+
bool: True if it is an AERMask criterion, False otherwise.
|
574
|
+
"""
|
575
|
+
def is_elevation_interval(self) -> bool:
|
576
|
+
"""
|
577
|
+
Checks if the visibility criterion is an ElevationInterval.
|
578
|
+
|
579
|
+
Returns:
|
580
|
+
bool: True if it is an ElevationInterval criterion, False otherwise.
|
581
|
+
"""
|
582
|
+
def is_line_of_sight(self) -> bool:
|
583
|
+
"""
|
584
|
+
Checks if the visibility criterion is a LineOfSight.
|
585
|
+
|
586
|
+
Returns:
|
587
|
+
bool: True if it is a LineOfSight criterion, False otherwise.
|
588
|
+
"""
|