korba 0.4.0 → 0.6.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +21 -1
- data/lib/korba/car.rb +18 -0
- data/lib/korba/kep.rb +19 -2
- data/lib/korba/kepler_equation_fucntion.rb +20 -0
- data/lib/korba/newton_function.rb +25 -0
- data/lib/korba/orbit_utils.rb +52 -3
- data/lib/korba/sgp4/elset_rec.rb +432 -0
- data/lib/korba/sgp4/sgp4.rb +2027 -0
- data/lib/korba/tle.rb +97 -14
- data/lib/korba/version.rb +1 -1
- data/lib/korba.rb +5 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e1fb6aee8c669efdda379b50b45af24fc6fabf6514972cbfc93a8156c54f533
|
4
|
+
data.tar.gz: cde0a77ead9cecb840aa1fad00693c5a5c61428ae6cd6f905f2faf05ec1973d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8981644e546a11c656d83c751aa9e9ce19046df56258287a1f9219401377feef7def725de5d4cfa75481dd156179cd93404cc89d20aa80b0761ac0fba42c4d93
|
7
|
+
data.tar.gz: 17306bb686d434c116d531681a6dcabd4998825e24ec042e65f1d08b84350e80a2645603ece086edf2c8d124811f641f0706011e5d32b29da687482c3ee61c5b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -38,7 +38,7 @@ orbit.height_at_perigee
|
|
38
38
|
orbit.height_at_apogee
|
39
39
|
# => 420372.03623388056
|
40
40
|
|
41
|
-
orbit.to_kep
|
41
|
+
kep = orbit.to_kep
|
42
42
|
# =>
|
43
43
|
# #<Korba::Kep:xxxxxxxxxxxxxxxx
|
44
44
|
# @arg_of_pericenter=314.0303,
|
@@ -49,8 +49,28 @@ orbit.to_kep
|
|
49
49
|
# @object_name="ISS (ZARYA)",
|
50
50
|
# @ra_of_asc_node=174.9565,
|
51
51
|
# @semi_major_axis=6793877.649839985>
|
52
|
+
|
53
|
+
kep.to_car
|
54
|
+
# =>
|
55
|
+
# #<Korba::Car:xxxxxxxxxxxxxxxx
|
56
|
+
# @epoch="2024-12-07T20:37:24.085055",
|
57
|
+
# @object_name="ISS (ZARYA)",
|
58
|
+
# @vx=6150.772410883998,
|
59
|
+
# @vy=2489.3298780751356,
|
60
|
+
# @vz=-3816.0301666253677,
|
61
|
+
# @x=4019753.8621700387,
|
62
|
+
# @y=-3623966.518673545,
|
63
|
+
# @z=4114361.6934797494>
|
64
|
+
|
52
65
|
```
|
53
66
|
|
67
|
+
## References
|
68
|
+
|
69
|
+
- 宇宙工学シリーズ 3 人工衛星と宇宙探査機
|
70
|
+
- https://www.coronasha.co.jp/np/isbn/9784339012316/
|
71
|
+
- 人工衛星の軌道 概論
|
72
|
+
- https://www.coronasha.co.jp/np/isbn/9784339046403/
|
73
|
+
|
54
74
|
## Development
|
55
75
|
|
56
76
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/lib/korba/car.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Korba
|
4
|
+
class Car
|
5
|
+
attr_reader :object_name, :epoch, :x, :y, :z, :vx, :vy, :vz
|
6
|
+
|
7
|
+
def initialize(object_name:, epoch:, x:, y:, z:, vx:, vy:, vz:)
|
8
|
+
@object_name = object_name
|
9
|
+
@epoch = epoch
|
10
|
+
@x = x
|
11
|
+
@y = y
|
12
|
+
@z = z
|
13
|
+
@vx = vx
|
14
|
+
@vy = vy
|
15
|
+
@vz = vz
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/korba/kep.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
require "matrix"
|
3
3
|
|
4
4
|
module Korba
|
5
5
|
class Kep
|
6
|
-
include
|
6
|
+
include OrbitUtils
|
7
7
|
|
8
8
|
attr_reader :object_name, :epoch, :semi_major_axis, :eccentricity, :inclination, :ra_of_asc_node, :arg_of_pericenter, :mean_anomaly
|
9
9
|
|
@@ -17,5 +17,22 @@ module Korba
|
|
17
17
|
@arg_of_pericenter = arg_of_pericenter
|
18
18
|
@mean_anomaly = mean_anomaly
|
19
19
|
end
|
20
|
+
|
21
|
+
def to_car
|
22
|
+
vector_n = Vector[
|
23
|
+
Math.sin(deg_to_rad(inclination)) * Math.sin(deg_to_rad(ra_of_asc_node)),
|
24
|
+
-Math.sin(deg_to_rad(inclination)) * Math.cos(deg_to_rad(ra_of_asc_node)),
|
25
|
+
Math.cos(deg_to_rad(inclination))
|
26
|
+
]
|
27
|
+
vector_omega = Vector[Math.cos(deg_to_rad(ra_of_asc_node)), Math.sin(deg_to_rad(ra_of_asc_node)), 0]
|
28
|
+
vector_m = vector_n.cross(vector_omega)
|
29
|
+
|
30
|
+
r_angle_factor = deg_to_rad(arg_of_pericenter + true_anomaly)
|
31
|
+
vector_r = distance * (Math.cos(r_angle_factor) * vector_omega + Math.sin(r_angle_factor) * vector_m)
|
32
|
+
v_angle_factor = deg_to_rad(arg_of_pericenter + true_anomaly - path_angle)
|
33
|
+
vector_v = velocity * (-Math.sin(v_angle_factor) * vector_omega + (Math.cos(v_angle_factor)) * vector_m)
|
34
|
+
|
35
|
+
Car.new(object_name:, epoch:, x: vector_r[0], y: vector_r[1], z: vector_r[2], vx: vector_v[0], vy: vector_v[1], vz: vector_v[2])
|
36
|
+
end
|
20
37
|
end
|
21
38
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative "newton_function"
|
3
|
+
|
4
|
+
module Korba
|
5
|
+
class KeplerEquationFunction < NewtonFunction
|
6
|
+
include OrbitUtils
|
7
|
+
|
8
|
+
attr_reader :eccentricity, :mean_anomaly
|
9
|
+
|
10
|
+
def initialize(eccentricity:, mean_anomaly:)
|
11
|
+
super()
|
12
|
+
@eccentricity = eccentricity
|
13
|
+
@mean_anomaly = mean_anomaly
|
14
|
+
end
|
15
|
+
|
16
|
+
def values(x)
|
17
|
+
[x[0] - eccentricity * Math.sin(x[0]) - deg_to_rad(mean_anomaly)]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "bigdecimal/newton"
|
3
|
+
include Newton
|
4
|
+
|
5
|
+
module Korba
|
6
|
+
class NewtonFunction
|
7
|
+
def initialize()
|
8
|
+
@zero = BigDecimal("0.0")
|
9
|
+
@one = BigDecimal("1.0")
|
10
|
+
@two = BigDecimal("2.0")
|
11
|
+
@ten = BigDecimal("10.0")
|
12
|
+
@eps = BigDecimal("1.0e-14")
|
13
|
+
end
|
14
|
+
|
15
|
+
def zero; @zero; end
|
16
|
+
def one; @one; end
|
17
|
+
def two; @two; end
|
18
|
+
def ten; @ten; end
|
19
|
+
def eps; @eps; end
|
20
|
+
|
21
|
+
def values(x)
|
22
|
+
raise NotImplementedError
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/korba/orbit_utils.rb
CHANGED
@@ -4,15 +4,64 @@ module Korba
|
|
4
4
|
module OrbitUtils
|
5
5
|
def semi_major_axis
|
6
6
|
# a = (μ / n^2)^(1/3) m
|
7
|
-
(
|
7
|
+
(Constant::GME / (mean_motion * 2 * Math::PI / 86400.0) ** 2.0) ** (1.0 / 3.0)
|
8
8
|
end
|
9
9
|
|
10
10
|
def height_at_perigee
|
11
|
-
semi_major_axis * (1 - eccentricity) -
|
11
|
+
semi_major_axis * (1 - eccentricity) - Constant::EARTH_RADIUS
|
12
12
|
end
|
13
13
|
|
14
14
|
def height_at_apogee
|
15
|
-
semi_major_axis * (1 + eccentricity) -
|
15
|
+
semi_major_axis * (1 + eccentricity) - Constant::EARTH_RADIUS
|
16
|
+
end
|
17
|
+
|
18
|
+
def eccentric_anomaly
|
19
|
+
f = KeplerEquationFunction.new(eccentricity:, mean_anomaly:)
|
20
|
+
x = [deg_to_rad(mean_anomaly)]
|
21
|
+
nlsolve(f, x)
|
22
|
+
rad_to_deg(x[0])
|
23
|
+
end
|
24
|
+
|
25
|
+
def true_anomaly
|
26
|
+
factor = (Math.cos(deg_to_rad(eccentric_anomaly)) - eccentricity) / (1 - eccentricity * Math.cos(deg_to_rad(eccentric_anomaly)))
|
27
|
+
rad_to_deg(Math.acos(factor))
|
28
|
+
end
|
29
|
+
|
30
|
+
def distance
|
31
|
+
semi_major_axis * (1 - eccentricity * Math.cos(deg_to_rad(eccentric_anomaly)))
|
32
|
+
end
|
33
|
+
|
34
|
+
def velocity
|
35
|
+
Math.sqrt(Constant::GME * (2 / distance - 1 / semi_major_axis))
|
36
|
+
end
|
37
|
+
|
38
|
+
def path_angle
|
39
|
+
factor = Math.sqrt(Constant::GME * semi_major_axis * (1 - eccentricity ** 2)) / (distance * velocity)
|
40
|
+
rad_to_deg(Math.acos(factor))
|
41
|
+
end
|
42
|
+
|
43
|
+
def deg_to_rad(deg)
|
44
|
+
rad = deg * Math::PI / 180.0
|
45
|
+
normalize_rad(rad)
|
46
|
+
end
|
47
|
+
|
48
|
+
def normalize_rad(rad)
|
49
|
+
rad = rad + 2 * Math::PI if rad < 0
|
50
|
+
normalize_rad = rad > 2 * Math::PI ? rad - 2 * Math::PI : rad
|
51
|
+
normalize_rad(normalize_rad) if normalize_rad != rad
|
52
|
+
normalize_rad
|
53
|
+
end
|
54
|
+
|
55
|
+
def rad_to_deg(rad)
|
56
|
+
deg = rad * 180.0 / Math::PI
|
57
|
+
normalize_deg(deg)
|
58
|
+
end
|
59
|
+
|
60
|
+
def normalize_deg(deg)
|
61
|
+
deg = deg + 360 if deg < 0
|
62
|
+
normalized_deg = deg > 360 ? deg - 360 : deg
|
63
|
+
normalize_deg(normalized_deg) if normalized_deg != deg
|
64
|
+
normalized_deg
|
16
65
|
end
|
17
66
|
end
|
18
67
|
end
|
@@ -0,0 +1,432 @@
|
|
1
|
+
module Korba
|
2
|
+
#
|
3
|
+
# This class implements the elsetrec data type from Vallado's SGP4 code.
|
4
|
+
#
|
5
|
+
# From SGP4.h
|
6
|
+
# #define SGP4Version "SGP4 Version 2016-03-09"
|
7
|
+
#
|
8
|
+
# @author aholinch
|
9
|
+
#
|
10
|
+
#
|
11
|
+
class ElsetRec
|
12
|
+
attr_accessor :whichconst
|
13
|
+
attr_accessor :satnum
|
14
|
+
attr_accessor :epochyr
|
15
|
+
attr_accessor :epochtynumrev
|
16
|
+
attr_accessor :error
|
17
|
+
attr_accessor :operationmode
|
18
|
+
attr_accessor :init
|
19
|
+
attr_accessor :method
|
20
|
+
attr_accessor :a
|
21
|
+
attr_accessor :altp
|
22
|
+
attr_accessor :alta
|
23
|
+
attr_accessor :epochdays
|
24
|
+
attr_accessor :jdsatepoch
|
25
|
+
attr_accessor :jdsatepochF
|
26
|
+
attr_accessor :nddot
|
27
|
+
attr_accessor :ndot
|
28
|
+
attr_accessor :bstar
|
29
|
+
attr_accessor :rcse
|
30
|
+
attr_accessor :inclo
|
31
|
+
attr_accessor :nodeo
|
32
|
+
attr_accessor :ecco
|
33
|
+
attr_accessor :argpo
|
34
|
+
attr_accessor :mo
|
35
|
+
attr_accessor :no_kozai
|
36
|
+
attr_accessor :classification
|
37
|
+
attr_accessor :intldesg
|
38
|
+
attr_accessor :ephtype
|
39
|
+
attr_accessor :elnum
|
40
|
+
attr_accessor :revnum
|
41
|
+
attr_accessor :no_unkozai
|
42
|
+
attr_accessor :am
|
43
|
+
attr_accessor :em
|
44
|
+
attr_accessor :im
|
45
|
+
attr_accessor :Om
|
46
|
+
attr_accessor :om
|
47
|
+
attr_accessor :mm
|
48
|
+
attr_accessor :nm
|
49
|
+
attr_accessor :t
|
50
|
+
attr_accessor :tumin
|
51
|
+
attr_accessor :mu
|
52
|
+
attr_accessor :radiusearthkm
|
53
|
+
attr_accessor :xke
|
54
|
+
attr_accessor :j2
|
55
|
+
attr_accessor :j3
|
56
|
+
attr_accessor :j4
|
57
|
+
attr_accessor :j3oj2
|
58
|
+
attr_accessor :dia_mm
|
59
|
+
attr_accessor :period_sec
|
60
|
+
attr_accessor :active
|
61
|
+
attr_accessor :not_orbital
|
62
|
+
attr_accessor :rcs_m2
|
63
|
+
attr_accessor :ep
|
64
|
+
attr_accessor :inclp
|
65
|
+
attr_accessor :nodep
|
66
|
+
attr_accessor :argpp
|
67
|
+
attr_accessor :mp
|
68
|
+
attr_accessor :isimp
|
69
|
+
attr_accessor :aycof
|
70
|
+
attr_accessor :con41
|
71
|
+
attr_accessor :cc1
|
72
|
+
attr_accessor :cc4
|
73
|
+
attr_accessor :cc5
|
74
|
+
attr_accessor :d2
|
75
|
+
attr_accessor :d3
|
76
|
+
attr_accessor :d4
|
77
|
+
attr_accessor :delmo
|
78
|
+
attr_accessor :eta
|
79
|
+
attr_accessor :argpdot
|
80
|
+
attr_accessor :omgcof
|
81
|
+
attr_accessor :sinmao
|
82
|
+
attr_accessor :t2cof
|
83
|
+
attr_accessor :t3cof
|
84
|
+
attr_accessor :t4cof
|
85
|
+
attr_accessor :t5cof
|
86
|
+
attr_accessor :x1mth2
|
87
|
+
attr_accessor :x7thm1
|
88
|
+
attr_accessor :mdot
|
89
|
+
attr_accessor :nodedot
|
90
|
+
attr_accessor :xlcof
|
91
|
+
attr_accessor :xmcof
|
92
|
+
attr_accessor :nodecf
|
93
|
+
attr_accessor :irez
|
94
|
+
attr_accessor :d2201
|
95
|
+
attr_accessor :d2211
|
96
|
+
attr_accessor :d3210
|
97
|
+
attr_accessor :d3222
|
98
|
+
attr_accessor :d4410
|
99
|
+
attr_accessor :d4422
|
100
|
+
attr_accessor :d5220
|
101
|
+
attr_accessor :d5232
|
102
|
+
attr_accessor :d5421
|
103
|
+
attr_accessor :d5433
|
104
|
+
attr_accessor :dedt
|
105
|
+
attr_accessor :del1
|
106
|
+
attr_accessor :del2
|
107
|
+
attr_accessor :del3
|
108
|
+
attr_accessor :didt
|
109
|
+
attr_accessor :dmdt
|
110
|
+
attr_accessor :dnodt
|
111
|
+
attr_accessor :domdt
|
112
|
+
attr_accessor :e3
|
113
|
+
attr_accessor :ee2
|
114
|
+
attr_accessor :peo
|
115
|
+
attr_accessor :pgho
|
116
|
+
attr_accessor :pho
|
117
|
+
attr_accessor :pinco
|
118
|
+
attr_accessor :plo
|
119
|
+
attr_accessor :se2
|
120
|
+
attr_accessor :se3
|
121
|
+
attr_accessor :sgh2
|
122
|
+
attr_accessor :sgh3
|
123
|
+
attr_accessor :sgh4
|
124
|
+
attr_accessor :sh2
|
125
|
+
attr_accessor :sh3
|
126
|
+
attr_accessor :si2
|
127
|
+
attr_accessor :si3
|
128
|
+
attr_accessor :sl2
|
129
|
+
attr_accessor :sl3
|
130
|
+
attr_accessor :sl4
|
131
|
+
attr_accessor :gsto
|
132
|
+
attr_accessor :xfact
|
133
|
+
attr_accessor :xgh2
|
134
|
+
attr_accessor :xgh3
|
135
|
+
attr_accessor :xgh4
|
136
|
+
attr_accessor :xh2
|
137
|
+
attr_accessor :xh3
|
138
|
+
attr_accessor :xi2
|
139
|
+
attr_accessor :xi3
|
140
|
+
attr_accessor :xl2
|
141
|
+
attr_accessor :xl3
|
142
|
+
attr_accessor :xl4
|
143
|
+
attr_accessor :xlamo
|
144
|
+
attr_accessor :zmol
|
145
|
+
attr_accessor :zmos
|
146
|
+
attr_accessor :atime
|
147
|
+
attr_accessor :xli
|
148
|
+
attr_accessor :xni
|
149
|
+
attr_accessor :snodm
|
150
|
+
attr_accessor :cnodm
|
151
|
+
attr_accessor :sinim
|
152
|
+
attr_accessor :cosim
|
153
|
+
attr_accessor :sinomm
|
154
|
+
attr_accessor :cosomm
|
155
|
+
attr_accessor :day
|
156
|
+
attr_accessor :emsq
|
157
|
+
attr_accessor :gam
|
158
|
+
attr_accessor :rtemsq
|
159
|
+
attr_accessor :s1
|
160
|
+
attr_accessor :s2
|
161
|
+
attr_accessor :s3
|
162
|
+
attr_accessor :s4
|
163
|
+
attr_accessor :s5
|
164
|
+
attr_accessor :s6
|
165
|
+
attr_accessor :s7
|
166
|
+
attr_accessor :ss1
|
167
|
+
attr_accessor :ss2
|
168
|
+
attr_accessor :ss3
|
169
|
+
attr_accessor :ss4
|
170
|
+
attr_accessor :ss5
|
171
|
+
attr_accessor :ss6
|
172
|
+
attr_accessor :ss7
|
173
|
+
attr_accessor :sz1
|
174
|
+
attr_accessor :sz2
|
175
|
+
attr_accessor :sz3
|
176
|
+
attr_accessor :sz11
|
177
|
+
attr_accessor :sz12
|
178
|
+
attr_accessor :sz13
|
179
|
+
attr_accessor :sz21
|
180
|
+
attr_accessor :sz22
|
181
|
+
attr_accessor :sz23
|
182
|
+
attr_accessor :sz31
|
183
|
+
attr_accessor :sz32
|
184
|
+
attr_accessor :sz33
|
185
|
+
attr_accessor :z1
|
186
|
+
attr_accessor :z2
|
187
|
+
attr_accessor :z3
|
188
|
+
attr_accessor :z11
|
189
|
+
attr_accessor :z12
|
190
|
+
attr_accessor :z13
|
191
|
+
attr_accessor :z21
|
192
|
+
attr_accessor :z22
|
193
|
+
attr_accessor :z23
|
194
|
+
attr_accessor :z31
|
195
|
+
attr_accessor :z32
|
196
|
+
attr_accessor :z33
|
197
|
+
attr_accessor :argpm
|
198
|
+
attr_accessor :inclm
|
199
|
+
attr_accessor :nodem
|
200
|
+
attr_accessor :dndt
|
201
|
+
attr_accessor :eccsq
|
202
|
+
attr_accessor :ainv
|
203
|
+
attr_accessor :ao
|
204
|
+
attr_accessor :con42
|
205
|
+
attr_accessor :cosio
|
206
|
+
attr_accessor :cosio2
|
207
|
+
attr_accessor :omeosq
|
208
|
+
attr_accessor :posq
|
209
|
+
attr_accessor :rp
|
210
|
+
attr_accessor :rteosq
|
211
|
+
attr_accessor :sinio
|
212
|
+
|
213
|
+
def initialize
|
214
|
+
@whichconst = 2 #SGP4.wgs72
|
215
|
+
@satnum = 0
|
216
|
+
@epochyr = 0
|
217
|
+
@epochtynumrev = 0
|
218
|
+
@error = 0
|
219
|
+
@operationmode = 0
|
220
|
+
@init = 0
|
221
|
+
@method = 0
|
222
|
+
@a = 0.0
|
223
|
+
@altp = 0.0
|
224
|
+
@alta = 0.0
|
225
|
+
@epochdays = 0.0
|
226
|
+
@jdsatepoch = 0.0
|
227
|
+
@jdsatepochF = 0.0
|
228
|
+
@nddot = 0.0
|
229
|
+
@ndot = 0.0
|
230
|
+
@bstar = 0.0
|
231
|
+
@rcse = 0.0
|
232
|
+
@inclo = 0.0
|
233
|
+
@nodeo = 0.0
|
234
|
+
@ecco = 0.0
|
235
|
+
@argpo = 0.0
|
236
|
+
@mo = 0.0
|
237
|
+
@no_kozai = 0.0
|
238
|
+
|
239
|
+
# sgp4fix add new variables from tle
|
240
|
+
@classification = "U"
|
241
|
+
@intldesg = ""
|
242
|
+
@ephtype = 0
|
243
|
+
@elnum = 0
|
244
|
+
@revnum = 0
|
245
|
+
|
246
|
+
# sgp4fix add unkozai'd variable
|
247
|
+
@no_unkozai = 0.0
|
248
|
+
# sgp4fix add singly averaged variables
|
249
|
+
@am = 0.0
|
250
|
+
@em = 0.0
|
251
|
+
@im = 0.0
|
252
|
+
@Om = 0.0
|
253
|
+
@om = 0.0
|
254
|
+
@mm = 0.0
|
255
|
+
@nm = 0.0
|
256
|
+
@t = 0.0
|
257
|
+
|
258
|
+
# sgp4fix add constant parameters to eliminate mutliple calls during execution
|
259
|
+
@tumin = 0.0
|
260
|
+
@mu = 0.0
|
261
|
+
@radiusearthkm = 0.0
|
262
|
+
@xke = 0.0
|
263
|
+
@j2 = 0.0
|
264
|
+
@j3 = 0.0
|
265
|
+
@j4 = 0.0
|
266
|
+
@j3oj2 = 0.0
|
267
|
+
|
268
|
+
# Additional elements to capture relevant TLE and object information:
|
269
|
+
@dia_mm = 0 # RSO dia in mm
|
270
|
+
@period_sec = 0.0 # Period in seconds
|
271
|
+
@active = 0 # "Active S/C" flag (0=n, 1=y)
|
272
|
+
@not_orbital = 0 # "Orbiting S/C" flag (0=n, 1=y)
|
273
|
+
@rcs_m2 = 0.0 # "RCS (m^2)" storage
|
274
|
+
|
275
|
+
# temporary variables because the original authors call the same method with different variables
|
276
|
+
@ep = 0.0
|
277
|
+
@inclp = 0.0
|
278
|
+
@nodep = 0.0
|
279
|
+
@argpp = 0.0
|
280
|
+
@mp = 0.0
|
281
|
+
|
282
|
+
@isimp = 0
|
283
|
+
@aycof = 0.0
|
284
|
+
@con41 = 0.0
|
285
|
+
@cc1 = 0.0
|
286
|
+
@cc4 = 0.0
|
287
|
+
@cc5 = 0.0
|
288
|
+
@d2 = 0.0
|
289
|
+
@d3 = 0.0
|
290
|
+
@d4 = 0.0
|
291
|
+
@delmo = 0.0
|
292
|
+
@eta = 0.0
|
293
|
+
@argpdot = 0.0
|
294
|
+
@omgcof = 0.0
|
295
|
+
@sinmao = 0.0
|
296
|
+
@t2cof = 0.0
|
297
|
+
@t3cof = 0.0
|
298
|
+
@t4cof = 0.0
|
299
|
+
@t5cof = 0.0
|
300
|
+
@x1mth2 = 0.0
|
301
|
+
@x7thm1 = 0.0
|
302
|
+
@mdot = 0.0
|
303
|
+
@nodedot = 0.0
|
304
|
+
@xlcof = 0.0
|
305
|
+
@xmcof = 0.0
|
306
|
+
@nodecf = 0.0
|
307
|
+
|
308
|
+
# deep space
|
309
|
+
@irez = 0
|
310
|
+
@d2201 = 0.0
|
311
|
+
@d2211 = 0.0
|
312
|
+
@d3210 = 0.0
|
313
|
+
@d3222 = 0.0
|
314
|
+
@d4410 = 0.0
|
315
|
+
@d4422 = 0.0
|
316
|
+
@d5220 = 0.0
|
317
|
+
@d5232 = 0.0
|
318
|
+
@d5421 = 0.0
|
319
|
+
@d5433 = 0.0
|
320
|
+
@dedt = 0.0
|
321
|
+
@del1 = 0.0
|
322
|
+
@del2 = 0.0
|
323
|
+
@del3 = 0.0
|
324
|
+
@didt = 0.0
|
325
|
+
@dmdt = 0.0
|
326
|
+
@dnodt = 0.0
|
327
|
+
@domdt = 0.0
|
328
|
+
@e3 = 0.0
|
329
|
+
@ee2 = 0.0
|
330
|
+
@peo = 0.0
|
331
|
+
@pgho = 0.0
|
332
|
+
@pho = 0.0
|
333
|
+
@pinco = 0.0
|
334
|
+
@plo = 0.0
|
335
|
+
@se2 = 0.0
|
336
|
+
@se3 = 0.0
|
337
|
+
@sgh2 = 0.0
|
338
|
+
@sgh3 = 0.0
|
339
|
+
@sgh4 = 0.0
|
340
|
+
@sh2 = 0.0
|
341
|
+
@sh3 = 0.0
|
342
|
+
@si2 = 0.0
|
343
|
+
@si3 = 0.0
|
344
|
+
@sl2 = 0.0
|
345
|
+
@sl3 = 0.0
|
346
|
+
@sl4 = 0.0
|
347
|
+
@gsto = 0.0
|
348
|
+
@xfact = 0.0
|
349
|
+
@xgh2 = 0.0
|
350
|
+
@xgh3 = 0.0
|
351
|
+
@xgh4 = 0.0
|
352
|
+
@xh2 = 0.0
|
353
|
+
@xh3 = 0.0
|
354
|
+
@xi2 = 0.0
|
355
|
+
@xi3 = 0.0
|
356
|
+
@xl2 = 0.0
|
357
|
+
@xl3 = 0.0
|
358
|
+
@xl4 = 0.0
|
359
|
+
@xlamo = 0.0
|
360
|
+
@zmol = 0.0
|
361
|
+
@zmos = 0.0
|
362
|
+
@atime = 0.0
|
363
|
+
@xli = 0.0
|
364
|
+
@xni = 0.0
|
365
|
+
@snodm = 0.0
|
366
|
+
@cnodm = 0.0
|
367
|
+
@sinim = 0.0
|
368
|
+
@cosim = 0.0
|
369
|
+
@sinomm = 0.0
|
370
|
+
@cosomm = 0.0
|
371
|
+
@day = 0.0
|
372
|
+
@emsq = 0.0
|
373
|
+
@gam = 0.0
|
374
|
+
@rtemsq = 0.0
|
375
|
+
@s1 = 0.0
|
376
|
+
@s2 = 0.0
|
377
|
+
@s3 = 0.0
|
378
|
+
@s4 = 0.0
|
379
|
+
@s5 = 0.0
|
380
|
+
@s6 = 0.0
|
381
|
+
@s7 = 0.0
|
382
|
+
@ss1 = 0.0
|
383
|
+
@ss2 = 0.0
|
384
|
+
@ss3 = 0.0
|
385
|
+
@ss4 = 0.0
|
386
|
+
@ss5 = 0.0
|
387
|
+
@ss6 = 0.0
|
388
|
+
@ss7 = 0.0
|
389
|
+
@sz1 = 0.0
|
390
|
+
@sz2 = 0.0
|
391
|
+
@sz3 = 0.0
|
392
|
+
@sz11 = 0.0
|
393
|
+
@sz12 = 0.0
|
394
|
+
@sz13 = 0.0
|
395
|
+
@sz21 = 0.0
|
396
|
+
@sz22 = 0.0
|
397
|
+
@sz23 = 0.0
|
398
|
+
@sz31 = 0.0
|
399
|
+
@sz32 = 0.0
|
400
|
+
@sz33 = 0.0
|
401
|
+
@z1 = 0.0
|
402
|
+
@z2 = 0.0
|
403
|
+
@z3 = 0.0
|
404
|
+
@z11 = 0.0
|
405
|
+
@z12 = 0.0
|
406
|
+
@z13 = 0.0
|
407
|
+
@z21 = 0.0
|
408
|
+
@z22 = 0.0
|
409
|
+
@z23 = 0.0
|
410
|
+
@z31 = 0.0
|
411
|
+
@z32 = 0.0
|
412
|
+
@z33 = 0.0
|
413
|
+
@argpm = 0.0
|
414
|
+
@inclm = 0.0
|
415
|
+
@nodem = 0.0
|
416
|
+
@dndt = 0.0
|
417
|
+
@eccsq = 0.0
|
418
|
+
|
419
|
+
# for initl
|
420
|
+
@ainv = 0.0
|
421
|
+
@ao = 0.0
|
422
|
+
@con42 = 0.0
|
423
|
+
@cosio = 0.0
|
424
|
+
@cosio2 = 0.0
|
425
|
+
@omeosq = 0.0
|
426
|
+
@posq = 0.0
|
427
|
+
@rp = 0.0
|
428
|
+
@rteosq = 0.0
|
429
|
+
@sinio = 0.0
|
430
|
+
end
|
431
|
+
end
|
432
|
+
end
|