open-space-toolkit-astrodynamics 16.8.0__py39-none-manylinux2014_aarch64.whl → 16.10.0__py39-none-manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. {open_space_toolkit_astrodynamics-16.8.0.dist-info → open_space_toolkit_astrodynamics-16.10.0.dist-info}/METADATA +1 -1
  2. {open_space_toolkit_astrodynamics-16.8.0.dist-info → open_space_toolkit_astrodynamics-16.10.0.dist-info}/RECORD +22 -17
  3. ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-aarch64-linux-gnu.so +0 -0
  4. ostk/astrodynamics/__init__.pyi +4 -4
  5. ostk/astrodynamics/conjunction/__init__.pyi +119 -1
  6. ostk/astrodynamics/conjunction/close_approach.pyi +85 -0
  7. ostk/astrodynamics/dynamics.pyi +1 -1
  8. ostk/astrodynamics/flight/__init__.pyi +29 -1
  9. ostk/astrodynamics/guidance_law.pyi +82 -7
  10. ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.16 +0 -0
  11. ostk/astrodynamics/test/conjunction/close_approach/__init__.py +0 -0
  12. ostk/astrodynamics/test/conjunction/close_approach/test_generator.py +228 -0
  13. ostk/astrodynamics/test/conjunction/test_close_approach.py +244 -0
  14. ostk/astrodynamics/test/dynamics/test_thruster.py +21 -6
  15. ostk/astrodynamics/test/flight/test_maneuver.py +37 -3
  16. ostk/astrodynamics/test/guidance_law/test_constant_thrust.py +87 -1
  17. ostk/astrodynamics/test/guidance_law/test_heterogeneous_guidance_law.py +164 -0
  18. ostk/astrodynamics/test/trajectory/test_segment.py +107 -2
  19. ostk/astrodynamics/trajectory/__init__.pyi +24 -0
  20. {open_space_toolkit_astrodynamics-16.8.0.dist-info → open_space_toolkit_astrodynamics-16.10.0.dist-info}/WHEEL +0 -0
  21. {open_space_toolkit_astrodynamics-16.8.0.dist-info → open_space_toolkit_astrodynamics-16.10.0.dist-info}/top_level.txt +0 -0
  22. {open_space_toolkit_astrodynamics-16.8.0.dist-info → open_space_toolkit_astrodynamics-16.10.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: 16.8.0
3
+ Version: 16.10.0
4
4
  Summary: Orbit, attitude, access.
5
5
  Author: Open Space Collective
6
6
  Author-email: contact@open-space-collective.org
@@ -1,27 +1,28 @@
1
1
  ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
2
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-aarch64-linux-gnu.so,sha256=ZAj299S7_NjLLlyr62LgNv83jPcK3ExzHllADzfpGsE,2656592
2
+ ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-39-aarch64-linux-gnu.so,sha256=itykLfK7NUfUwRudmhRpKM65LIzifVzyn3pDEaEacMU,2763144
3
3
  ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
4
- ostk/astrodynamics/__init__.pyi,sha256=9gXFGsDnV2gM50RtM6qoswb8QqGQ4XZgdBUzTBXVsyw,32224
4
+ ostk/astrodynamics/__init__.pyi,sha256=kslygAgEQ1KVaAkyiyj3_c-DqtiP2bgXS02Cb2CpS20,32224
5
5
  ostk/astrodynamics/access.pyi,sha256=pp2t81kKH4sP4BcGb8nAZHmpwhISjFODMpbZ4ucLFAw,25157
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=v-36rBHKdf7kQw1jdvJWrvkR-ZjW5DKRchtTEJWhdxk,25012
9
9
  ostk/astrodynamics/display.py,sha256=D9PrX1G-XmXk2j3Jl7Na7q52PTc4WKWB1-oRFJPT6w0,8606
10
- ostk/astrodynamics/dynamics.pyi,sha256=gZ95KoGex4SB-1z6yMrngkZN1Ir9X6bEmrZgdLxq1ZE,13270
10
+ ostk/astrodynamics/dynamics.pyi,sha256=12t5esJJ18YmCeD2-8Glcb4JPOs6vl2c6QeUaDCel9E,13308
11
11
  ostk/astrodynamics/eclipse.pyi,sha256=Q8fzdukA7fyxbUM3wjEXAHukT-Ovl4FM00NbjsMPnUM,3211
12
12
  ostk/astrodynamics/estimator.pyi,sha256=MnahWzp8aACxrNKWlYRsgQr5zpBxogNr-yPm7hJob5k,14000
13
13
  ostk/astrodynamics/event_condition.pyi,sha256=2c_1Sq7tkYKeAA_aRWBi43KDQXXxu6EMSmUpEWz_Fa4,45814
14
- ostk/astrodynamics/guidance_law.pyi,sha256=rVmbpV2Y5FsIXejaInxINS67nVHmTIxVEkhaDIn17SA,12171
15
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.16,sha256=r2QRZUN_s_w90Bu6E5_BWFfIdnfdGlU6w3TEnue8xSU,4027856
14
+ ostk/astrodynamics/guidance_law.pyi,sha256=Xtqneu5PLpidOoSH4YIAY3D8rWZ0QH_ESqEdfbiTBVQ,16936
15
+ ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.16,sha256=1nMVpUhldGatpn-sRCHcYhF6fQ8P4hwU9DXAmH3jkvQ,4078240
16
16
  ostk/astrodynamics/solver.pyi,sha256=dRdR9RLqwSaBBX_ZRmpeBv06WvM_BFNo3WUdNzorYTY,17805
17
17
  ostk/astrodynamics/utilities.py,sha256=y8mr3M46J5z-GhS1oIEnuEJA6otwcyJ9YDhvn_5JxHM,6976
18
18
  ostk/astrodynamics/viewer.py,sha256=SlKyOWKjaF3V9HFB3I7ZgHy7n_GLeHTWM9q2wXkpxe8,27077
19
- ostk/astrodynamics/conjunction/__init__.pyi,sha256=HFvWl8bCmrq3cBkUh5X5RGIh8webmVGxaZdpsz3WN-E,79
19
+ ostk/astrodynamics/conjunction/__init__.pyi,sha256=TEfTmgCRKr68B1GPJscDOgI130jQf7GLbtoKZPtx_SU,4918
20
+ ostk/astrodynamics/conjunction/close_approach.pyi,sha256=lDGzezf8ELdReQ0TGaqW36gpS9TwBN9QiCNrMi9X8v0,3690
20
21
  ostk/astrodynamics/conjunction/message/__init__.pyi,sha256=5H__sg_QUx7ybf9jtVWvXzrUHeK3ECotfhddAdHjJUc,75
21
22
  ostk/astrodynamics/conjunction/message/ccsds.pyi,sha256=1Peto19hRqlD7KHf1cyLP3CT4OAKzwtemqvO6_4FZ0g,28162
22
23
  ostk/astrodynamics/data/__init__.pyi,sha256=4l_mfVbnU_L7wImwgTCe8fVI81gK_tUmd0z7BY9lLi8,81
23
24
  ostk/astrodynamics/data/provider.pyi,sha256=O4Lg9FBq9itufgATnic5SMg90pn8vJJJMUdNcWP72NI,1492
24
- ostk/astrodynamics/flight/__init__.pyi,sha256=OnR2OxLLvmVSp18nLzM7R_QHoJvoikIaz2qiIZgH0bA,23606
25
+ ostk/astrodynamics/flight/__init__.pyi,sha256=VL6OTS5uFz9xEVQ-enHz5FinFTS283nBAztEn4uGNJw,25865
25
26
  ostk/astrodynamics/flight/system.pyi,sha256=WVxy6Oe4q3C81c0AOxSwAmnwUHcpXO7JCEvESjs2g4A,10508
26
27
  ostk/astrodynamics/flight/profile/__init__.pyi,sha256=WBTG17V59UwD-X1r6TOrXT_rA3WjKY-2ML1cWfji_4g,3688
27
28
  ostk/astrodynamics/flight/profile/model.pyi,sha256=wwnVaTjTytxPqKyNo1tpdZRedabQlIHgyxfT0nivO5M,7777
@@ -44,6 +45,9 @@ ostk/astrodynamics/test/test_viewer.py,sha256=6IxHjSrwnLkmLiTTzRcnwAdEeWdIF_b2Kj
44
45
  ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
45
46
  ostk/astrodynamics/test/access/test_generator.py,sha256=i7TnM80kF0Q_9KmyoqKt5n1ufg3ZjAIEMPVVds8ZDdI,10315
46
47
  ostk/astrodynamics/test/access/test_visibility_criterion.py,sha256=VA6WDQTj3q-f2YGIIkrrNp8G23Nf_0g9nKmfZAgAlWQ,6568
48
+ ostk/astrodynamics/test/conjunction/test_close_approach.py,sha256=vuvVNj2xG8MhM-N5zsAtH7kFciM0V1KMWDd_vNvkCMg,6864
49
+ ostk/astrodynamics/test/conjunction/close_approach/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ ostk/astrodynamics/test/conjunction/close_approach/test_generator.py,sha256=NEDVdhL_Ll2iTo8dCBFuLdE1soFC0FUlx-tuuA8tGIg,6536
47
51
  ostk/astrodynamics/test/conjunction/message/ccsds/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
48
52
  ostk/astrodynamics/test/conjunction/message/ccsds/conftest.py,sha256=xyTd24828Ue2HgOWY8UhizIc5mzgRgoH2VSOfVfKCdw,14632
49
53
  ostk/astrodynamics/test/conjunction/message/ccsds/test_cdm.py,sha256=ztpnOHI3ZiIV0QwijJ6Si_lIna8jLZF45r1KtPVK4ws,18514
@@ -56,7 +60,7 @@ ostk/astrodynamics/test/dynamics/test_dynamics.py,sha256=4VHL3Khbh8qTBKZw7m-4gSU
56
60
  ostk/astrodynamics/test/dynamics/test_position_derivative.py,sha256=JRuq-oRrJfisbN75OnE-ldm6TeYcIc0qYaGVMflbn2g,1610
57
61
  ostk/astrodynamics/test/dynamics/test_tabulated.py,sha256=qFHA7nmcvJtWucpCOYHAFmNRtImhTGlAZ0CHGEadeX8,4029
58
62
  ostk/astrodynamics/test/dynamics/test_third_body_gravity.py,sha256=7xBOKbVio-zZ2-QQaje152cP38n_ALAaR5x6QIdBmXE,1879
59
- ostk/astrodynamics/test/dynamics/test_thruster.py,sha256=cCJtKWuNcRHmcreCv7BajwuJnHCat9m88OHh_o0cB7w,4383
63
+ ostk/astrodynamics/test/dynamics/test_thruster.py,sha256=MJicjTLJCiULNgBk10ZVrZF5Bi3nRb3UZPWVcrpnxz8,4746
60
64
  ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity.csv,sha256=jJWOMJcQ83Vy1Wrb9PTh3ffOdoDF98kk6w5b-_E0uWg,47419
61
65
  ostk/astrodynamics/test/dynamics/data/Tabulated_Earth_Gravity_Truth.csv,sha256=f4x-zmxZADxD_doAbACt24k36VSTp3rSIJiSzuSroKs,8377
62
66
  ostk/astrodynamics/test/eclipse/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
@@ -71,7 +75,7 @@ ostk/astrodynamics/test/event_condition/test_instant_condition.py,sha256=Qr5dN6n
71
75
  ostk/astrodynamics/test/event_condition/test_logical_condition.py,sha256=09h5TYWtwGt4NQW3k_tziiVs0Q2981rNII9wyKg7p2Q,3321
72
76
  ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=tle6HVzMFMIIkfRY7CuaA0mPtw3riJBG_JQkc1L0dpk,1374
73
77
  ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
74
- ostk/astrodynamics/test/flight/test_maneuver.py,sha256=HonAvD9qtax72lizoDLR6ELI-poC3LWk_umg-WYygYA,5388
78
+ ostk/astrodynamics/test/flight/test_maneuver.py,sha256=7ZiMHrmGfSopjXm2Z3L1fXvDCJ646zVRcVyTk8f7rxY,6905
75
79
  ostk/astrodynamics/test/flight/test_profile.py,sha256=U1l7pbFYrUjjxYBotQ3ujrvBxnBcyWgTrKwVHHClStc,8602
76
80
  ostk/astrodynamics/test/flight/test_system.py,sha256=5kJCULHdpkwAC7i6xLV7vdJnGfOdrOuhi0G22p_L160,1224
77
81
  ostk/astrodynamics/test/flight/profile/model/test_tabulated_profile.py,sha256=NZVa9dXzp4UDmohAlBaYeY594CPbqIv5j3VSEzlbYHk,3168
@@ -79,8 +83,9 @@ ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5n
79
83
  ostk/astrodynamics/test/flight/system/test_propulsion_system.py,sha256=SoxOt-fjHvs_86f6Xb3jAsHDOShJ6Puz7eO5wrqibaM,1835
80
84
  ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=dCFcl2RKiLxDKLI0sytPBXr3vHOFQIVNNCzpw5WzlAA,2437
81
85
  ostk/astrodynamics/test/flight/system/test_satellite_system_builder.py,sha256=QCk70dPcptvdpWQOxtYR0-iGnlbtOIx2V6oO0UhYIQ0,2426
82
- ostk/astrodynamics/test/guidance_law/test_constant_thrust.py,sha256=YpMkMvat4YnE1Fyy5vZ1Sf3VvbvDaC_UvbIKNNCG_B4,2635
86
+ ostk/astrodynamics/test/guidance_law/test_constant_thrust.py,sha256=y7VaKuJ8oCVEDeZL62oWepcmmYKG-9Za2Ebjn8lVR7Y,5381
83
87
  ostk/astrodynamics/test/guidance_law/test_guidance_law.py,sha256=4ElWLS9ovnYBcj5HwJI3a6R9wrSLxyb_VMvxcCLDrKE,1560
88
+ ostk/astrodynamics/test/guidance_law/test_heterogeneous_guidance_law.py,sha256=qqIahgqFNhBjAe6RrztR0mR1XQ7ztXO-q7_pkpiKLWo,5076
84
89
  ostk/astrodynamics/test/guidance_law/test_qlaw.py,sha256=kZaBZeU_J8Qk2nFnnpSuu-2NXT_13g3vLamG--eZfeU,3634
85
90
  ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
86
91
  ostk/astrodynamics/test/solvers/test_finite_difference_solver.py,sha256=0tcarIg2HTpcdzItWlL5Kd6q2nHcDBA8ZE0D3ugUN_s,5953
@@ -92,7 +97,7 @@ ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=s1
92
97
  ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
93
98
  ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=EwqQejhcSqYhKPCAkjxyBLgEc82fOhrh1zrJ86RGO9Q,7011
94
99
  ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=ALjMvzndO9r6dVVXllk0iqu61tEoqu2j25MtzEitDIQ,14076
95
- ostk/astrodynamics/test/trajectory/test_segment.py,sha256=aXdF5CpNLwN_hKRU5sG3ID3hJR-NZ1_kgtNA-xHMBkM,12223
100
+ ostk/astrodynamics/test/trajectory/test_segment.py,sha256=u4AdttP27r2usLaaBthoSivofxKUyoQdH7dAeKEc9-E,16046
96
101
  ostk/astrodynamics/test/trajectory/test_sequence.py,sha256=4piYpMZ9C_eCXxaOcdz2We67wZxhsNBnETgKwvq6dl0,15083
97
102
  ostk/astrodynamics/test/trajectory/test_state.py,sha256=JO-SnUCRZ6sfVNwB5soT5c1f8c5DXuFN5lHZkiiTcYc,18119
98
103
  ostk/astrodynamics/test/trajectory/test_state_builder.py,sha256=LpCCYdCaLu_D2npm9wgA2sMlcekrtbRqP-afe5IE5L4,4871
@@ -128,7 +133,7 @@ ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quatern
128
133
  ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py,sha256=1p37_FYN85d9SrOqO3iCkNecovJJayhnFeZ4QCOw2ao,3528
129
134
  ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py,sha256=XvHdk1KjacTwtkgx2jUAc9I9N3nvjPDv03FAanpv8jQ,2702
130
135
  ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py,sha256=-kd5TZO5TICihbkqDTew2i_tDpggdpe3Yf23046FATM,3057
131
- ostk/astrodynamics/trajectory/__init__.pyi,sha256=-s4X3sfSfXmJuYgtfMnD2kOtb8KwpYs7bfpLRBWc7fY,76705
136
+ ostk/astrodynamics/trajectory/__init__.pyi,sha256=Rq7nDTkoqQiuLhagADDc6_0ZBMNcHnr_G4D0yXEBIsA,78618
132
137
  ostk/astrodynamics/trajectory/model.pyi,sha256=SIneZx3pQ6XAo6iBccr4B1OsATbs1PEsCngtaTvja00,10473
133
138
  ostk/astrodynamics/trajectory/orbit/__init__.pyi,sha256=wbuRK7Yp_NYBr3ta5-NpnJYMX4baUl7yIlUWhaRlR4o,12899
134
139
  ostk/astrodynamics/trajectory/orbit/message/__init__.pyi,sha256=-GNBlYPrsjelhKxWorYQYhIWzFsibiIQNZvMXjhRpfM,77
@@ -139,8 +144,8 @@ ostk/astrodynamics/trajectory/orbit/model/kepler.pyi,sha256=KL-FwPbG4OUkPjhQb1Pa
139
144
  ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi,sha256=OhFzoPPQHlYy7m3LiZ8TXF89M4uBTfNk6tGsBEp0sjI,14235
140
145
  ostk/astrodynamics/trajectory/state/__init__.pyi,sha256=bq__Fii35czVrTeNxc9eQVjXdqwbbQxUdNQWK3vLrMo,17649
141
146
  ostk/astrodynamics/trajectory/state/coordinate_subset.pyi,sha256=kYMfMwEjCqO1NepMYFT4QS6kIPBkVL6sGCLeLbogcMw,10176
142
- open_space_toolkit_astrodynamics-16.8.0.dist-info/METADATA,sha256=EfkYJE8PmXGgbf8PpG_rAkZgnWlv8XFvMDYSXiMxVV8,1913
143
- open_space_toolkit_astrodynamics-16.8.0.dist-info/WHEEL,sha256=HKTDQRaBjeful1LuAej8fX2VXGhDWeCDzK_M-yn2ypk,110
144
- open_space_toolkit_astrodynamics-16.8.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
145
- open_space_toolkit_astrodynamics-16.8.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
146
- open_space_toolkit_astrodynamics-16.8.0.dist-info/RECORD,,
147
+ open_space_toolkit_astrodynamics-16.10.0.dist-info/METADATA,sha256=VRCTKInuQXRzjAIDnrl4EOduGokQYU72xGWdlk--r1I,1914
148
+ open_space_toolkit_astrodynamics-16.10.0.dist-info/WHEEL,sha256=HKTDQRaBjeful1LuAej8fX2VXGhDWeCDzK_M-yn2ypk,110
149
+ open_space_toolkit_astrodynamics-16.10.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
150
+ open_space_toolkit_astrodynamics-16.10.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
151
+ open_space_toolkit_astrodynamics-16.10.0.dist-info/RECORD,,
@@ -14,20 +14,20 @@ from ostk import mathematics as OpenSpaceToolkitMathematicsPy
14
14
  from ostk.mathematics import curve_fitting
15
15
  from ostk.mathematics import geometry
16
16
  from ostk.mathematics import object
17
- import ostk.physics
18
17
  from ostk import physics as OpenSpaceToolkitPhysicsPy
18
+ import ostk.physics
19
19
  from ostk.physics import Environment
20
20
  from ostk.physics import Manager
21
21
  from ostk.physics import Unit
22
- from ostk.physics import coordinate
23
22
  import ostk.physics.coordinate
23
+ from ostk.physics import coordinate
24
24
  import ostk.physics.coordinate.spherical
25
25
  from ostk.physics import environment
26
26
  import ostk.physics.environment.object
27
- import ostk.physics.time
28
27
  from ostk.physics import time
29
- import ostk.physics.unit
28
+ import ostk.physics.time
30
29
  from ostk.physics import unit
30
+ import ostk.physics.unit
31
31
  import typing
32
32
  from . import access
33
33
  from . import conjunction
@@ -1,3 +1,121 @@
1
1
  from __future__ import annotations
2
+ import ostk.astrodynamics.trajectory
3
+ import ostk.physics.coordinate
4
+ import ostk.physics.time
5
+ import ostk.physics.unit
6
+ import typing
7
+ from . import close_approach
2
8
  from . import message
3
- __all__ = ['message']
9
+ __all__ = ['CloseApproach', 'close_approach', 'message']
10
+ class CloseApproach:
11
+ """
12
+
13
+ Close approach between two objects.
14
+
15
+ This class represents a close approach event between two objects, providing access to the states of both
16
+ objects at the time of closest approach, the miss distance, and the relative state.
17
+
18
+ """
19
+ __hash__: typing.ClassVar[None] = None
20
+ @staticmethod
21
+ def undefined() -> CloseApproach:
22
+ """
23
+ Construct an undefined close approach.
24
+
25
+ Returns:
26
+ CloseApproach: An undefined close approach.
27
+ """
28
+ def __eq__(self, arg0: CloseApproach) -> bool:
29
+ """
30
+ Equal to operator.
31
+
32
+ Args:
33
+ other (CloseApproach): Another close approach.
34
+
35
+ Returns:
36
+ bool: True if close approaches are equal.
37
+ """
38
+ def __init__(self, object_1_state: ostk.astrodynamics.trajectory.State, object_2_state: ostk.astrodynamics.trajectory.State) -> None:
39
+ """
40
+ Constructor.
41
+
42
+ Args:
43
+ object_1_state (State): The state of Object 1.
44
+ object_2_state (State): The state of Object 2.
45
+ """
46
+ def __ne__(self, arg0: CloseApproach) -> bool:
47
+ """
48
+ Not equal to operator.
49
+
50
+ Args:
51
+ other (CloseApproach): Another close approach.
52
+
53
+ Returns:
54
+ bool: True if close approaches are not equal.
55
+ """
56
+ def __repr__(self) -> str:
57
+ ...
58
+ def __str__(self) -> str:
59
+ ...
60
+ def compute_miss_distance_components_in_frame(self, frame: ostk.physics.coordinate.Frame) -> tuple[ostk.physics.unit.Length, ostk.physics.unit.Length, ostk.physics.unit.Length]:
61
+ """
62
+ Compute the miss distance components in the desired frame.
63
+
64
+ Args:
65
+ frame (Frame): The frame in which to resolve the miss distance components.
66
+
67
+ Returns:
68
+ tuple[Length, Length, Length]: The miss distance components (x, y, z).
69
+ """
70
+ def compute_miss_distance_components_in_local_orbital_frame(self, local_orbital_frame_factory: ostk.astrodynamics.trajectory.LocalOrbitalFrameFactory) -> tuple[ostk.physics.unit.Length, ostk.physics.unit.Length, ostk.physics.unit.Length]:
71
+ """
72
+ Compute the miss distance components in a local orbital frame (generated from Object 1 state).
73
+
74
+ Args:
75
+ local_orbital_frame_factory (LocalOrbitalFrameFactory): The local orbital frame factory.
76
+
77
+ Returns:
78
+ tuple[Length, Length, Length]: The miss distance components (radial, in-track, cross-track or similar depending on the factory).
79
+ """
80
+ def get_instant(self) -> ostk.physics.time.Instant:
81
+ """
82
+ Get the instant of the close approach.
83
+
84
+ Returns:
85
+ Instant: The instant of closest approach.
86
+ """
87
+ def get_miss_distance(self) -> ostk.physics.unit.Length:
88
+ """
89
+ Get the miss distance.
90
+
91
+ Returns:
92
+ Length: The miss distance between the two objects.
93
+ """
94
+ def get_object_1_state(self) -> ostk.astrodynamics.trajectory.State:
95
+ """
96
+ Get the state of Object 1.
97
+
98
+ Returns:
99
+ State: The state of Object 1.
100
+ """
101
+ def get_object_2_state(self) -> ostk.astrodynamics.trajectory.State:
102
+ """
103
+ Get the state of Object 2.
104
+
105
+ Returns:
106
+ State: The state of Object 2.
107
+ """
108
+ def get_relative_state(self) -> ostk.astrodynamics.trajectory.State:
109
+ """
110
+ Get the relative state (Object 2 relative to Object 1).
111
+
112
+ Returns:
113
+ State: The relative state.
114
+ """
115
+ def is_defined(self) -> bool:
116
+ """
117
+ Check if the close approach is defined.
118
+
119
+ Returns:
120
+ bool: True if close approach is defined, False otherwise.
121
+ """
@@ -0,0 +1,85 @@
1
+ from __future__ import annotations
2
+ import ostk.astrodynamics
3
+ import ostk.astrodynamics.conjunction
4
+ import ostk.physics.time
5
+ __all__ = ['Generator']
6
+ class Generator:
7
+ """
8
+
9
+ Compute close approaches to a reference trajectory.
10
+
11
+ This class computes close approach events between a reference trajectory and other object trajectories
12
+ over a specified time interval. It uses a temporal condition solver to identify time periods when objects
13
+ are approaching and then determines the exact time of closest approach.
14
+
15
+ """
16
+ @staticmethod
17
+ def undefined() -> Generator:
18
+ """
19
+ Construct an undefined generator.
20
+
21
+ Returns:
22
+ Generator: An undefined generator.
23
+ """
24
+ def __init__(self, reference_trajectory: ostk.astrodynamics.Trajectory, step: ostk.physics.time.Duration = ..., tolerance: ostk.physics.time.Duration = ...) -> None:
25
+ """
26
+ Constructor.
27
+
28
+ Args:
29
+ reference_trajectory (Trajectory): The reference trajectory for which to compute close approaches (Object 1).
30
+ step (Duration): The step to use during the close approach search. Defaults to Duration.seconds(15.0).
31
+ tolerance (Duration): The tolerance to use during the close approach search. Defaults to Duration.milliseconds(1.0).
32
+ """
33
+ def compute_close_approaches(self, trajectory: ostk.astrodynamics.Trajectory, search_interval: ostk.physics.time.Interval) -> list[ostk.astrodynamics.conjunction.CloseApproach]:
34
+ """
35
+ Compute close approaches between the reference trajectory and another object over a search interval.
36
+
37
+ Args:
38
+ trajectory (Trajectory): The trajectory of the other object (Object 2).
39
+ search_interval (Interval): The interval over which close approaches are searched.
40
+
41
+ Returns:
42
+ list[CloseApproach]: Array of close approaches over the search interval (with Object 1 being the reference trajectory).
43
+ """
44
+ def get_reference_trajectory(self) -> ostk.astrodynamics.Trajectory:
45
+ """
46
+ Get the reference trajectory.
47
+
48
+ Returns:
49
+ Trajectory: The reference trajectory.
50
+ """
51
+ def get_step(self) -> ostk.physics.time.Duration:
52
+ """
53
+ Get the step.
54
+
55
+ Returns:
56
+ Duration: The step.
57
+ """
58
+ def get_tolerance(self) -> ostk.physics.time.Duration:
59
+ """
60
+ Get the tolerance.
61
+
62
+ Returns:
63
+ Duration: The tolerance.
64
+ """
65
+ def is_defined(self) -> bool:
66
+ """
67
+ Check if the generator is defined.
68
+
69
+ Returns:
70
+ bool: True if generator is defined, False otherwise.
71
+ """
72
+ def set_step(self, step: ostk.physics.time.Duration) -> None:
73
+ """
74
+ Set the step.
75
+
76
+ Args:
77
+ step (Duration): The step.
78
+ """
79
+ def set_tolerance(self, tolerance: ostk.physics.time.Duration) -> None:
80
+ """
81
+ Set the tolerance.
82
+
83
+ Args:
84
+ tolerance (Duration): The tolerance.
85
+ """
@@ -270,7 +270,7 @@ class Thruster(ostk.astrodynamics.Dynamics):
270
270
  Args:
271
271
  satellite_system (SatelliteSystem): The satellite system.
272
272
  guidance_law (GuidanceLaw): The guidance law used to compute the acceleration vector.
273
- name (str): The name of the thruster.
273
+ name (str, optional): The name of the thruster. Defaults to String.empty().
274
274
  """
275
275
  def __repr__(self) -> str:
276
276
  ...
@@ -84,6 +84,16 @@ class Maneuver:
84
84
  Returns:
85
85
  float: The delta-v value (m/s).
86
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
+ """
87
97
  def get_interval(self) -> ostk.physics.time.Interval:
88
98
  """
89
99
  Get the interval of the maneuver.
@@ -105,6 +115,24 @@ class Maneuver:
105
115
  Returns:
106
116
  bool: True if the maneuver is defined, False otherwise. (Always returns true).
107
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
+ """
108
136
  def to_tabulated_dynamics(self, frame: ostk.physics.coordinate.Frame = ..., interpolation_type: ostk.mathematics.curve_fitting.Interpolator.Type = ...) -> ...:
109
137
  """
110
138
  Convert the maneuver to tabulated dynamics.
@@ -200,7 +228,7 @@ class Profile:
200
228
  Constructor.
201
229
 
202
230
  Args:
203
- orientation_profile (list[Tuple[Instant, Vector3d]]): The orientation profile.
231
+ orientation_profile (list[tuple[Instant, Vector3d]]): The orientation profile.
204
232
  axis (Profile.Axis): The axis.
205
233
  anti_direction (bool): True if the direction is flipped, False otherwise. Defaults to False.
206
234
  """
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
  import numpy
3
3
  import ostk.astrodynamics
4
+ import ostk.astrodynamics.flight
4
5
  import ostk.astrodynamics.trajectory
5
6
  import ostk.astrodynamics.trajectory.orbit.model.kepler
6
7
  import ostk.core.type
@@ -8,26 +9,43 @@ import ostk.physics.coordinate
8
9
  import ostk.physics.time
9
10
  import ostk.physics.unit
10
11
  import typing
11
- __all__ = ['ConstantThrust', 'QLaw']
12
+ __all__ = ['ConstantThrust', 'HeterogeneousGuidanceLaw', 'QLaw']
12
13
  class ConstantThrust(ostk.astrodynamics.GuidanceLaw):
13
14
  """
14
15
 
15
- Constant Thrust, Constant Direction dynamics.
16
+ Constant Thrust, Constant Direction guidance law.
16
17
 
17
18
 
18
19
  """
19
20
  @staticmethod
21
+ def from_maneuver(maneuver: ostk.astrodynamics.flight.Maneuver, local_orbital_frame_factory: ostk.astrodynamics.trajectory.LocalOrbitalFrameFactory, maximum_allowed_angular_offset: ostk.physics.unit.Angle = ...) -> ConstantThrust:
22
+ """
23
+ Create a constant thrust guidance law from a maneuver.
24
+
25
+ The local orbital frame maneuver's mean thrust direction is calculated and used to create a
26
+ constant thrust guidance law in said direction.
27
+
28
+ If defined, a runtime error will be thrown if the maximum allowed angular offset between the original thrust acceleration
29
+ direction and the mean thrust direction is violated.
30
+
31
+ Args:
32
+ maneuver (Maneuver): The maneuver.
33
+ local_orbital_frame_factory (LocalOrbitalFrameFactory): The local orbital frame factory.
34
+ maximum_allowed_angular_offset (Angle, optional): The maximum allowed angular offset to consider (if any). Defaults to Undefined.
35
+
36
+ Returns:
37
+ ConstantThrust: The constant thrust guidance law.
38
+ """
39
+ @staticmethod
20
40
  def intrack(velocity_direction: bool = True) -> ConstantThrust:
21
41
  """
22
- Create a constant thrust in the in-track direction.
42
+ Create a constant thrust guidance law in the in-track direction.
23
43
 
24
44
  Args:
25
- satellite_system (SatelliteSystem): The satellite system.
26
- velocity_direction (bool, optional): If True, the thrust is applied in the velocity direction. Otherwise, it is applied in the opposite direction.
27
- frame (Frame, optional): The reference frame.
45
+ velocity_direction (bool, optional): If True, the thrust is applied in the velocity direction. Otherwise, it is applied in the opposite direction. Defaults to True.
28
46
 
29
47
  Returns:
30
- ConstantThrust: The constant thrust.
48
+ ConstantThrust: The constant thrust guidance law in the in-track direction.
31
49
  """
32
50
  def __init__(self, thrust_direction: ostk.astrodynamics.trajectory.LocalOrbitalFrameDirection) -> None:
33
51
  """
@@ -61,6 +79,63 @@ class ConstantThrust(ostk.astrodynamics.GuidanceLaw):
61
79
  Returns:
62
80
  LocalOrbitalFrameDirection: The local thrust direction.
63
81
  """
82
+ class HeterogeneousGuidanceLaw(ostk.astrodynamics.GuidanceLaw):
83
+ """
84
+
85
+ A guidance law that sequences multiple guidance laws over specific time intervals.
86
+
87
+ At each point in time, the applicable guidance law is selected and used to calculate
88
+ the thrust acceleration. Guidance laws don't need to be contiguous, and can be added
89
+ in any order. If the instant does not fall within any of the intervals, the thrust
90
+ acceleration is zero. The guidance law intervals must not intersect each other.
91
+
92
+ """
93
+ def __init__(self, guidance_laws_with_intervals: list[tuple[ostk.astrodynamics.GuidanceLaw, ostk.physics.time.Interval]] = []) -> None:
94
+ """
95
+ Constructor.
96
+
97
+ Args:
98
+ guidance_laws_with_intervals (list[tuple[GuidanceLaw, Interval]], optional): Array of tuples containing the guidance laws and their corresponding intervals. Defaults to empty array.
99
+
100
+ Raises:
101
+ RuntimeError: If any interval is undefined, if the guidance law is null or if the interval intersects with an existing interval.
102
+ """
103
+ def __repr__(self) -> str:
104
+ ...
105
+ def __str__(self) -> str:
106
+ ...
107
+ def add_guidance_law(self, guidance_law: ostk.astrodynamics.GuidanceLaw, interval: ostk.physics.time.Interval) -> None:
108
+ """
109
+ Add a guidance law with its corresponding interval.
110
+
111
+ Args:
112
+ guidance_law (GuidanceLaw): The guidance law to add.
113
+ interval (Interval): The interval during which the guidance law is active.
114
+
115
+ Raises:
116
+ RuntimeError: If the interval is undefined, if the guidance law is null or if the interval intersects with an existing interval.
117
+ """
118
+ def calculate_thrust_acceleration_at(self, instant: ostk.physics.time.Instant, position_coordinates: numpy.ndarray[numpy.float64[3, 1]], velocity_coordinates: numpy.ndarray[numpy.float64[3, 1]], thrust_acceleration: ostk.core.type.Real, output_frame: ostk.physics.coordinate.Frame) -> numpy.ndarray[numpy.float64[3, 1]]:
119
+ """
120
+ Calculate thrust acceleration at a given instant and state.
121
+
122
+ Args:
123
+ instant (Instant): The instant.
124
+ position_coordinates (numpy.ndarray): The position coordinates.
125
+ velocity_coordinates (numpy.ndarray): The velocity coordinates.
126
+ thrust_acceleration (float): The thrust acceleration magnitude.
127
+ output_frame (Frame): The frame in which the acceleration is expressed.
128
+
129
+ Returns:
130
+ numpy.ndarray: The acceleration vector at the provided coordinates.
131
+ """
132
+ def get_guidance_laws_with_intervals(self) -> list[tuple[ostk.astrodynamics.GuidanceLaw, ostk.physics.time.Interval]]:
133
+ """
134
+ Get the guidance laws with their corresponding intervals.
135
+
136
+ Returns:
137
+ list[tuple[GuidanceLaw, Interval]]: Array of tuples containing the guidance laws and their corresponding intervals.
138
+ """
64
139
  class QLaw(ostk.astrodynamics.GuidanceLaw):
65
140
  """
66
141