open-space-toolkit-astrodynamics 14.0.0__py39-none-manylinux2014_x86_64.whl → 15.1.0__py39-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-14.0.0.dist-info → open_space_toolkit_astrodynamics-15.1.0.dist-info}/METADATA +2 -2
- {open_space_toolkit_astrodynamics-14.0.0.dist-info → open_space_toolkit_astrodynamics-15.1.0.dist-info}/RECORD +30 -31
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-x86_64-linux-gnu.so +0 -0
- ostk/astrodynamics/__init__.pyi +1 -1
- ostk/astrodynamics/access.pyi +3 -3
- ostk/astrodynamics/conjunction/message/ccsds.pyi +4 -4
- ostk/astrodynamics/dynamics.pyi +1 -1
- ostk/astrodynamics/flight/__init__.pyi +1 -1
- ostk/astrodynamics/{libopen-space-toolkit-astrodynamics.so.14 → libopen-space-toolkit-astrodynamics.so.15} +0 -0
- ostk/astrodynamics/solver.pyi +4 -4
- 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_system.py +5 -15
- ostk/astrodynamics/test/solvers/test_finite_difference_solver.py +9 -7
- ostk/astrodynamics/test/test_event_condition.py +4 -2
- ostk/astrodynamics/test/test_utilities.py +1 -1
- ostk/astrodynamics/test/test_viewer.py +64 -0
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +4 -2
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +4 -2
- ostk/astrodynamics/test/trajectory/test_state_builder.py +1 -0
- ostk/astrodynamics/trajectory/__init__.pyi +26 -20
- ostk/astrodynamics/trajectory/orbit/message/spacex.pyi +1 -1
- ostk/astrodynamics/trajectory/orbit/model/__init__.pyi +5 -5
- ostk/astrodynamics/trajectory/state/__init__.pyi +4 -4
- ostk/astrodynamics/trajectory/state/coordinate_subset.pyi +1 -1
- ostk/astrodynamics/viewer.py +105 -4
- ostk/astrodynamics/py.typed +0 -0
- {open_space_toolkit_astrodynamics-14.0.0.dist-info → open_space_toolkit_astrodynamics-15.1.0.dist-info}/WHEEL +0 -0
- {open_space_toolkit_astrodynamics-14.0.0.dist-info → open_space_toolkit_astrodynamics-15.1.0.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-14.0.0.dist-info → open_space_toolkit_astrodynamics-15.1.0.dist-info}/zip-safe +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: open-space-toolkit-astrodynamics
|
3
|
-
Version:
|
3
|
+
Version: 15.1.0
|
4
4
|
Summary: Orbit, attitude, access.
|
5
5
|
Author: Open Space Collective
|
6
6
|
Author-email: contact@open-space-collective.org
|
@@ -14,7 +14,7 @@ Description-Content-Type: text/markdown
|
|
14
14
|
Requires-Dist: open-space-toolkit-core~=5.0
|
15
15
|
Requires-Dist: open-space-toolkit-io~=4.0
|
16
16
|
Requires-Dist: open-space-toolkit-mathematics~=4.3
|
17
|
-
Requires-Dist: open-space-toolkit-physics~=
|
17
|
+
Requires-Dist: open-space-toolkit-physics~=12.0
|
18
18
|
|
19
19
|
# Open Space Toolkit ▸ Astrodynamics
|
20
20
|
|
@@ -1,26 +1,25 @@
|
|
1
1
|
ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
2
|
-
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-x86_64-linux-gnu.so,sha256=
|
2
|
+
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-x86_64-linux-gnu.so,sha256=0LiCPg4duel3WdE9KPD655Ar-CudV02A1gVS9x5Kayw,2631776
|
3
3
|
ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
|
4
|
-
ostk/astrodynamics/__init__.pyi,sha256=
|
5
|
-
ostk/astrodynamics/access.pyi,sha256=
|
4
|
+
ostk/astrodynamics/__init__.pyi,sha256=GUhsCMT_MyFezGzV2XZR8AF2lJQzJJFtcYibkQPUvhk,32231
|
5
|
+
ostk/astrodynamics/access.pyi,sha256=0GAFCSoMHT3L8wWOxU1-3ELqR7YGyEkt6wlpaL7UXzI,25313
|
6
6
|
ostk/astrodynamics/converters.py,sha256=luPh30qMp9bzEkN7hUccmxlLf7zRp_AzqmBe8IUjPhU,3314
|
7
7
|
ostk/astrodynamics/converters.pyi,sha256=HrZFyizkc6Hv_K38ZKZ80fX_bAxd6keA_NFWNQygvbs,1745
|
8
8
|
ostk/astrodynamics/dataframe.py,sha256=9fXRk7sJl_OrBTCjZC_TFx6JMPE7IDGqv2JgEmGCdgM,18775
|
9
9
|
ostk/astrodynamics/display.py,sha256=LZESZgx2wlrFO4cwAGMb3VPJfdtcjNgCgKFrqot0NYU,6339
|
10
|
-
ostk/astrodynamics/dynamics.pyi,sha256=
|
10
|
+
ostk/astrodynamics/dynamics.pyi,sha256=AUNsUSR5LqOYFt626k4FZDbCPZRGoZV82AwCC3CDH8s,13738
|
11
11
|
ostk/astrodynamics/event_condition.pyi,sha256=-Tq6cqr00lZPpoMnCPDRB0MB-MinM60oCNn1ZSA1Cik,25536
|
12
12
|
ostk/astrodynamics/guidance_law.pyi,sha256=pEoAL9CDFWNulOLv6wea3xj1fJI3xFtgx-2eYMEftJI,12507
|
13
|
-
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.
|
14
|
-
ostk/astrodynamics/
|
15
|
-
ostk/astrodynamics/solver.pyi,sha256=jOBvxADBaxGJC8C6tV9iwFMngnfmmM7-hKMrpunKo_c,9718
|
13
|
+
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.15,sha256=_YtpT-mc45lP9dFMoUZvxx5Hw8zQZs75QIwmFJS8VEU,101370512
|
14
|
+
ostk/astrodynamics/solver.pyi,sha256=ugi73KdRXPKFvKXFMpYKIwxYUGC2KEMlBiLv0PFcigM,9746
|
16
15
|
ostk/astrodynamics/utilities.py,sha256=mlKL3WrOASrY_pLt7bzUz0XZT7jagzLOZjMOIqjbQ1Y,6999
|
17
|
-
ostk/astrodynamics/viewer.py,sha256=
|
16
|
+
ostk/astrodynamics/viewer.py,sha256=SpcvBqXx3CAZpk7UGOPT1ilxywmAmNpgqpuRY11Hwx0,16376
|
18
17
|
ostk/astrodynamics/conjunction/__init__.pyi,sha256=HFvWl8bCmrq3cBkUh5X5RGIh8webmVGxaZdpsz3WN-E,79
|
19
18
|
ostk/astrodynamics/conjunction/message/__init__.pyi,sha256=5H__sg_QUx7ybf9jtVWvXzrUHeK3ECotfhddAdHjJUc,75
|
20
|
-
ostk/astrodynamics/conjunction/message/ccsds.pyi,sha256=
|
19
|
+
ostk/astrodynamics/conjunction/message/ccsds.pyi,sha256=3FCWOnInqwI5FKfodR4-xYuiBS0UzemoIXsc1GWPDQI,28690
|
21
20
|
ostk/astrodynamics/data/__init__.pyi,sha256=4l_mfVbnU_L7wImwgTCe8fVI81gK_tUmd0z7BY9lLi8,81
|
22
21
|
ostk/astrodynamics/data/provider.pyi,sha256=O4Lg9FBq9itufgATnic5SMg90pn8vJJJMUdNcWP72NI,1492
|
23
|
-
ostk/astrodynamics/flight/__init__.pyi,sha256=
|
22
|
+
ostk/astrodynamics/flight/__init__.pyi,sha256=e3h1bK8VIbMR_vj_zEXavJx_3vsUjkSuGvTRLaRFCdg,21978
|
24
23
|
ostk/astrodynamics/flight/system.pyi,sha256=HNoC__FuySH9RNiPRvCbL_oQfXQz1mLDUJzE30rkyc0,10742
|
25
24
|
ostk/astrodynamics/flight/profile/__init__.pyi,sha256=bcvyB8BUlv2Mbjr98piFaiN_tBw9frqkcvoUF_GWelw,3766
|
26
25
|
ostk/astrodynamics/flight/profile/model.pyi,sha256=EEN8V3JGTcvM5sX33lkJnE0av9yPtzn0gJcBmZeai9M,6963
|
@@ -34,12 +33,12 @@ ostk/astrodynamics/test/test_access.py,sha256=MCBsUPtuVm7NgHZR0z0DpWnPZ_qBu4aRhL
|
|
34
33
|
ostk/astrodynamics/test/test_converters.py,sha256=mFpDD0YM8o356lj91GGIwYdMk2ut6xZFV3uYcgZepMY,8744
|
35
34
|
ostk/astrodynamics/test/test_dataframe.py,sha256=IJMOODzTVYtiPxekmltH6lOMArPXbHwSEAl-jg0Ab2g,28414
|
36
35
|
ostk/astrodynamics/test/test_display.py,sha256=6giw_i08YMOSRgqNpdVWtzDu6fFalEVKz_Uisu3N_X8,3870
|
37
|
-
ostk/astrodynamics/test/test_event_condition.py,sha256=
|
36
|
+
ostk/astrodynamics/test/test_event_condition.py,sha256=fQ-rVYpQsa7xacxRMBOQDyn61CuAGX1QBOGZxGWR0_s,2204
|
38
37
|
ostk/astrodynamics/test/test_import.py,sha256=py_hALBR0IYuUzv9dfgQZzrrLHJIpnyKvt3Oi1XBqCg,1251
|
39
38
|
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
40
39
|
ostk/astrodynamics/test/test_trajectory.py,sha256=0sgGPkMFy-u-33z6SF-sTvaBb_NU7OvaeMTVF6wevfY,3148
|
41
|
-
ostk/astrodynamics/test/test_utilities.py,sha256=
|
42
|
-
ostk/astrodynamics/test/test_viewer.py,sha256=
|
40
|
+
ostk/astrodynamics/test/test_utilities.py,sha256=NNIyzqOxMdsNpK2z0wU0utX06iZNfbMJDE36Upard28,3048
|
41
|
+
ostk/astrodynamics/test/test_viewer.py,sha256=kDstRH_WKufN_0JPSXttzLMk3Afv_ylcEBfHxc35yrA,8946
|
43
42
|
ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
44
43
|
ostk/astrodynamics/test/access/test_generator.py,sha256=i7TnM80kF0Q_9KmyoqKt5n1ufg3ZjAIEMPVVds8ZDdI,10315
|
45
44
|
ostk/astrodynamics/test/access/test_visibility_criterion.py,sha256=0Q_lcs6PZC_mTIHDuIPc8adKF02q2EM_ZR6jT5UhnDg,6353
|
@@ -51,7 +50,7 @@ ostk/astrodynamics/test/data/provider/test_off_nadir.py,sha256=7Wz5sHWAX8WHGhvxC
|
|
51
50
|
ostk/astrodynamics/test/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
52
51
|
ostk/astrodynamics/test/dynamics/test_atmospheric_drag.py,sha256=PryQJcYTi3EWjTDHPZ12-c6wVMzlgjaMdYxboWLgLJc,3737
|
53
52
|
ostk/astrodynamics/test/dynamics/test_central_body_gravity.py,sha256=B8HvZz_ppsmeGijfMJArJbkLP9fSPciGtScuVT9AM_g,1782
|
54
|
-
ostk/astrodynamics/test/dynamics/test_dynamics.py,sha256=
|
53
|
+
ostk/astrodynamics/test/dynamics/test_dynamics.py,sha256=4VHL3Khbh8qTBKZw7m-4gSUe0eGNfhks_SOpAxFENVQ,1241
|
55
54
|
ostk/astrodynamics/test/dynamics/test_position_derivative.py,sha256=JRuq-oRrJfisbN75OnE-ldm6TeYcIc0qYaGVMflbn2g,1610
|
56
55
|
ostk/astrodynamics/test/dynamics/test_tabulated.py,sha256=qFHA7nmcvJtWucpCOYHAFmNRtImhTGlAZ0CHGEadeX8,4029
|
57
56
|
ostk/astrodynamics/test/dynamics/test_third_body_gravity.py,sha256=7xBOKbVio-zZ2-QQaje152cP38n_ALAaR5x6QIdBmXE,1879
|
@@ -67,26 +66,26 @@ ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=tle6HVzMFM
|
|
67
66
|
ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
68
67
|
ostk/astrodynamics/test/flight/test_maneuver.py,sha256=HonAvD9qtax72lizoDLR6ELI-poC3LWk_umg-WYygYA,5388
|
69
68
|
ostk/astrodynamics/test/flight/test_profile.py,sha256=V1IekQv7Mju3fMlQZuY4vc1LPNVHsPMtjpT9zI2L_DE,7865
|
70
|
-
ostk/astrodynamics/test/flight/test_system.py,sha256=
|
69
|
+
ostk/astrodynamics/test/flight/test_system.py,sha256=5kJCULHdpkwAC7i6xLV7vdJnGfOdrOuhi0G22p_L160,1224
|
71
70
|
ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
72
|
-
ostk/astrodynamics/test/flight/system/test_propulsion_system.py,sha256=
|
73
|
-
ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=
|
71
|
+
ostk/astrodynamics/test/flight/system/test_propulsion_system.py,sha256=SoxOt-fjHvs_86f6Xb3jAsHDOShJ6Puz7eO5wrqibaM,1835
|
72
|
+
ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=dCFcl2RKiLxDKLI0sytPBXr3vHOFQIVNNCzpw5WzlAA,2437
|
74
73
|
ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py,sha256=QCk70dPcptvdpWQOxtYR0-iGnlbtOIx2V6oO0UhYIQ0,2426
|
75
74
|
ostk/astrodynamics/test/guidance_law/test_constant_thrust.py,sha256=YpMkMvat4YnE1Fyy5vZ1Sf3VvbvDaC_UvbIKNNCG_B4,2635
|
76
75
|
ostk/astrodynamics/test/guidance_law/test_qlaw.py,sha256=kZaBZeU_J8Qk2nFnnpSuu-2NXT_13g3vLamG--eZfeU,3634
|
77
76
|
ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
78
|
-
ostk/astrodynamics/test/solvers/test_finite_difference_solver.py,sha256=
|
77
|
+
ostk/astrodynamics/test/solvers/test_finite_difference_solver.py,sha256=0tcarIg2HTpcdzItWlL5Kd6q2nHcDBA8ZE0D3ugUN_s,5953
|
79
78
|
ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=OUb7QDwe5WNAtzOLBk-9cBL56PzzadZhXuBo_MiJ2K4,5189
|
80
79
|
ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
81
80
|
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py,sha256=d72J50UGG9m0Atei0UQ8sITU1WdJmws5xgUiacLZMbw,2515
|
82
|
-
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=
|
81
|
+
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=B5N0rIB4R_6t0s9eT_MRrC8-nGD4fRlJi8oETyHHGR8,3356
|
83
82
|
ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
84
83
|
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=vp7gDMtjO7nqERe0yq1OQZ0p4QRtxGTjGKN5-I3LWZM,6739
|
85
84
|
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=ALjMvzndO9r6dVVXllk0iqu61tEoqu2j25MtzEitDIQ,14076
|
86
85
|
ostk/astrodynamics/test/trajectory/test_segment.py,sha256=aXdF5CpNLwN_hKRU5sG3ID3hJR-NZ1_kgtNA-xHMBkM,12223
|
87
86
|
ostk/astrodynamics/test/trajectory/test_sequence.py,sha256=iCNDDqEGoo4WZIOOov0qKGzrxjg7yWVIk8ajfKMhgI4,14503
|
88
87
|
ostk/astrodynamics/test/trajectory/test_state.py,sha256=8B7KVlxZZPzwwsfCrTudeSkTTC2wAjXcglB0PZdjD1Y,15688
|
89
|
-
ostk/astrodynamics/test/trajectory/test_state_builder.py,sha256=
|
88
|
+
ostk/astrodynamics/test/trajectory/test_state_builder.py,sha256=LpCCYdCaLu_D2npm9wgA2sMlcekrtbRqP-afe5IE5L4,4871
|
90
89
|
ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
91
90
|
ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
92
91
|
ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=LTHDGW26I0kujifCXFMcUFu9yaHMeUoIM-7jt6kJkJU,2492
|
@@ -109,24 +108,24 @@ ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2Pw
|
|
109
108
|
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=jkyRr5NJQMaSpI3ey7cKcH0E-BlalaUlf_mZPYTSow8,11482
|
110
109
|
ostk/astrodynamics/test/trajectory/state/test_coordinate_broker.py,sha256=ho5FBfB3IvIjfQl7EYoIN1KBuH9lu76IiNMuweq8cqg,2844
|
111
110
|
ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py,sha256=uSvwLSZ332IreBkHD6PmAF2TFE6g_-o4tRLu9mR-IDg,1580
|
112
|
-
ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=
|
111
|
+
ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=0uh87wFRRF7UNh4cSI6WWAcAEF13TY4_VRBJ_gifnyY,9415
|
113
112
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_angular_velocity.py,sha256=xjyGREKpxDuT8gjtBPkV4osfW-6UyWv9hgvBXZVb_wk,625
|
114
113
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py,sha256=UEu9ApzQLmT87eeISw6_gcHTlX-4b2scIvHz-uE1p_c,393
|
115
114
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py,sha256=1p37_FYN85d9SrOqO3iCkNecovJJayhnFeZ4QCOw2ao,3528
|
116
115
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py,sha256=XvHdk1KjacTwtkgx2jUAc9I9N3nvjPDv03FAanpv8jQ,2702
|
117
116
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py,sha256=-kd5TZO5TICihbkqDTew2i_tDpggdpe3Yf23046FATM,3057
|
118
|
-
ostk/astrodynamics/trajectory/__init__.pyi,sha256=
|
117
|
+
ostk/astrodynamics/trajectory/__init__.pyi,sha256=39XTt6Bx1cHi7--wjSyL6I8xulbjLTZDuwDVlUc1aog,76440
|
119
118
|
ostk/astrodynamics/trajectory/orbit/__init__.pyi,sha256=5tSyJ6obT35BcXW8xQwcUhfTAeM9l9nWm72lAjRE7ik,13235
|
120
119
|
ostk/astrodynamics/trajectory/orbit/message/__init__.pyi,sha256=-GNBlYPrsjelhKxWorYQYhIWzFsibiIQNZvMXjhRpfM,77
|
121
|
-
ostk/astrodynamics/trajectory/orbit/message/spacex.pyi,sha256=
|
122
|
-
ostk/astrodynamics/trajectory/orbit/model/__init__.pyi,sha256=
|
120
|
+
ostk/astrodynamics/trajectory/orbit/message/spacex.pyi,sha256=TFNTSfGQ4CK6CKCeKwC5s2ul8FCShFE7wMegZTuA5e0,10816
|
121
|
+
ostk/astrodynamics/trajectory/orbit/model/__init__.pyi,sha256=RWqYL6g7m7DRPq0vZBIg1pvfmK281eiOGsTcuI71XvM,20850
|
123
122
|
ostk/astrodynamics/trajectory/orbit/model/brouwerLyddaneMean.pyi,sha256=8d-AiwUg-8HgU2m8bnQWetlawuhG7iPLLEeehcgph8k,6030
|
124
123
|
ostk/astrodynamics/trajectory/orbit/model/kepler.pyi,sha256=09xlx_7dTiivctFDyW_37s8pHfxN2Be8qd6HoQz8JxU,26906
|
125
124
|
ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi,sha256=2rxyPPsSCtsEKAShuZQbhZSybK01Q9u1CMieGjwWxN4,14313
|
126
|
-
ostk/astrodynamics/trajectory/state/__init__.pyi,sha256
|
127
|
-
ostk/astrodynamics/trajectory/state/coordinate_subset.pyi,sha256=
|
128
|
-
open_space_toolkit_astrodynamics-
|
129
|
-
open_space_toolkit_astrodynamics-
|
130
|
-
open_space_toolkit_astrodynamics-
|
131
|
-
open_space_toolkit_astrodynamics-
|
132
|
-
open_space_toolkit_astrodynamics-
|
125
|
+
ostk/astrodynamics/trajectory/state/__init__.pyi,sha256=-sq42oF9YgXSkP1LtPcSu7mmtpjUkEzjydD9VYdIQ6g,17672
|
126
|
+
ostk/astrodynamics/trajectory/state/coordinate_subset.pyi,sha256=iqoM-8RqiLNIsyiQXLfosvGO7ZP_KdQxrUWqiV04E1c,10566
|
127
|
+
open_space_toolkit_astrodynamics-15.1.0.dist-info/METADATA,sha256=52SOCFxHag6hxYwvZmHaYbAds9Sbi7efOiwqvUWHIj8,1913
|
128
|
+
open_space_toolkit_astrodynamics-15.1.0.dist-info/WHEEL,sha256=YBJ2ZW-2Jsns4y8CrUTcNUwZdcKvmfwW0KSU35zO7J8,109
|
129
|
+
open_space_toolkit_astrodynamics-15.1.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
130
|
+
open_space_toolkit_astrodynamics-15.1.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
131
|
+
open_space_toolkit_astrodynamics-15.1.0.dist-info/RECORD,,
|
Binary file
|
ostk/astrodynamics/__init__.pyi
CHANGED
ostk/astrodynamics/access.pyi
CHANGED
@@ -68,7 +68,7 @@ class AccessTarget:
|
|
68
68
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
69
69
|
...
|
70
70
|
@staticmethod
|
71
|
-
def from_lla(visibility_criterion:
|
71
|
+
def from_lla(visibility_criterion: typing.Any, lla: ostk.physics.coordinate.spherical.LLA, celestial: ostk.physics.environment.object.Celestial) -> AccessTarget:
|
72
72
|
"""
|
73
73
|
Create an AccessTarget from latitude, longitude, and altitude (LLA).
|
74
74
|
|
@@ -81,7 +81,7 @@ class AccessTarget:
|
|
81
81
|
AccessTarget: The created AccessTarget instance.
|
82
82
|
"""
|
83
83
|
@staticmethod
|
84
|
-
def from_position(visibility_criterion:
|
84
|
+
def from_position(visibility_criterion: typing.Any, position: ostk.physics.coordinate.Position) -> AccessTarget:
|
85
85
|
"""
|
86
86
|
Create an AccessTarget from a fixed position.
|
87
87
|
|
@@ -93,7 +93,7 @@ class AccessTarget:
|
|
93
93
|
AccessTarget: The created AccessTarget instance.
|
94
94
|
"""
|
95
95
|
@staticmethod
|
96
|
-
def from_trajectory(visibility_criterion:
|
96
|
+
def from_trajectory(visibility_criterion: typing.Any, trajectory: ostk.astrodynamics.Trajectory) -> AccessTarget:
|
97
97
|
"""
|
98
98
|
Create an AccessTarget from a trajectory.
|
99
99
|
|
@@ -168,7 +168,7 @@ class CDM:
|
|
168
168
|
@staticmethod
|
169
169
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
170
170
|
...
|
171
|
-
def __init__(self, ccsds_cdm_version: ostk.core.type.String, comment: ostk.core.type.String = ..., creation_date: ostk.physics.time.Instant, originator: ostk.core.type.String, message_for: ostk.core.type.String = ..., message_id: ostk.core.type.String) -> None:
|
171
|
+
def __init__(self, *, ccsds_cdm_version: ostk.core.type.String, comment: ostk.core.type.String = ..., creation_date: ostk.physics.time.Instant, originator: ostk.core.type.String, message_for: ostk.core.type.String = ..., message_id: ostk.core.type.String) -> None:
|
172
172
|
"""
|
173
173
|
Constructor.
|
174
174
|
|
@@ -222,7 +222,7 @@ class CDM:
|
|
222
222
|
@staticmethod
|
223
223
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
224
224
|
...
|
225
|
-
def __init__(self, comment: ostk.core.type.String = ..., object: ostk.core.type.String, object_designator: ostk.core.type.Integer, catalog_name: ostk.core.type.String = ..., object_name: ostk.core.type.String, international_designator: ostk.core.type.String, object_type: CDM.ObjectType, operator_contact_position: ostk.core.type.String = ..., operator_organization: ostk.core.type.String = ..., operator_phone: ostk.core.type.String = ..., operator_email: ostk.core.type.String = ..., ephemeris_name: ostk.core.type.String, covariance_method: ostk.core.type.String, maneuverable: ostk.core.type.String, orbit_center: ostk.core.type.String = ..., reference_frame: ostk.core.type.String, gravity_model: ostk.core.type.String = ..., atmospheric_model: ostk.core.type.String = ..., n_body_perturbations: ostk.core.type.String = ..., solar_radiation_pressure: bool = False, earth_tides: bool = False, in_track_thrust: bool = False) -> None:
|
225
|
+
def __init__(self, *, comment: ostk.core.type.String = ..., object: ostk.core.type.String, object_designator: ostk.core.type.Integer, catalog_name: ostk.core.type.String = ..., object_name: ostk.core.type.String, international_designator: ostk.core.type.String, object_type: CDM.ObjectType, operator_contact_position: ostk.core.type.String = ..., operator_organization: ostk.core.type.String = ..., operator_phone: ostk.core.type.String = ..., operator_email: ostk.core.type.String = ..., ephemeris_name: ostk.core.type.String, covariance_method: ostk.core.type.String, maneuverable: ostk.core.type.String, orbit_center: ostk.core.type.String = ..., reference_frame: ostk.core.type.String, gravity_model: ostk.core.type.String = ..., atmospheric_model: ostk.core.type.String = ..., n_body_perturbations: ostk.core.type.String = ..., solar_radiation_pressure: bool = False, earth_tides: bool = False, in_track_thrust: bool = False) -> None:
|
226
226
|
"""
|
227
227
|
Constructor.
|
228
228
|
|
@@ -425,7 +425,7 @@ class CDM:
|
|
425
425
|
@staticmethod
|
426
426
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
427
427
|
...
|
428
|
-
def __init__(self, comment: ostk.core.type.String = ..., time_of_closest_approach: ostk.physics.time.Instant, miss_distance: ostk.physics.unit.Length, relative_position: ostk.physics.coordinate.Position = ..., relative_velocity: ostk.physics.coordinate.Velocity = ..., start_screen_period: ostk.physics.time.Instant, end_screen_period: ostk.physics.time.Instant, screen_volume_frame: ostk.core.type.String = ..., screen_volume_shape: ostk.core.type.String = ..., screen_volume_x: ostk.core.type.Real = ..., screen_volume_y: ostk.core.type.Real = ..., screen_volume_z: ostk.core.type.Real = ..., screen_entry_time: ostk.physics.time.Instant, screen_exit_time: ostk.physics.time.Instant, collision_probability: ostk.core.type.Real, collision_probability_method: ostk.core.type.String) -> None:
|
428
|
+
def __init__(self, *, comment: ostk.core.type.String = ..., time_of_closest_approach: ostk.physics.time.Instant, miss_distance: ostk.physics.unit.Length, relative_position: ostk.physics.coordinate.Position = ..., relative_velocity: ostk.physics.coordinate.Velocity = ..., start_screen_period: ostk.physics.time.Instant, end_screen_period: ostk.physics.time.Instant, screen_volume_frame: ostk.core.type.String = ..., screen_volume_shape: ostk.core.type.String = ..., screen_volume_x: ostk.core.type.Real = ..., screen_volume_y: ostk.core.type.Real = ..., screen_volume_z: ostk.core.type.Real = ..., screen_entry_time: ostk.physics.time.Instant, screen_exit_time: ostk.physics.time.Instant, collision_probability: ostk.core.type.Real, collision_probability_method: ostk.core.type.String) -> None:
|
429
429
|
"""
|
430
430
|
Constructor.
|
431
431
|
|
@@ -579,7 +579,7 @@ class CDM:
|
|
579
579
|
Returns:
|
580
580
|
CDM: An undefined CDM.
|
581
581
|
"""
|
582
|
-
def __init__(self, header:
|
582
|
+
def __init__(self, header: typing.Any, relative_metadata: typing.Any, objects_metadata_array: list[...], objects_data_array: list[...]) -> None:
|
583
583
|
"""
|
584
584
|
Constructor.
|
585
585
|
|
ostk/astrodynamics/dynamics.pyi
CHANGED
@@ -281,7 +281,7 @@ class Thruster(ostk.astrodynamics.Dynamics):
|
|
281
281
|
@staticmethod
|
282
282
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
283
283
|
...
|
284
|
-
def __init__(self, satellite_system: ostk.astrodynamics.flight.system.SatelliteSystem, guidance_law:
|
284
|
+
def __init__(self, satellite_system: ostk.astrodynamics.flight.system.SatelliteSystem, guidance_law: typing.Any, name: ostk.core.type.String = ...) -> None:
|
285
285
|
"""
|
286
286
|
Constructor.
|
287
287
|
|
Binary file
|
ostk/astrodynamics/solver.pyi
CHANGED
@@ -97,7 +97,7 @@ class FiniteDifferenceSolver:
|
|
97
97
|
...
|
98
98
|
def __str__(self) -> str:
|
99
99
|
...
|
100
|
-
def compute_gradient(self, state:
|
100
|
+
def compute_gradient(self, state: typing.Any, generate_state_coordinates: typing.Callable[[..., ostk.physics.time.Instant], numpy.ndarray[numpy.float64[m, 1]]]) -> numpy.ndarray[numpy.float64[m, 1]]:
|
101
101
|
"""
|
102
102
|
Compute the gradient.
|
103
103
|
|
@@ -108,7 +108,7 @@ class FiniteDifferenceSolver:
|
|
108
108
|
Returns:
|
109
109
|
np.array: The gradient.
|
110
110
|
"""
|
111
|
-
def compute_jacobian(self, state:
|
111
|
+
def compute_jacobian(self, state: typing.Any, generate_state_coordinates: typing.Callable[[..., ostk.physics.time.Instant], numpy.ndarray[numpy.float64[m, 1]]]) -> numpy.ndarray[numpy.float64[m, n]]:
|
112
112
|
"""
|
113
113
|
Compute the jacobian.
|
114
114
|
|
@@ -120,7 +120,7 @@ class FiniteDifferenceSolver:
|
|
120
120
|
np.array: The jacobian.
|
121
121
|
"""
|
122
122
|
@typing.overload
|
123
|
-
def compute_state_transition_matrix(self, state:
|
123
|
+
def compute_state_transition_matrix(self, state: typing.Any, instants: list[ostk.physics.time.Instant], generate_states_coordinates: typing.Callable[[..., list[ostk.physics.time.Instant]], numpy.ndarray[numpy.float64[m, n]]]) -> list[numpy.ndarray[numpy.float64[m, n]]]:
|
124
124
|
"""
|
125
125
|
Compute a list of state transition matrix (STM) at the provided instants.
|
126
126
|
|
@@ -133,7 +133,7 @@ class FiniteDifferenceSolver:
|
|
133
133
|
np.array: The list of state transition matrices.
|
134
134
|
"""
|
135
135
|
@typing.overload
|
136
|
-
def compute_state_transition_matrix(self, state:
|
136
|
+
def compute_state_transition_matrix(self, state: typing.Any, instant: ostk.physics.time.Instant, generate_state_coordinates: typing.Callable[[..., ostk.physics.time.Instant], numpy.ndarray[numpy.float64[m, 1]]]) -> numpy.ndarray[numpy.float64[m, n]]:
|
137
137
|
"""
|
138
138
|
Compute the state transition matrix (STM).
|
139
139
|
|
@@ -2,17 +2,8 @@
|
|
2
2
|
|
3
3
|
import pytest
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
import ostk.mathematics as mathematics
|
8
|
-
|
9
|
-
import ostk.physics as physics
|
10
|
-
|
11
|
-
import ostk.astrodynamics as astrodynamics
|
12
|
-
|
13
|
-
Mass = physics.unit.Mass
|
14
|
-
|
15
|
-
PropulsionSystem = astrodynamics.flight.system.PropulsionSystem
|
5
|
+
from ostk.physics.unit import Mass
|
6
|
+
from ostk.astrodynamics.flight.system import PropulsionSystem
|
16
7
|
|
17
8
|
|
18
9
|
@pytest.fixture
|
@@ -4,20 +4,12 @@ import pytest
|
|
4
4
|
|
5
5
|
import numpy as np
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
Cuboid = mathematics.geometry.d3.object.Cuboid
|
14
|
-
Composite = mathematics.geometry.d3.object.Composite
|
15
|
-
Point = mathematics.geometry.d3.object.Point
|
16
|
-
|
17
|
-
Mass = physics.unit.Mass
|
18
|
-
|
19
|
-
SatelliteSystem = astrodynamics.flight.system.SatelliteSystem
|
20
|
-
PropulsionSystem = astrodynamics.flight.system.PropulsionSystem
|
7
|
+
from ostk.mathematics.geometry.d3.object import Cuboid
|
8
|
+
from ostk.mathematics.geometry.d3.object import Composite
|
9
|
+
from ostk.mathematics.geometry.d3.object import Point
|
10
|
+
from ostk.physics.unit import Mass
|
11
|
+
from ostk.astrodynamics.flight.system import SatelliteSystem
|
12
|
+
from ostk.astrodynamics.flight.system import PropulsionSystem
|
21
13
|
|
22
14
|
|
23
15
|
@pytest.fixture
|
@@ -2,21 +2,11 @@
|
|
2
2
|
|
3
3
|
import pytest
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
import ostk.astrodynamics as astrodynamics
|
12
|
-
|
13
|
-
Cuboid = mathematics.geometry.d3.object.Cuboid
|
14
|
-
Composite = mathematics.geometry.d3.object.Composite
|
15
|
-
Point = mathematics.geometry.d3.object.Point
|
16
|
-
|
17
|
-
Mass = physics.unit.Mass
|
18
|
-
|
19
|
-
System = astrodynamics.flight.System
|
5
|
+
from ostk.mathematics.geometry.d3.object import Cuboid
|
6
|
+
from ostk.mathematics.geometry.d3.object import Composite
|
7
|
+
from ostk.mathematics.geometry.d3.object import Point
|
8
|
+
from ostk.physics.unit import Mass
|
9
|
+
from ostk.astrodynamics.flight import System
|
20
10
|
|
21
11
|
|
22
12
|
@pytest.fixture
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Apache License 2.0
|
2
2
|
|
3
|
+
from typing import Callable
|
4
|
+
|
3
5
|
import pytest
|
4
6
|
import math
|
5
7
|
|
@@ -71,7 +73,7 @@ def instants(initial_instant: Instant) -> list[Instant]:
|
|
71
73
|
|
72
74
|
|
73
75
|
@pytest.fixture
|
74
|
-
def generate_states_coordinates() ->
|
76
|
+
def generate_states_coordinates() -> Callable:
|
75
77
|
def state_fn(state, instants) -> np.ndarray:
|
76
78
|
x0: float = state.get_coordinates()[0]
|
77
79
|
v0: float = state.get_coordinates()[1]
|
@@ -84,7 +86,7 @@ def generate_states_coordinates() -> callable:
|
|
84
86
|
x: float = x0 * math.cos(omega * t) + v0 / omega * math.sin(omega * t)
|
85
87
|
v: float = -x0 * omega * math.sin(omega * t) + v0 * math.cos(omega * t)
|
86
88
|
|
87
|
-
coordinates: list[float] = np.array([x, v])
|
89
|
+
coordinates: list[float] = list(np.array([x, v]).astype(float))
|
88
90
|
|
89
91
|
states_coordinates.append(coordinates)
|
90
92
|
|
@@ -94,7 +96,7 @@ def generate_states_coordinates() -> callable:
|
|
94
96
|
|
95
97
|
|
96
98
|
@pytest.fixture
|
97
|
-
def generate_state_coordinates() ->
|
99
|
+
def generate_state_coordinates() -> Callable:
|
98
100
|
def state_fn(state, instant) -> np.ndarray:
|
99
101
|
x0: float = state.get_coordinates()[0]
|
100
102
|
v0: float = state.get_coordinates()[1]
|
@@ -131,7 +133,7 @@ class TestFiniteDifferenceSolver:
|
|
131
133
|
finite_difference_solver: FiniteDifferenceSolver,
|
132
134
|
state: State,
|
133
135
|
instants: list[Instant],
|
134
|
-
generate_states_coordinates:
|
136
|
+
generate_states_coordinates: Callable,
|
135
137
|
):
|
136
138
|
stms: list[np.ndarray] = finite_difference_solver.compute_state_transition_matrix(
|
137
139
|
state=state,
|
@@ -150,7 +152,7 @@ class TestFiniteDifferenceSolver:
|
|
150
152
|
self,
|
151
153
|
finite_difference_solver: FiniteDifferenceSolver,
|
152
154
|
state: State,
|
153
|
-
generate_state_coordinates:
|
155
|
+
generate_state_coordinates: Callable,
|
154
156
|
instant: Instant,
|
155
157
|
):
|
156
158
|
stm: np.ndarray = finite_difference_solver.compute_state_transition_matrix(
|
@@ -168,7 +170,7 @@ class TestFiniteDifferenceSolver:
|
|
168
170
|
self,
|
169
171
|
finite_difference_solver: FiniteDifferenceSolver,
|
170
172
|
state: State,
|
171
|
-
generate_state_coordinates:
|
173
|
+
generate_state_coordinates: Callable,
|
172
174
|
):
|
173
175
|
gradient = finite_difference_solver.compute_gradient(
|
174
176
|
state=state,
|
@@ -181,7 +183,7 @@ class TestFiniteDifferenceSolver:
|
|
181
183
|
self,
|
182
184
|
finite_difference_solver: FiniteDifferenceSolver,
|
183
185
|
state: State,
|
184
|
-
generate_state_coordinates:
|
186
|
+
generate_state_coordinates: Callable,
|
185
187
|
):
|
186
188
|
gradient = finite_difference_solver.compute_jacobian(
|
187
189
|
state=state,
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Apache License 2.0
|
2
2
|
|
3
|
+
from typing import Callable
|
4
|
+
|
3
5
|
import pytest
|
4
6
|
|
5
7
|
from ostk.physics.time import Instant
|
@@ -15,7 +17,7 @@ def name() -> str:
|
|
15
17
|
|
16
18
|
|
17
19
|
@pytest.fixture
|
18
|
-
def evaluator() ->
|
20
|
+
def evaluator() -> Callable:
|
19
21
|
return lambda state: 5.0
|
20
22
|
|
21
23
|
|
@@ -31,7 +33,7 @@ def target(target_value: float) -> EventCondition.Target:
|
|
31
33
|
|
32
34
|
@pytest.fixture
|
33
35
|
def event_condition(
|
34
|
-
name: str, evaluator:
|
36
|
+
name: str, evaluator: Callable, target: EventCondition.Target
|
35
37
|
) -> EventCondition:
|
36
38
|
class MyEventCondition(EventCondition):
|
37
39
|
def is_satisfied(
|
@@ -61,7 +61,7 @@ class TestUtility:
|
|
61
61
|
position: Position,
|
62
62
|
environment: Environment,
|
63
63
|
):
|
64
|
-
time_lla_aer:
|
64
|
+
time_lla_aer: tuple[datetime, float, float, float, float, float, float] = (
|
65
65
|
utilities.compute_time_lla_aer_coordinates(state, position, environment)
|
66
66
|
)
|
67
67
|
|
@@ -36,6 +36,24 @@ def orbit(environment: Environment) -> Orbit:
|
|
36
36
|
)
|
37
37
|
|
38
38
|
|
39
|
+
@pytest.fixture
|
40
|
+
def orbits(environment: Environment) -> list[Orbit]:
|
41
|
+
return [
|
42
|
+
Orbit.sun_synchronous(
|
43
|
+
epoch=Instant.date_time(DateTime(2020, 1, 1, 0, 0, 0), Scale.UTC),
|
44
|
+
altitude=Length.kilometers(500.0),
|
45
|
+
local_time_at_descending_node=Time(14, 0, 0),
|
46
|
+
celestial_object=environment.access_celestial_object_with_name("Earth"),
|
47
|
+
),
|
48
|
+
Orbit.sun_synchronous(
|
49
|
+
epoch=Instant.date_time(DateTime(2020, 1, 1, 0, 0, 0), Scale.UTC),
|
50
|
+
altitude=Length.kilometers(500.0),
|
51
|
+
local_time_at_descending_node=Time(12, 0, 0),
|
52
|
+
celestial_object=environment.access_celestial_object_with_name("Earth"),
|
53
|
+
),
|
54
|
+
]
|
55
|
+
|
56
|
+
|
39
57
|
@pytest.fixture
|
40
58
|
def profile(orbit: Orbit) -> Profile:
|
41
59
|
return Profile.local_orbital_frame_pointing(
|
@@ -56,6 +74,8 @@ def interval() -> Interval:
|
|
56
74
|
def viewer(interval: Interval) -> Viewer:
|
57
75
|
return Viewer(
|
58
76
|
interval=interval,
|
77
|
+
zoom_to_entity=False,
|
78
|
+
track_entity=False,
|
59
79
|
)
|
60
80
|
|
61
81
|
|
@@ -74,6 +94,50 @@ class TestViewer:
|
|
74
94
|
assert "var widget = new Cesium.Viewer" in rendered_html
|
75
95
|
assert rendered_html.endswith("</script>")
|
76
96
|
|
97
|
+
def test_add_orbit_success(
|
98
|
+
self,
|
99
|
+
viewer: Viewer,
|
100
|
+
orbit: Orbit,
|
101
|
+
):
|
102
|
+
viewer.add_orbit(
|
103
|
+
orbit=orbit,
|
104
|
+
step=Duration.seconds(5.0),
|
105
|
+
show_orbital_track=True,
|
106
|
+
)
|
107
|
+
|
108
|
+
rendered_html: str = viewer.render()
|
109
|
+
|
110
|
+
assert rendered_html.startswith('<meta charset="utf-8">')
|
111
|
+
assert "var widget = new Cesium.Viewer" in rendered_html
|
112
|
+
assert "new Cesium.SampledProperty(Cesium.Cartesian3)" in rendered_html
|
113
|
+
assert " widget.entities.add({position: widget" in rendered_html
|
114
|
+
assert "widget.entities.add({polyline:" in rendered_html
|
115
|
+
assert "billboard: {image:" in rendered_html
|
116
|
+
assert rendered_html.endswith("</script>")
|
117
|
+
|
118
|
+
def test_add_orbit_multiple_success(
|
119
|
+
self,
|
120
|
+
viewer: Viewer,
|
121
|
+
orbits: list[Orbit],
|
122
|
+
):
|
123
|
+
for i, orbit in enumerate(orbits):
|
124
|
+
viewer.add_orbit(
|
125
|
+
orbit=orbit,
|
126
|
+
step=Duration.seconds(5.0),
|
127
|
+
show_orbital_track=True,
|
128
|
+
name=f"Satellite {i}",
|
129
|
+
)
|
130
|
+
|
131
|
+
rendered_html: str = viewer.render()
|
132
|
+
|
133
|
+
assert rendered_html.startswith('<meta charset="utf-8">')
|
134
|
+
assert "var widget = new Cesium.Viewer" in rendered_html
|
135
|
+
assert "new Cesium.SampledProperty(Cesium.Cartesian3)" in rendered_html
|
136
|
+
assert " widget.entities.add({position: widget" in rendered_html
|
137
|
+
assert "widget.entities.add({polyline:" in rendered_html
|
138
|
+
assert "billboard: {image:" in rendered_html
|
139
|
+
assert rendered_html.endswith("</script>")
|
140
|
+
|
77
141
|
def test_add_profile_success(
|
78
142
|
self,
|
79
143
|
viewer: Viewer,
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Apache License 2.0
|
2
2
|
|
3
|
+
from typing import Callable
|
4
|
+
|
3
5
|
import pytest
|
4
6
|
|
5
7
|
import numpy as np
|
@@ -99,7 +101,7 @@ def absolute_tolerance() -> float:
|
|
99
101
|
|
100
102
|
|
101
103
|
@pytest.fixture
|
102
|
-
def state_logger() ->
|
104
|
+
def state_logger() -> Callable:
|
103
105
|
def log_state(state: State) -> None:
|
104
106
|
print(state.get_coordinates())
|
105
107
|
|
@@ -255,7 +257,7 @@ class TestNumericalSolver:
|
|
255
257
|
def test_integrate_conditional_with_logger(
|
256
258
|
self,
|
257
259
|
initial_state: State,
|
258
|
-
state_logger:
|
260
|
+
state_logger: Callable,
|
259
261
|
custom_condition: RealCondition,
|
260
262
|
capsys,
|
261
263
|
):
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# Apache License 2.0
|
2
2
|
|
3
|
+
from typing import Callable
|
4
|
+
|
3
5
|
import pytest
|
4
6
|
|
5
7
|
from ostk.physics.time import Instant
|
@@ -26,7 +28,7 @@ def local_orbital_transform_provider_type() -> LocalOrbitalFrameTransformProvide
|
|
26
28
|
|
27
29
|
|
28
30
|
@pytest.fixture
|
29
|
-
def transform_generator() ->
|
31
|
+
def transform_generator() -> Callable:
|
30
32
|
return lambda state: Transform.identity(Transform.Type.passive)
|
31
33
|
|
32
34
|
|
@@ -107,7 +109,7 @@ class TestLocalOrbitalFrameFactory:
|
|
107
109
|
|
108
110
|
def test_custom_constructor(
|
109
111
|
self,
|
110
|
-
transform_generator:
|
112
|
+
transform_generator: Callable,
|
111
113
|
parent_frame: Frame,
|
112
114
|
):
|
113
115
|
assert (
|
@@ -185,7 +185,7 @@ class LocalOrbitalFrameFactory:
|
|
185
185
|
Returns:
|
186
186
|
Frame: The parent frame.
|
187
187
|
"""
|
188
|
-
def generate_frame(self, state:
|
188
|
+
def generate_frame(self, state: typing.Any) -> ostk.physics.coordinate.Frame:
|
189
189
|
"""
|
190
190
|
Generate a local orbital frame.
|
191
191
|
|
@@ -276,7 +276,7 @@ class LocalOrbitalFrameTransformProvider:
|
|
276
276
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
277
277
|
...
|
278
278
|
@staticmethod
|
279
|
-
def construct(type: LocalOrbitalFrameTransformProvider.Type, state:
|
279
|
+
def construct(type: LocalOrbitalFrameTransformProvider.Type, state: typing.Any) -> LocalOrbitalFrameTransformProvider:
|
280
280
|
"""
|
281
281
|
Constructs a local orbital frame transform provider for the provided type.
|
282
282
|
|
@@ -486,7 +486,7 @@ class Orbit(ostk.astrodynamics.Trajectory):
|
|
486
486
|
list[tuple[int, Pass]]: List of index-pass pairs.
|
487
487
|
"""
|
488
488
|
@staticmethod
|
489
|
-
def compute_passes_with_model(model:
|
489
|
+
def compute_passes_with_model(model: typing.Any, start_instant: ostk.physics.time.Instant, end_instant: ostk.physics.time.Instant, initial_revolution_number: ostk.core.type.Integer) -> list[...]:
|
490
490
|
"""
|
491
491
|
Compute passes with the given model for the provided interval.
|
492
492
|
|
@@ -590,7 +590,7 @@ class Orbit(ostk.astrodynamics.Trajectory):
|
|
590
590
|
def __eq__(self, arg0: Orbit) -> bool:
|
591
591
|
...
|
592
592
|
@typing.overload
|
593
|
-
def __init__(self, model:
|
593
|
+
def __init__(self, model: typing.Any, celestial_object: ostk.physics.environment.object.Celestial) -> None:
|
594
594
|
"""
|
595
595
|
Constructs an `Orbit` object.
|
596
596
|
|
@@ -792,14 +792,14 @@ class Propagator:
|
|
792
792
|
Returns:
|
793
793
|
NumericalSolver&: The numerical solver.
|
794
794
|
"""
|
795
|
-
def add_dynamics(self, dynamics:
|
795
|
+
def add_dynamics(self, dynamics: typing.Any) -> None:
|
796
796
|
"""
|
797
797
|
Add dynamics.
|
798
798
|
|
799
799
|
Args:
|
800
800
|
dynamics (Dynamics) The dynamics.
|
801
801
|
"""
|
802
|
-
def add_maneuver(self, maneuver:
|
802
|
+
def add_maneuver(self, maneuver: typing.Any, interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> None:
|
803
803
|
"""
|
804
804
|
Add a maneuver.
|
805
805
|
|
@@ -818,7 +818,7 @@ class Propagator:
|
|
818
818
|
Returns:
|
819
819
|
State: The state at the given instant.
|
820
820
|
"""
|
821
|
-
def calculate_state_to_condition(self, state: State, instant: ostk.physics.time.Instant, event_condition:
|
821
|
+
def calculate_state_to_condition(self, state: State, instant: ostk.physics.time.Instant, event_condition: typing.Any) -> state.NumericalSolver.ConditionSolution:
|
822
822
|
"""
|
823
823
|
Calculate the state up to a given event condition.
|
824
824
|
|
@@ -890,7 +890,7 @@ class Segment:
|
|
890
890
|
@staticmethod
|
891
891
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
892
892
|
...
|
893
|
-
def __init__(self, name: ostk.core.type.String, dynamics: list[...], states: list[State], condition_is_satisfied: bool, segment_type:
|
893
|
+
def __init__(self, name: ostk.core.type.String, dynamics: list[...], states: list[State], condition_is_satisfied: bool, segment_type: typing.Any) -> None:
|
894
894
|
"""
|
895
895
|
Construct a Segment Solution.
|
896
896
|
|
@@ -964,7 +964,7 @@ class Segment:
|
|
964
964
|
Returns:
|
965
965
|
dict[Dynamics, np.ndarray]: The list of matrices with individual dynamics contributions.
|
966
966
|
"""
|
967
|
-
def get_dynamics_acceleration_contribution(self, dynamics:
|
967
|
+
def get_dynamics_acceleration_contribution(self, dynamics: typing.Any, frame: ostk.physics.coordinate.Frame) -> numpy.ndarray[numpy.float64[m, n]]:
|
968
968
|
"""
|
969
969
|
Compute the contribution of the provided dynamics to the acceleration in the provided frame for all states associated with the segment.
|
970
970
|
|
@@ -975,7 +975,7 @@ class Segment:
|
|
975
975
|
Returns:
|
976
976
|
np.ndarray: The matrix of dynamics contributions to acceleration.
|
977
977
|
"""
|
978
|
-
def get_dynamics_contribution(self, dynamics:
|
978
|
+
def get_dynamics_contribution(self, dynamics: typing.Any, frame: ostk.physics.coordinate.Frame, coordinate_subsets: list[state.CoordinateSubset] = []) -> numpy.ndarray[numpy.float64[m, n]]:
|
979
979
|
"""
|
980
980
|
Compute the contribution of the provided dynamics in the provided frame for all states associated with the segment.
|
981
981
|
|
@@ -1098,7 +1098,7 @@ class Segment:
|
|
1098
1098
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
1099
1099
|
...
|
1100
1100
|
@staticmethod
|
1101
|
-
def coast(name: ostk.core.type.String, event_condition:
|
1101
|
+
def coast(name: ostk.core.type.String, event_condition: typing.Any, dynamics: list[...], numerical_solver: state.NumericalSolver) -> Segment:
|
1102
1102
|
"""
|
1103
1103
|
Create a coast segment.
|
1104
1104
|
|
@@ -1112,7 +1112,7 @@ class Segment:
|
|
1112
1112
|
Segment: The coast segment.
|
1113
1113
|
"""
|
1114
1114
|
@staticmethod
|
1115
|
-
def maneuver(name: ostk.core.type.String, event_condition:
|
1115
|
+
def maneuver(name: ostk.core.type.String, event_condition: typing.Any, thruster_dynamics: typing.Any, dynamics: list[...], numerical_solver: state.NumericalSolver) -> Segment:
|
1116
1116
|
"""
|
1117
1117
|
Create a maneuver segment.
|
1118
1118
|
|
@@ -1320,14 +1320,14 @@ class Sequence:
|
|
1320
1320
|
...
|
1321
1321
|
def __str__(self: typing.Sequence) -> str:
|
1322
1322
|
...
|
1323
|
-
def add_coast_segment(self: typing.Sequence, event_condition:
|
1323
|
+
def add_coast_segment(self: typing.Sequence, event_condition: typing.Any) -> None:
|
1324
1324
|
"""
|
1325
1325
|
Add a coast segment.
|
1326
1326
|
|
1327
1327
|
Args:
|
1328
1328
|
event_condition (EventCondition): The event condition.
|
1329
1329
|
"""
|
1330
|
-
def add_maneuver_segment(self: typing.Sequence, event_condition:
|
1330
|
+
def add_maneuver_segment(self: typing.Sequence, event_condition: typing.Any, thruster_dynamics: typing.Any) -> None:
|
1331
1331
|
"""
|
1332
1332
|
Add a maneuver segment.
|
1333
1333
|
|
@@ -1388,7 +1388,7 @@ class Sequence:
|
|
1388
1388
|
Returns:
|
1389
1389
|
SequenceSolution: The sequence solution.
|
1390
1390
|
"""
|
1391
|
-
def solve_to_condition(self: typing.Sequence, state: State, event_condition:
|
1391
|
+
def solve_to_condition(self: typing.Sequence, state: State, event_condition: typing.Any, maximum_propagation_duration_limit: ostk.physics.time.Duration = ...) -> Sequence.Solution:
|
1392
1392
|
"""
|
1393
1393
|
Solve the sequence until the event condition is met.
|
1394
1394
|
|
@@ -1500,7 +1500,7 @@ class State:
|
|
1500
1500
|
attitude_frame (Frame): The attitude reference frame
|
1501
1501
|
"""
|
1502
1502
|
@typing.overload
|
1503
|
-
def __init__(self, instant: ostk.physics.time.Instant, coordinates: numpy.ndarray[numpy.float64[m, 1]], frame: ostk.physics.coordinate.Frame, coordinate_broker:
|
1503
|
+
def __init__(self, instant: ostk.physics.time.Instant, coordinates: numpy.ndarray[numpy.float64[m, 1]], frame: ostk.physics.coordinate.Frame, coordinate_broker: typing.Any) -> None:
|
1504
1504
|
"""
|
1505
1505
|
Constructor with a pre-defined Coordinates Broker.
|
1506
1506
|
|
@@ -1532,7 +1532,7 @@ class State:
|
|
1532
1532
|
...
|
1533
1533
|
def __sub__(self, arg0: State) -> State:
|
1534
1534
|
...
|
1535
|
-
def extract_coordinate(self, coordinate_subset:
|
1535
|
+
def extract_coordinate(self, coordinate_subset: typing.Any) -> numpy.ndarray[numpy.float64[m, 1]]:
|
1536
1536
|
"""
|
1537
1537
|
Extract the coordinates associated to a subset of the state.
|
1538
1538
|
|
@@ -1615,7 +1615,7 @@ class State:
|
|
1615
1615
|
Returns:
|
1616
1616
|
Velocity: The velocity of the state.
|
1617
1617
|
"""
|
1618
|
-
def has_subset(self, subset:
|
1618
|
+
def has_subset(self, subset: typing.Any) -> bool:
|
1619
1619
|
"""
|
1620
1620
|
Check if the state has a given subset.
|
1621
1621
|
|
@@ -1647,7 +1647,6 @@ class StateBuilder:
|
|
1647
1647
|
|
1648
1648
|
This class makes it convenient to build a `State` object.
|
1649
1649
|
|
1650
|
-
|
1651
1650
|
"""
|
1652
1651
|
__hash__: typing.ClassVar[None] = None
|
1653
1652
|
@staticmethod
|
@@ -1688,7 +1687,7 @@ class StateBuilder:
|
|
1688
1687
|
coordinate_subsets list[CoordinateSubset]: The coordinate subsets.
|
1689
1688
|
|
1690
1689
|
Returns:
|
1691
|
-
StateBuilder
|
1690
|
+
StateBuilder
|
1692
1691
|
"""
|
1693
1692
|
@typing.overload
|
1694
1693
|
def __init__(self, frame: ostk.physics.coordinate.Frame, coordinate_broker: state.CoordinateBroker) -> None:
|
@@ -1777,6 +1776,13 @@ class StateBuilder:
|
|
1777
1776
|
Returns:
|
1778
1777
|
Frame: The reference frame of the `StateBuilder`.
|
1779
1778
|
"""
|
1779
|
+
def get_size(self) -> int:
|
1780
|
+
"""
|
1781
|
+
Get the total size of all coordinates from all subsets.
|
1782
|
+
|
1783
|
+
Returns:
|
1784
|
+
Size: The total size of all coordinates from all subsets.
|
1785
|
+
"""
|
1780
1786
|
def is_defined(self) -> bool:
|
1781
1787
|
"""
|
1782
1788
|
Check if the `StateBuilder` is defined.
|
@@ -148,7 +148,7 @@ class Kepler(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
148
148
|
def __eq__(self, arg0: Kepler) -> bool:
|
149
149
|
...
|
150
150
|
@typing.overload
|
151
|
-
def __init__(self, coe:
|
151
|
+
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:
|
152
152
|
"""
|
153
153
|
Constructor.
|
154
154
|
|
@@ -162,7 +162,7 @@ class Kepler(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
162
162
|
perturbation_type (PerturbationType): The perturbation type.
|
163
163
|
"""
|
164
164
|
@typing.overload
|
165
|
-
def __init__(self, coe:
|
165
|
+
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:
|
166
166
|
"""
|
167
167
|
Constructor.
|
168
168
|
|
@@ -278,7 +278,7 @@ class Propagated(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
278
278
|
def __eq__(self, arg0: Propagated) -> bool:
|
279
279
|
...
|
280
280
|
@typing.overload
|
281
|
-
def __init__(self, propagator:
|
281
|
+
def __init__(self, propagator: typing.Any, state: ostk.astrodynamics.trajectory.State, initial_revolution_number: ostk.core.type.Integer = 1) -> None:
|
282
282
|
"""
|
283
283
|
Constructor.
|
284
284
|
|
@@ -288,7 +288,7 @@ class Propagated(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
288
288
|
initial_revolution_number (int, optional): The initial revolution number. Defaults to 1.
|
289
289
|
"""
|
290
290
|
@typing.overload
|
291
|
-
def __init__(self, propagator:
|
291
|
+
def __init__(self, propagator: typing.Any, state_array: list[ostk.astrodynamics.trajectory.State], initial_revolution_number: ostk.core.type.Integer = 1) -> None:
|
292
292
|
"""
|
293
293
|
Constructor.
|
294
294
|
|
@@ -387,7 +387,7 @@ class SGP4(ostk.astrodynamics.trajectory.orbit.OrbitModel):
|
|
387
387
|
@staticmethod
|
388
388
|
def _pybind11_conduit_v1_(*args, **kwargs):
|
389
389
|
...
|
390
|
-
def __init__(self, tle:
|
390
|
+
def __init__(self, tle: typing.Any) -> None:
|
391
391
|
"""
|
392
392
|
Constructor.
|
393
393
|
|
@@ -44,14 +44,14 @@ class CoordinateBroker:
|
|
44
44
|
Returns:
|
45
45
|
list[CoordinateSubset]: The list of coordinate subsets.
|
46
46
|
"""
|
47
|
-
def add_subset(self, coordinate_subset:
|
47
|
+
def add_subset(self, coordinate_subset: typing.Any) -> int:
|
48
48
|
"""
|
49
49
|
Add a coordinate subset.
|
50
50
|
|
51
51
|
Args:
|
52
52
|
coordinate_subset (CoordinateSubset): The coordinate subset to add.
|
53
53
|
"""
|
54
|
-
def extract_coordinate(self, coordinates: numpy.ndarray[numpy.float64[m, 1]], coordinate_subset:
|
54
|
+
def extract_coordinate(self, coordinates: numpy.ndarray[numpy.float64[m, 1]], coordinate_subset: typing.Any) -> numpy.ndarray[numpy.float64[m, 1]]:
|
55
55
|
"""
|
56
56
|
Extract the coordinates of a subset from a full coordinates vector.
|
57
57
|
|
@@ -94,7 +94,7 @@ class CoordinateBroker:
|
|
94
94
|
Returns:
|
95
95
|
list[CoordinateSubset]: The list of coordinate subsets.
|
96
96
|
"""
|
97
|
-
def has_subset(self, coordinate_subset:
|
97
|
+
def has_subset(self, coordinate_subset: typing.Any) -> bool:
|
98
98
|
"""
|
99
99
|
Check if the coordinate broker has a given coordinate subset.
|
100
100
|
|
@@ -384,7 +384,7 @@ class NumericalSolver(ostk.mathematics.solver.NumericalSolver):
|
|
384
384
|
list[State]: The states at the requested times.
|
385
385
|
"""
|
386
386
|
@typing.overload
|
387
|
-
def integrate_time(self, state: ostk.astrodynamics.trajectory.State, instant: ostk.physics.time.Instant, system_of_equations: typing.Any, event_condition:
|
387
|
+
def integrate_time(self, state: ostk.astrodynamics.trajectory.State, instant: ostk.physics.time.Instant, system_of_equations: typing.Any, event_condition: typing.Any) -> NumericalSolver.ConditionSolution:
|
388
388
|
"""
|
389
389
|
Integrate the trajectory to a given instant, with an event condition.
|
390
390
|
|
@@ -25,7 +25,7 @@ class AngularVelocity(ostk.astrodynamics.trajectory.state.CoordinateSubset):
|
|
25
25
|
Returns:
|
26
26
|
AngularVelocity: The default Angular velocity subset.
|
27
27
|
"""
|
28
|
-
def __init__(self, attitude_quaternion:
|
28
|
+
def __init__(self, attitude_quaternion: typing.Any, name: ostk.core.type.String) -> None:
|
29
29
|
"""
|
30
30
|
Constructor.
|
31
31
|
|
ostk/astrodynamics/viewer.py
CHANGED
@@ -24,11 +24,16 @@ from ostk.physics.coordinate import Frame
|
|
24
24
|
from ostk.physics.coordinate.spherical import LLA
|
25
25
|
|
26
26
|
from ostk.astrodynamics.flight import Profile
|
27
|
+
from ostk.astrodynamics.trajectory import Orbit
|
27
28
|
from ostk.astrodynamics.trajectory import State
|
28
29
|
|
29
30
|
from .converters import coerce_to_datetime
|
30
31
|
from .utilities import lla_from_position
|
31
32
|
|
33
|
+
DEFAULT_SATELLITE_IMAGE: str = (
|
34
|
+
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADJSURBVDhPnZHRDcMgEEMZjVEYpaNklIzSEfLfD4qNnXAJSFWfhO7w2Zc0Tf9QG2rXrEzSUeZLOGm47WoH95x3Hl3jEgilvDgsOQUTqsNl68ezEwn1vae6lceSEEYvvWNT/Rxc4CXQNGadho1NXoJ+9iaqc2xi2xbt23PJCDIB6TQjOC6Bho/sDy3fBQT8PrVhibU7yBFcEPaRxOoeTwbwByCOYf9VGp1BYI1BA+EeHhmfzKbBoJEQwn1yzUZtyspIQUha85MpkNIXB7GizqDEECsAAAAASUVORK5CYII="
|
35
|
+
)
|
36
|
+
|
32
37
|
|
33
38
|
@dataclass
|
34
39
|
class Sensor:
|
@@ -57,6 +62,8 @@ class Viewer:
|
|
57
62
|
cesium_token: str | None = None,
|
58
63
|
width: str = "1500px",
|
59
64
|
height: str = "800px",
|
65
|
+
zoom_to_entity: bool = True,
|
66
|
+
track_entity: bool = True,
|
60
67
|
) -> None:
|
61
68
|
self._interval: Interval = interval
|
62
69
|
|
@@ -81,8 +88,8 @@ class Viewer:
|
|
81
88
|
scene_mode_picker=False,
|
82
89
|
selection_indicator=False,
|
83
90
|
scene3d_only=True,
|
84
|
-
zoom_to_entity=
|
85
|
-
track_entity=
|
91
|
+
zoom_to_entity=zoom_to_entity,
|
92
|
+
track_entity=track_entity,
|
86
93
|
default_access_token=cesium_token,
|
87
94
|
)
|
88
95
|
|
@@ -90,6 +97,73 @@ class Viewer:
|
|
90
97
|
def interval(self) -> Interval:
|
91
98
|
return self._interval
|
92
99
|
|
100
|
+
def add_orbit(
|
101
|
+
self,
|
102
|
+
orbit: Orbit,
|
103
|
+
step: Duration,
|
104
|
+
name: str = "Satellite",
|
105
|
+
show_orbital_track: bool = False,
|
106
|
+
color: str | None = None,
|
107
|
+
image: str | None = None,
|
108
|
+
) -> None:
|
109
|
+
"""
|
110
|
+
Add Orbit to Viewer.
|
111
|
+
|
112
|
+
Args:
|
113
|
+
orbit (Orbit): Orbit to be added.
|
114
|
+
step (Duration): Step between two consecutive states.
|
115
|
+
name (str, optional): Name of the orbit. Defaults to "Satellite".
|
116
|
+
show_orbital_track (bool, optional): Whether to show the orbital track. Defaults to False.
|
117
|
+
color (str, optional): Color of the orbit. Defaults to None.
|
118
|
+
image (str, optional): Logo to be added. Defaults to None.
|
119
|
+
"""
|
120
|
+
instants: list[Instant] = self._interval.generate_grid(step)
|
121
|
+
states: list[State] = orbit.get_states_at(instants)
|
122
|
+
llas: list[LLA] = _generate_llas(states)
|
123
|
+
|
124
|
+
cesium_positions: cesiumpy.SampledPositionProperty = (
|
125
|
+
_generate_sampled_position_from_states(states)
|
126
|
+
)
|
127
|
+
|
128
|
+
self._viewer.entities.add(
|
129
|
+
cesiumpy.Billboard(
|
130
|
+
name=name,
|
131
|
+
position=cesium_positions,
|
132
|
+
image=image or DEFAULT_SATELLITE_IMAGE,
|
133
|
+
)
|
134
|
+
)
|
135
|
+
|
136
|
+
self._viewer.entities.add(
|
137
|
+
cesiumpy.Label(
|
138
|
+
position=cesium_positions,
|
139
|
+
text=name,
|
140
|
+
scale=1.0,
|
141
|
+
fill_color=color or cesiumpy.color.WHITE,
|
142
|
+
pixel_offset=[0.0, 20.0],
|
143
|
+
)
|
144
|
+
)
|
145
|
+
|
146
|
+
if show_orbital_track:
|
147
|
+
self._viewer.entities.add(
|
148
|
+
cesiumpy.Polyline(
|
149
|
+
positions=cesiumpy.entities.cartesian.Cartesian3Array(
|
150
|
+
functools.reduce(
|
151
|
+
operator.iconcat,
|
152
|
+
[
|
153
|
+
[
|
154
|
+
float(lla.get_longitude().in_degrees()),
|
155
|
+
float(lla.get_latitude().in_degrees()),
|
156
|
+
float(lla.get_altitude().in_meters()),
|
157
|
+
]
|
158
|
+
for lla in llas
|
159
|
+
],
|
160
|
+
[],
|
161
|
+
)
|
162
|
+
),
|
163
|
+
width=1,
|
164
|
+
)
|
165
|
+
)
|
166
|
+
|
93
167
|
def add_profile(
|
94
168
|
self,
|
95
169
|
profile: Profile,
|
@@ -144,7 +218,7 @@ class Viewer:
|
|
144
218
|
)
|
145
219
|
|
146
220
|
satellite = cesiumpy.Satellite(
|
147
|
-
position=
|
221
|
+
position=_generate_sampled_position_from_llas(instants, llas),
|
148
222
|
orientation=_generate_sampled_orientation(states),
|
149
223
|
availability=cesiumpy.TimeIntervalCollection(
|
150
224
|
intervals=[
|
@@ -294,7 +368,7 @@ def _generate_llas(states: list[State]) -> list[LLA]:
|
|
294
368
|
]
|
295
369
|
|
296
370
|
|
297
|
-
def
|
371
|
+
def _generate_sampled_position_from_llas(
|
298
372
|
instants: list[Instant],
|
299
373
|
llas: list[LLA],
|
300
374
|
) -> cesiumpy.SampledPositionProperty:
|
@@ -344,6 +418,33 @@ def _generate_sampled_orientation(states: list[State]) -> cesiumpy.SampledProper
|
|
344
418
|
)
|
345
419
|
|
346
420
|
|
421
|
+
def _generate_sampled_position_from_states(
|
422
|
+
states: list[State],
|
423
|
+
) -> cesiumpy.SampledPositionProperty:
|
424
|
+
"""
|
425
|
+
Generate a sampled position property from a list of OSTk States.
|
426
|
+
|
427
|
+
Args:
|
428
|
+
states (list[State]): A list of OSTk States.
|
429
|
+
|
430
|
+
Returns:
|
431
|
+
cesiumpy.SampledPositionProperty: Sampled position property.
|
432
|
+
"""
|
433
|
+
|
434
|
+
return cesiumpy.SampledPositionProperty(
|
435
|
+
samples=[
|
436
|
+
(
|
437
|
+
coerce_to_datetime(state.get_instant()),
|
438
|
+
_cesium_from_ostk_position(
|
439
|
+
position=state.in_frame(Frame.ITRF()).get_position()
|
440
|
+
),
|
441
|
+
None,
|
442
|
+
)
|
443
|
+
for state in states
|
444
|
+
],
|
445
|
+
)
|
446
|
+
|
447
|
+
|
347
448
|
def _cesium_from_ostk_position(
|
348
449
|
position: Position,
|
349
450
|
instant: Instant | None = None,
|
ostk/astrodynamics/py.typed
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|