1 /*
2 * Copyright (C) 2019 Alberto Irurueta Carro (alberto@irurueta.com)
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package com.irurueta.navigation.inertial.navigators;
17
18 import com.irurueta.algebra.AlgebraException;
19 import com.irurueta.algebra.Matrix;
20 import com.irurueta.algebra.Utils;
21 import com.irurueta.geometry.InvalidRotationMatrixException;
22 import com.irurueta.geometry.Point3D;
23 import com.irurueta.navigation.frames.CoordinateTransformation;
24 import com.irurueta.navigation.frames.ECIFrame;
25 import com.irurueta.navigation.frames.FrameType;
26 import com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException;
27 import com.irurueta.navigation.inertial.BodyKinematics;
28 import com.irurueta.navigation.inertial.estimators.ECIGravitationEstimator;
29 import com.irurueta.units.*;
30
31 /**
32 * Runs precision ECI-frame inertial navigation equations.
33 * This implementation is based on the equations defined in "Principles of GNSS, Inertial, and Multisensor
34 * Integrated Navigation Systems, Second Edition" and on the companion software available at:
35 * <a href="https://github.com/ymjdz/MATLAB-Codes/blob/master/Nav_equations_ECI.m">
36 * https://github.com/ymjdz/MATLAB-Codes/blob/master/Nav_equations_ECI.m
37 * </a>
38 */
39 public class ECIInertialNavigator {
40
41 /**
42 * Alpha threshold.
43 */
44 private static final double ALPHA_THRESHOLD = 1e-8;
45
46 /**
47 * Number of rows.
48 */
49 private static final int ROWS = 3;
50
51 /**
52 * Runs precision ECI-frame inertial navigation equations.
53 *
54 * @param timeInterval time interval between epochs expressed in seconds (s).
55 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
56 * frame, resolved along ECI-frame axes and expressed in meters (m).
57 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
58 * frame, resolved along ECI-frame axes and expressed in meters (m).
59 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
60 * frame, resolved along ECI-frame axes and expressed in meters (m).
61 * @param oldC previous body-to-ECI-frame coordinate transformation.
62 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
63 * resolved along ECI-frame axes and expressed in meters per second (m/s).
64 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
65 * resolved along ECI-frame axes and expressed in meters per second (m/s).
66 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
67 * resolved along ECI-frame axes and expressed in meters per second (m/s).
68 * @param fx specific force x-coordinate of body frame with respect ECI frame,
69 * resolved along body-frame axes, averaged over time interval and
70 * expressed in meters per squared second (m/s^2).
71 * @param fy specific force y-coordinate of body frame with respect ECI frame,
72 * resolved along body-frame axes, averaged over time interval and
73 * expressed in meters per squared second (m/s^2).
74 * @param fz specific force z-coordinate of body frame with respect ECI frame,
75 * resolved along body-frame axes, averaged over time interval and
76 * expressed in meters per squared second (m/s^2).
77 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
78 * resolved along body-frame axes, averaged over time interval and
79 * expressed in radians per second (rad/s).
80 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
81 * resolved along body-frame axes, averaged over time interval and
82 * expressed in radians per second (rad/s).
83 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
84 * resolved along body-frame axes, averaged over time interval and
85 * expressed in radians per second (rad/s).
86 * @param result instance where new estimated ECI frame containing new body position,
87 * velocity and coordinate transformation matrix will be stored.
88 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
89 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
90 * body-to-ECI-frame coordinate transformation matrix are
91 * invalid.
92 */
93 public void navigate(
94 final double timeInterval, final double oldX, final double oldY, final double oldZ,
95 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
96 final double fx, final double fy, final double fz,
97 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
98 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
99 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
100 angularRateX, angularRateY, angularRateZ, result);
101 }
102
103 /**
104 * Runs precision ECI-frame inertial navigation equations.
105 *
106 * @param timeInterval time interval between epochs.
107 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
108 * frame, resolved along ECI-frame axes and expressed in meters (m).
109 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
110 * frame, resolved along ECI-frame axes and expressed in meters (m).
111 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
112 * frame, resolved along ECI-frame axes and expressed in meters (m).
113 * @param oldC previous body-to-ECI-frame coordinate transformation.
114 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
115 * resolved along ECI-frame axes and expressed in meters per second (m/s).
116 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
117 * resolved along ECI-frame axes and expressed in meters per second (m/s).
118 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
119 * resolved along ECI-frame axes and expressed in meters per second (m/s).
120 * @param fx specific force x-coordinate of body frame with respect ECI frame,
121 * resolved along body-frame axes, averaged over time interval and
122 * expressed in meters per squared second (m/s^2).
123 * @param fy specific force y-coordinate of body frame with respect ECI frame,
124 * resolved along body-frame axes, averaged over time interval and
125 * expressed in meters per squared second (m/s^2).
126 * @param fz specific force z-coordinate of body frame with respect ECI frame,
127 * resolved along body-frame axes, averaged over time interval and
128 * expressed in meters per squared second (m/s^2).
129 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
130 * resolved along body-frame axes, averaged over time interval and
131 * expressed in radians per second (rad/s).
132 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
133 * resolved along body-frame axes, averaged over time interval and
134 * expressed in radians per second (rad/s).
135 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
136 * resolved along body-frame axes, averaged over time interval and
137 * expressed in radians per second (rad/s).
138 * @param result instance where new estimated ECI frame containing new body position,
139 * velocity and coordinate transformation matrix will be stored.
140 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
141 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
142 * body-to-ECI-frame coordinate transformation matrix are
143 * invalid.
144 */
145 public void navigate(
146 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
147 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
148 final double fx, final double fy, final double fz,
149 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
150 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
151 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
152 angularRateX, angularRateY, angularRateZ, result);
153 }
154
155 /**
156 * Runs precision ECI-frame inertial navigation equations.
157 *
158 * @param timeInterval time interval between epochs expressed in seconds (s).
159 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
160 * frame, resolved along ECI-frame axes and expressed in meters (m).
161 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
162 * frame, resolved along ECI-frame axes and expressed in meters (m).
163 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
164 * frame, resolved along ECI-frame axes and expressed in meters (m).
165 * @param oldC previous body-to-ECI-frame coordinate transformation.
166 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
167 * resolved along ECI-frame axes and expressed in meters per second (m/s).
168 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
169 * resolved along ECI-frame axes and expressed in meters per second (m/s).
170 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
171 * resolved along ECI-frame axes and expressed in meters per second (m/s).
172 * @param kinematics body kinematics containing specific forces and angular rates applied to
173 * the body.
174 * @param result instance where new estimated ECI frame containing new body position,
175 * velocity and coordinate transformation matrix will be stored.
176 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
177 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
178 * body-to-ECI-frame coordinate transformation matrix are
179 * invalid.
180 */
181 public void navigate(
182 final double timeInterval, final double oldX, final double oldY, final double oldZ,
183 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
184 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
185 InvalidSourceAndDestinationFrameTypeException {
186 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
187 }
188
189 /**
190 * Runs precision ECI-frame inertial navigation equations.
191 *
192 * @param timeInterval time interval between epochs.
193 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
194 * frame, resolved along ECI-frame axes and expressed in meters (m).
195 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
196 * frame, resolved along ECI-frame axes and expressed in meters (m).
197 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
198 * frame, resolved along ECI-frame axes and expressed in meters (m).
199 * @param oldC previous body-to-ECI-frame coordinate transformation.
200 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
201 * resolved along ECI-frame axes and expressed in meters per second (m/s).
202 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
203 * resolved along ECI-frame axes and expressed in meters per second (m/s).
204 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
205 * resolved along ECI-frame axes and expressed in meters per second (m/s).
206 * @param kinematics body kinematics containing specific forces and angular rates applied to
207 * the body.
208 * @param result instance where new estimated ECI frame containing new body position,
209 * velocity and coordinate transformation matrix will be stored.
210 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
211 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
212 * body-to-ECI-frame coordinate transformation matrix are
213 * invalid.
214 */
215 public void navigate(
216 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
217 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
218 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
219 InvalidSourceAndDestinationFrameTypeException {
220 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
221 }
222
223 /**
224 * Runs precision ECI-frame inertial navigation equations.
225 *
226 * @param timeInterval time interval between epochs expressed in seconds (s).
227 * @param oldPosition previous cartesian position of body frame with respect ECI
228 * frame, resolved along ECI-frame axes and expressed in meters (m).
229 * @param oldC previous body-to-ECI-frame coordinate transformation.
230 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
231 * resolved along ECI-frame axes and expressed in meters per second (m/s).
232 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
233 * resolved along ECI-frame axes and expressed in meters per second (m/s).
234 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
235 * resolved along ECI-frame axes and expressed in meters per second (m/s).
236 * @param fx specific force x-coordinate of body frame with respect ECI frame,
237 * resolved along body-frame axes, averaged over time interval and
238 * expressed in meters per squared second (m/s^2).
239 * @param fy specific force y-coordinate of body frame with respect ECI frame,
240 * resolved along body-frame axes, averaged over time interval and
241 * expressed in meters per squared second (m/s^2).
242 * @param fz specific force z-coordinate of body frame with respect ECI frame,
243 * resolved along body-frame axes, averaged over time interval and
244 * expressed in meters per squared second (m/s^2).
245 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
246 * resolved along body-frame axes, averaged over time interval and
247 * expressed in radians per second (rad/s).
248 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
249 * resolved along body-frame axes, averaged over time interval and
250 * expressed in radians per second (rad/s).
251 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
252 * resolved along body-frame axes, averaged over time interval and
253 * expressed in radians per second (rad/s).
254 * @param result instance where new estimated ECI frame containing new body position,
255 * velocity and coordinate transformation matrix will be stored.
256 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
257 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
258 * body-to-ECI-frame coordinate transformation matrix are
259 * invalid.
260 */
261 public void navigate(
262 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
263 final double oldVx, final double oldVy, final double oldVz,
264 final double fx, final double fy, final double fz,
265 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
266 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
267 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
268 angularRateX, angularRateY, angularRateZ, result);
269 }
270
271 /**
272 * Runs precision ECI-frame inertial navigation equations.
273 *
274 * @param timeInterval time interval between epochs.
275 * @param oldPosition previous cartesian position of body frame with respect ECI
276 * frame, resolved along ECI-frame axes and expressed in meters (m).
277 * @param oldC previous body-to-ECI-frame coordinate transformation.
278 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
279 * resolved along ECI-frame axes and expressed in meters per second (m/s).
280 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
281 * resolved along ECI-frame axes and expressed in meters per second (m/s).
282 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
283 * resolved along ECI-frame axes and expressed in meters per second (m/s).
284 * @param fx specific force x-coordinate of body frame with respect ECI frame,
285 * resolved along body-frame axes, averaged over time interval and
286 * expressed in meters per squared second (m/s^2).
287 * @param fy specific force y-coordinate of body frame with respect ECI frame,
288 * resolved along body-frame axes, averaged over time interval and
289 * expressed in meters per squared second (m/s^2).
290 * @param fz specific force z-coordinate of body frame with respect ECI frame,
291 * resolved along body-frame axes, averaged over time interval and
292 * expressed in meters per squared second (m/s^2).
293 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
294 * resolved along body-frame axes, averaged over time interval and
295 * expressed in radians per second (rad/s).
296 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
297 * resolved along body-frame axes, averaged over time interval and
298 * expressed in radians per second (rad/s).
299 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
300 * resolved along body-frame axes, averaged over time interval and
301 * expressed in radians per second (rad/s).
302 * @param result instance where new estimated ECI frame containing new body position,
303 * velocity and coordinate transformation matrix will be stored.
304 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
305 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
306 * body-to-ECI-frame coordinate transformation matrix are
307 * invalid.
308 */
309 public void navigate(
310 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
311 final double oldVx, final double oldVy, final double oldVz,
312 final double fx, final double fy, final double fz,
313 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
314 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
315 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
316 angularRateX, angularRateY, angularRateZ, result);
317 }
318
319 /**
320 * Runs precision ECI-frame inertial navigation equations.
321 *
322 * @param timeInterval time interval between epochs expressed in seconds (s).
323 * @param oldPosition previous cartesian position of body frame with respect ECI
324 * frame, resolved along ECI-frame axes and expressed in meters (m).
325 * @param oldC previous body-to-ECI-frame coordinate transformation.
326 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
327 * resolved along ECI-frame axes and expressed in meters per second (m/s).
328 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
329 * resolved along ECI-frame axes and expressed in meters per second (m/s).
330 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
331 * resolved along ECI-frame axes and expressed in meters per second (m/s).
332 * @param kinematics body kinematics containing specific forces and angular rates applied to
333 * the body.
334 * @param result instance where new estimated ECI frame containing new body position,
335 * velocity and coordinate transformation matrix will be stored.
336 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
337 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
338 * body-to-ECI-frame coordinate transformation matrix are
339 * invalid.
340 */
341 public void navigate(
342 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
343 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
344 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
345 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
346 }
347
348 /**
349 * Runs precision ECI-frame inertial navigation equations.
350 *
351 * @param timeInterval time interval between epochs.
352 * @param oldPosition previous cartesian position of body frame with respect ECI
353 * frame, resolved along ECI-frame axes and expressed in meters (m).
354 * @param oldC previous body-to-ECI-frame coordinate transformation.
355 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
356 * resolved along ECI-frame axes and expressed in meters per second (m/s).
357 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
358 * resolved along ECI-frame axes and expressed in meters per second (m/s).
359 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
360 * resolved along ECI-frame axes and expressed in meters per second (m/s).
361 * @param kinematics body kinematics containing specific forces and angular rates applied to
362 * the body.
363 * @param result instance where new estimated ECI frame containing new body position,
364 * velocity and coordinate transformation matrix will be stored.
365 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
366 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
367 * body-to-ECI-frame coordinate transformation matrix are
368 * invalid.
369 */
370 public void navigate(
371 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
372 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
373 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
374 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
375 }
376
377 /**
378 * Runs precision ECI-frame inertial navigation equations.
379 *
380 * @param timeInterval time interval between epochs expressed in seconds (s).
381 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
382 * frame, resolved along ECI-frame axes.
383 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
384 * frame, resolved along ECI-frame axes.
385 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
386 * frame, resolved along ECI-frame axes.
387 * @param oldC previous body-to-ECI-frame coordinate transformation.
388 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
389 * resolved along ECI-frame axes and expressed in meters per second (m/s).
390 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
391 * resolved along ECI-frame axes and expressed in meters per second (m/s).
392 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
393 * resolved along ECI-frame axes and expressed in meters per second (m/s).
394 * @param fx specific force x-coordinate of body frame with respect ECI frame,
395 * resolved along body-frame axes, averaged over time interval and
396 * expressed in meters per squared second (m/s^2).
397 * @param fy specific force y-coordinate of body frame with respect ECI frame,
398 * resolved along body-frame axes, averaged over time interval and
399 * expressed in meters per squared second (m/s^2).
400 * @param fz specific force z-coordinate of body frame with respect ECI frame,
401 * resolved along body-frame axes, averaged over time interval and
402 * expressed in meters per squared second (m/s^2).
403 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
404 * resolved along body-frame axes, averaged over time interval and
405 * expressed in radians per second (rad/s).
406 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
407 * resolved along body-frame axes, averaged over time interval and
408 * expressed in radians per second (rad/s).
409 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
410 * resolved along body-frame axes, averaged over time interval and
411 * expressed in radians per second (rad/s).
412 * @param result instance where new estimated ECI frame containing new body position,
413 * velocity and coordinate transformation matrix will be stored.
414 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
415 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
416 * body-to-ECI-frame coordinate transformation matrix are
417 * invalid.
418 */
419 public void navigate(
420 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
421 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
422 final double fx, final double fy, final double fz,
423 final double angularRateX, final double angularRateY, final double angularRateZ,
424 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
425 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
426 angularRateX, angularRateY, angularRateZ, result);
427 }
428
429 /**
430 * Runs precision ECI-frame inertial navigation equations.
431 *
432 * @param timeInterval time interval between epochs.
433 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
434 * frame, resolved along ECI-frame axes.
435 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
436 * frame, resolved along ECI-frame axes.
437 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
438 * frame, resolved along ECI-frame axes.
439 * @param oldC previous body-to-ECI-frame coordinate transformation.
440 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
441 * resolved along ECI-frame axes and expressed in meters per second (m/s).
442 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
443 * resolved along ECI-frame axes and expressed in meters per second (m/s).
444 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
445 * resolved along ECI-frame axes and expressed in meters per second (m/s).
446 * @param fx specific force x-coordinate of body frame with respect ECI frame,
447 * resolved along body-frame axes, averaged over time interval and
448 * expressed in meters per squared second (m/s^2).
449 * @param fy specific force y-coordinate of body frame with respect ECI frame,
450 * resolved along body-frame axes, averaged over time interval and
451 * expressed in meters per squared second (m/s^2).
452 * @param fz specific force z-coordinate of body frame with respect ECI frame,
453 * resolved along body-frame axes, averaged over time interval and
454 * expressed in meters per squared second (m/s^2).
455 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
456 * resolved along body-frame axes, averaged over time interval and
457 * expressed in radians per second (rad/s).
458 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
459 * resolved along body-frame axes, averaged over time interval and
460 * expressed in radians per second (rad/s).
461 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
462 * resolved along body-frame axes, averaged over time interval and
463 * expressed in radians per second (rad/s).
464 * @param result instance where new estimated ECI frame containing new body position,
465 * velocity and coordinate transformation matrix will be stored.
466 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
467 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
468 * body-to-ECI-frame coordinate transformation matrix are
469 * invalid.
470 */
471 public void navigate(
472 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
473 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
474 final double fx, final double fy, final double fz,
475 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
476 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
477 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
478 angularRateX, angularRateY, angularRateZ, result);
479 }
480
481 /**
482 * Runs precision ECI-frame inertial navigation equations.
483 *
484 * @param timeInterval time interval between epochs expressed in seconds (s).
485 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
486 * frame, resolved along ECI-frame axes.
487 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
488 * frame, resolved along ECI-frame axes.
489 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
490 * frame, resolved along ECI-frame axes.
491 * @param oldC previous body-to-ECI-frame coordinate transformation.
492 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
493 * resolved along ECI-frame axes and expressed in meters per second (m/s).
494 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
495 * resolved along ECI-frame axes and expressed in meters per second (m/s).
496 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
497 * resolved along ECI-frame axes and expressed in meters per second (m/s).
498 * @param kinematics body kinematics containing specific forces and angular rates applied to
499 * the body.
500 * @param result instance where new estimated ECI frame containing new body position,
501 * velocity and coordinate transformation matrix will be stored.
502 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
503 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
504 * body-to-ECI-frame coordinate transformation matrix are
505 * invalid.
506 */
507 public void navigate(
508 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
509 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
510 final BodyKinematics kinematics, final ECIFrame result)
511 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
512 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
513 }
514
515 /**
516 * Runs precision ECI-frame inertial navigation equations.
517 *
518 * @param timeInterval time interval between epochs.
519 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
520 * frame, resolved along ECI-frame axes.
521 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
522 * frame, resolved along ECI-frame axes.
523 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
524 * frame, resolved along ECI-frame axes.
525 * @param oldC previous body-to-ECI-frame coordinate transformation.
526 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
527 * resolved along ECI-frame axes and expressed in meters per second (m/s).
528 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
529 * resolved along ECI-frame axes and expressed in meters per second (m/s).
530 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
531 * resolved along ECI-frame axes and expressed in meters per second (m/s).
532 * @param kinematics body kinematics containing specific forces and angular rates applied to
533 * the body.
534 * @param result instance where new estimated ECI frame containing new body position,
535 * velocity and coordinate transformation matrix will be stored.
536 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
537 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
538 * body-to-ECI-frame coordinate transformation matrix are
539 * invalid.
540 */
541 public void navigate(
542 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
543 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
544 final BodyKinematics kinematics, final ECIFrame result)
545 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
546 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
547 }
548
549 /**
550 * Runs precision ECI-frame inertial navigation equations.
551 *
552 * @param timeInterval time interval between epochs expressed in seconds (s).
553 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
554 * frame, resolved along ECI-frame axes and expressed in meters (m).
555 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
556 * frame, resolved along ECI-frame axes and expressed in meters (m).
557 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
558 * frame, resolved along ECI-frame axes and expressed in meters (m).
559 * @param oldC previous body-to-ECI-frame coordinate transformation.
560 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
561 * resolved along ECI-frame axes.
562 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
563 * resolved along ECI-frame axes.
564 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
565 * resolved along ECI-frame axes.
566 * @param fx specific force x-coordinate of body frame with respect ECI frame,
567 * resolved along body-frame axes, averaged over time interval and
568 * expressed in meters per squared second (m/s^2).
569 * @param fy specific force y-coordinate of body frame with respect ECI frame,
570 * resolved along body-frame axes, averaged over time interval and
571 * expressed in meters per squared second (m/s^2).
572 * @param fz specific force z-coordinate of body frame with respect ECI frame,
573 * resolved along body-frame axes, averaged over time interval and
574 * expressed in meters per squared second (m/s^2).
575 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
576 * resolved along body-frame axes, averaged over time interval and
577 * expressed in radians per second (rad/s).
578 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
579 * resolved along body-frame axes, averaged over time interval and
580 * expressed in radians per second (rad/s).
581 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
582 * resolved along body-frame axes, averaged over time interval and
583 * expressed in radians per second (rad/s).
584 * @param result instance where new estimated ECI frame containing new body position,
585 * velocity and coordinate transformation matrix will be stored.
586 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
587 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
588 * body-to-ECI-frame coordinate transformation matrix are
589 * invalid.
590 */
591 public void navigate(
592 final double timeInterval, final double oldX, final double oldY, final double oldZ,
593 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
594 final double fx, final double fy, final double fz,
595 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
596 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
597 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
598 angularRateX, angularRateY, angularRateZ, result);
599 }
600
601 /**
602 * Runs precision ECI-frame inertial navigation equations.
603 *
604 * @param timeInterval time interval between epochs.
605 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
606 * frame, resolved along ECI-frame axes and expressed in meters (m).
607 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
608 * frame, resolved along ECI-frame axes and expressed in meters (m).
609 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
610 * frame, resolved along ECI-frame axes and expressed in meters (m).
611 * @param oldC previous body-to-ECI-frame coordinate transformation.
612 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
613 * resolved along ECI-frame axes.
614 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
615 * resolved along ECI-frame axes.
616 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
617 * resolved along ECI-frame axes.
618 * @param fx specific force x-coordinate of body frame with respect ECI frame,
619 * resolved along body-frame axes, averaged over time interval and
620 * expressed in meters per squared second (m/s^2).
621 * @param fy specific force y-coordinate of body frame with respect ECI frame,
622 * resolved along body-frame axes, averaged over time interval and
623 * expressed in meters per squared second (m/s^2).
624 * @param fz specific force z-coordinate of body frame with respect ECI frame,
625 * resolved along body-frame axes, averaged over time interval and
626 * expressed in meters per squared second (m/s^2).
627 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
628 * resolved along body-frame axes, averaged over time interval and
629 * expressed in radians per second (rad/s).
630 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
631 * resolved along body-frame axes, averaged over time interval and
632 * expressed in radians per second (rad/s).
633 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
634 * resolved along body-frame axes, averaged over time interval and
635 * expressed in radians per second (rad/s).
636 * @param result instance where new estimated ECI frame containing new body position,
637 * velocity and coordinate transformation matrix will be stored.
638 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
639 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
640 * body-to-ECI-frame coordinate transformation matrix are
641 * invalid.
642 */
643 public void navigate(
644 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
645 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
646 final double fx, final double fy, final double fz,
647 final double angularRateX, final double angularRateY, final double angularRateZ,
648 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
649 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
650 angularRateX, angularRateY, angularRateZ, result);
651 }
652
653 /**
654 * Runs precision ECI-frame inertial navigation equations.
655 *
656 * @param timeInterval time interval between epochs expressed in seconds (s).
657 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
658 * frame, resolved along ECI-frame axes and expressed in meters (m).
659 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
660 * frame, resolved along ECI-frame axes and expressed in meters (m).
661 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
662 * frame, resolved along ECI-frame axes and expressed in meters (m).
663 * @param oldC previous body-to-ECI-frame coordinate transformation.
664 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
665 * resolved along ECI-frame axes.
666 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
667 * resolved along ECI-frame axes.
668 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
669 * resolved along ECI-frame axes.
670 * @param kinematics body kinematics containing specific forces and angular rates applied to
671 * the body.
672 * @param result instance where new estimated ECI frame containing new body position,
673 * velocity and coordinate transformation matrix will be stored.
674 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
675 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
676 * body-to-ECI-frame coordinate transformation matrix are
677 * invalid.
678 */
679 public void navigate(
680 final double timeInterval, final double oldX, final double oldY, final double oldZ,
681 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
682 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
683 InvalidSourceAndDestinationFrameTypeException {
684 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
685 }
686
687 /**
688 * Runs precision ECI-frame inertial navigation equations.
689 *
690 * @param timeInterval time interval between epochs expressed in seconds (s).
691 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
692 * frame, resolved along ECI-frame axes and expressed in meters (m).
693 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
694 * frame, resolved along ECI-frame axes and expressed in meters (m).
695 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
696 * frame, resolved along ECI-frame axes and expressed in meters (m).
697 * @param oldC previous body-to-ECI-frame coordinate transformation.
698 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
699 * resolved along ECI-frame axes.
700 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
701 * resolved along ECI-frame axes.
702 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
703 * resolved along ECI-frame axes.
704 * @param kinematics body kinematics containing specific forces and angular rates applied to
705 * the body.
706 * @param result instance where new estimated ECI frame containing new body position,
707 * velocity and coordinate transformation matrix will be stored.
708 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
709 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
710 * body-to-ECI-frame coordinate transformation matrix are
711 * invalid.
712 */
713 public void navigate(
714 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
715 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
716 final BodyKinematics kinematics, final ECIFrame result)
717 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
718 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
719 }
720
721 /**
722 * Runs precision ECI-frame inertial navigation equations.
723 *
724 * @param timeInterval time interval between epochs expressed in seconds (s).
725 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
726 * frame, resolved along ECI-frame axes and expressed in meters (m).
727 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
728 * frame, resolved along ECI-frame axes and expressed in meters (m).
729 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
730 * frame, resolved along ECI-frame axes and expressed in meters (m).
731 * @param oldC previous body-to-ECI-frame coordinate transformation.
732 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
733 * resolved along ECI-frame axes and expressed in meters per second (m/s).
734 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
735 * resolved along ECI-frame axes and expressed in meters per second (m/s).
736 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
737 * resolved along ECI-frame axes and expressed in meters per second (m/s).
738 * @param fx specific force x-coordinate of body frame with respect ECI frame,
739 * resolved along body-frame axes, averaged over time interval.
740 * @param fy specific force y-coordinate of body frame with respect ECI frame,
741 * resolved along body-frame axes, averaged over time interval.
742 * @param fz specific force z-coordinate of body frame with respect ECI frame,
743 * resolved along body-frame axes, averaged over time interval.
744 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
745 * resolved along body-frame axes, averaged over time interval and
746 * expressed in radians per second (rad/s).
747 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
748 * resolved along body-frame axes, averaged over time interval and
749 * expressed in radians per second (rad/s).
750 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
751 * resolved along body-frame axes, averaged over time interval and
752 * expressed in radians per second (rad/s).
753 * @param result instance where new estimated ECI frame containing new body position,
754 * velocity and coordinate transformation matrix will be stored.
755 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
756 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
757 * body-to-ECI-frame coordinate transformation matrix are
758 * invalid.
759 */
760 public void navigate(
761 final double timeInterval, final double oldX, final double oldY, final double oldZ,
762 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
763 final Acceleration fx, final Acceleration fy, final Acceleration fz,
764 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
765 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
766 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
767 angularRateX, angularRateY, angularRateZ, result);
768 }
769
770 /**
771 * Runs precision ECI-frame inertial navigation equations.
772 *
773 * @param timeInterval time interval between epochs.
774 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
775 * frame, resolved along ECI-frame axes and expressed in meters (m).
776 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
777 * frame, resolved along ECI-frame axes and expressed in meters (m).
778 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
779 * frame, resolved along ECI-frame axes and expressed in meters (m).
780 * @param oldC previous body-to-ECI-frame coordinate transformation.
781 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
782 * resolved along ECI-frame axes and expressed in meters per second (m/s).
783 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
784 * resolved along ECI-frame axes and expressed in meters per second (m/s).
785 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
786 * resolved along ECI-frame axes and expressed in meters per second (m/s).
787 * @param fx specific force x-coordinate of body frame with respect ECI frame,
788 * resolved along body-frame axes, averaged over time interval.
789 * @param fy specific force y-coordinate of body frame with respect ECI frame,
790 * resolved along body-frame axes, averaged over time interval.
791 * @param fz specific force z-coordinate of body frame with respect ECI frame,
792 * resolved along body-frame axes, averaged over time interval.
793 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
794 * resolved along body-frame axes, averaged over time interval and
795 * expressed in radians per second (rad/s).
796 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
797 * resolved along body-frame axes, averaged over time interval and
798 * expressed in radians per second (rad/s).
799 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
800 * resolved along body-frame axes, averaged over time interval and
801 * expressed in radians per second (rad/s).
802 * @param result instance where new estimated ECI frame containing new body position,
803 * velocity and coordinate transformation matrix will be stored.
804 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
805 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
806 * body-to-ECI-frame coordinate transformation matrix are
807 * invalid.
808 */
809 public void navigate(
810 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
811 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
812 final Acceleration fx, final Acceleration fy, final Acceleration fz,
813 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
814 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
815 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
816 angularRateX, angularRateY, angularRateZ, result);
817 }
818
819 /**
820 * Runs precision ECI-frame inertial navigation equations.
821 *
822 * @param timeInterval time interval between epochs expressed in seconds (s).
823 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
824 * frame, resolved along ECI-frame axes and expressed in meters (m).
825 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
826 * frame, resolved along ECI-frame axes and expressed in meters (m).
827 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
828 * frame, resolved along ECI-frame axes and expressed in meters (m).
829 * @param oldC previous body-to-ECI-frame coordinate transformation.
830 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
831 * resolved along ECI-frame axes and expressed in meters per second (m/s).
832 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
833 * resolved along ECI-frame axes and expressed in meters per second (m/s).
834 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
835 * resolved along ECI-frame axes and expressed in meters per second (m/s).
836 * @param fx specific force x-coordinate of body frame with respect ECI frame,
837 * resolved along body-frame axes, averaged over time interval and
838 * expressed in meters per squared second (m/s^2).
839 * @param fy specific force y-coordinate of body frame with respect ECI frame,
840 * resolved along body-frame axes, averaged over time interval and
841 * expressed in meters per squared second (m/s^2).
842 * @param fz specific force z-coordinate of body frame with respect ECI frame,
843 * resolved along body-frame axes, averaged over time interval and
844 * expressed in meters per squared second (m/s^2).
845 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
846 * resolved along body-frame axes, averaged over time interval.
847 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
848 * resolved along body-frame axes, averaged over time interval.
849 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
850 * resolved along body-frame axes, averaged over time interval.
851 * @param result instance where new estimated ECI frame containing new body position,
852 * velocity and coordinate transformation matrix will be stored.
853 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
854 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
855 * body-to-ECI-frame coordinate transformation matrix are
856 * invalid.
857 */
858 public void navigate(
859 final double timeInterval, final double oldX, final double oldY, final double oldZ,
860 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
861 final double fx, final double fy, final double fz,
862 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
863 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
864 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
865 angularRateX, angularRateY, angularRateZ, result);
866 }
867
868 /**
869 * Runs precision ECI-frame inertial navigation equations.
870 *
871 * @param timeInterval time interval between epochs.
872 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
873 * frame, resolved along ECI-frame axes and expressed in meters (m).
874 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
875 * frame, resolved along ECI-frame axes and expressed in meters (m).
876 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
877 * frame, resolved along ECI-frame axes and expressed in meters (m).
878 * @param oldC previous body-to-ECI-frame coordinate transformation.
879 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
880 * resolved along ECI-frame axes and expressed in meters per second (m/s).
881 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
882 * resolved along ECI-frame axes and expressed in meters per second (m/s).
883 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
884 * resolved along ECI-frame axes and expressed in meters per second (m/s).
885 * @param fx specific force x-coordinate of body frame with respect ECI frame,
886 * resolved along body-frame axes, averaged over time interval and
887 * expressed in meters per squared second (m/s^2).
888 * @param fy specific force y-coordinate of body frame with respect ECI frame,
889 * resolved along body-frame axes, averaged over time interval and
890 * expressed in meters per squared second (m/s^2).
891 * @param fz specific force z-coordinate of body frame with respect ECI frame,
892 * resolved along body-frame axes, averaged over time interval and
893 * expressed in meters per squared second (m/s^2).
894 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
895 * resolved along body-frame axes, averaged over time interval.
896 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
897 * resolved along body-frame axes, averaged over time interval.
898 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
899 * resolved along body-frame axes, averaged over time interval.
900 * @param result instance where new estimated ECI frame containing new body position,
901 * velocity and coordinate transformation matrix will be stored.
902 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
903 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
904 * body-to-ECI-frame coordinate transformation matrix are
905 * invalid.
906 */
907 public void navigate(
908 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
909 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
910 final double fx, final double fy, final double fz,
911 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
912 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
913 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
914 angularRateX, angularRateY, angularRateZ, result);
915 }
916
917 /**
918 * Runs precision ECI-frame inertial navigation equations.
919 *
920 * @param timeInterval time interval between epochs expressed in seconds (s).
921 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
922 * frame, resolved along ECI-frame axes.
923 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
924 * frame, resolved along ECI-frame axes.
925 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
926 * frame, resolved along ECI-frame axes.
927 * @param oldC previous body-to-ECI-frame coordinate transformation.
928 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
929 * resolved along ECI-frame axes.
930 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
931 * resolved along ECI-frame axes.
932 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
933 * resolved along ECI-frame axes.
934 * @param fx specific force x-coordinate of body frame with respect ECI frame,
935 * resolved along body-frame axes, averaged over time interval and
936 * expressed in meters per squared second (m/s^2).
937 * @param fy specific force y-coordinate of body frame with respect ECI frame,
938 * resolved along body-frame axes, averaged over time interval and
939 * expressed in meters per squared second (m/s^2).
940 * @param fz specific force z-coordinate of body frame with respect ECI frame,
941 * resolved along body-frame axes, averaged over time interval and
942 * expressed in meters per squared second (m/s^2).
943 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
944 * resolved along body-frame axes, averaged over time interval and
945 * expressed in radians per second (rad/s).
946 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
947 * resolved along body-frame axes, averaged over time interval and
948 * expressed in radians per second (rad/s).
949 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
950 * resolved along body-frame axes, averaged over time interval and
951 * expressed in radians per second (rad/s).
952 * @param result instance where new estimated ECI frame containing new body position,
953 * velocity and coordinate transformation matrix will be stored.
954 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
955 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
956 * body-to-ECI-frame coordinate transformation matrix are
957 * invalid.
958 */
959 public void navigate(
960 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
961 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
962 final double fx, final double fy, final double fz,
963 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
964 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
965 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
966 angularRateX, angularRateY, angularRateZ, result);
967 }
968
969 /**
970 * Runs precision ECI-frame inertial navigation equations.
971 *
972 * @param timeInterval time interval between epochs.
973 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
974 * frame, resolved along ECI-frame axes.
975 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
976 * frame, resolved along ECI-frame axes.
977 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
978 * frame, resolved along ECI-frame axes.
979 * @param oldC previous body-to-ECI-frame coordinate transformation.
980 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
981 * resolved along ECI-frame axes.
982 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
983 * resolved along ECI-frame axes.
984 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
985 * resolved along ECI-frame axes.
986 * @param fx specific force x-coordinate of body frame with respect ECI frame,
987 * resolved along body-frame axes, averaged over time interval and
988 * expressed in meters per squared second (m/s^2).
989 * @param fy specific force y-coordinate of body frame with respect ECI frame,
990 * resolved along body-frame axes, averaged over time interval and
991 * expressed in meters per squared second (m/s^2).
992 * @param fz specific force z-coordinate of body frame with respect ECI frame,
993 * resolved along body-frame axes, averaged over time interval and
994 * expressed in meters per squared second (m/s^2).
995 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
996 * resolved along body-frame axes, averaged over time interval and
997 * expressed in radians per second (rad/s).
998 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
999 * resolved along body-frame axes, averaged over time interval and
1000 * expressed in radians per second (rad/s).
1001 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1002 * resolved along body-frame axes, averaged over time interval and
1003 * expressed in radians per second (rad/s).
1004 * @param result instance where new estimated ECI frame containing new body position,
1005 * velocity and coordinate transformation matrix will be stored.
1006 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1007 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1008 * body-to-ECI-frame coordinate transformation matrix are
1009 * invalid.
1010 */
1011 public void navigate(
1012 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1013 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1014 final double fx, final double fy, final double fz,
1015 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
1016 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1017 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1018 angularRateX, angularRateY, angularRateZ, result);
1019 }
1020
1021 /**
1022 * Runs precision ECI-frame inertial navigation equations.
1023 *
1024 * @param timeInterval time interval between epochs expressed in seconds (s).
1025 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1026 * frame, resolved along ECI-frame axes.
1027 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1028 * frame, resolved along ECI-frame axes.
1029 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1030 * frame, resolved along ECI-frame axes.
1031 * @param oldC previous body-to-ECI-frame coordinate transformation.
1032 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
1033 * resolved along ECI-frame axes.
1034 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
1035 * resolved along ECI-frame axes.
1036 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
1037 * resolved along ECI-frame axes.
1038 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1039 * resolved along body-frame axes, averaged over time interval.
1040 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1041 * resolved along body-frame axes, averaged over time interval.
1042 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1043 * resolved along body-frame axes, averaged over time interval.
1044 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1045 * resolved along body-frame axes, averaged over time interval.
1046 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1047 * resolved along body-frame axes, averaged over time interval.
1048 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1049 * resolved along body-frame axes, averaged over time interval.
1050 * @param result instance where new estimated ECI frame containing new body position,
1051 * velocity and coordinate transformation matrix will be stored.
1052 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1053 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1054 * body-to-ECI-frame coordinate transformation matrix are
1055 * invalid.
1056 */
1057 public void navigate(
1058 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1059 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1060 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1061 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1062 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1063 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1064 angularRateX, angularRateY, angularRateZ, result);
1065 }
1066
1067 /**
1068 * Runs precision ECI-frame inertial navigation equations.
1069 *
1070 * @param timeInterval time interval between epochs.
1071 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1072 * frame, resolved along ECI-frame axes.
1073 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1074 * frame, resolved along ECI-frame axes.
1075 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1076 * frame, resolved along ECI-frame axes.
1077 * @param oldC previous body-to-ECI-frame coordinate transformation.
1078 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
1079 * resolved along ECI-frame axes.
1080 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
1081 * resolved along ECI-frame axes.
1082 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
1083 * resolved along ECI-frame axes.
1084 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1085 * resolved along body-frame axes, averaged over time interval.
1086 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1087 * resolved along body-frame axes, averaged over time interval.
1088 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1089 * resolved along body-frame axes, averaged over time interval.
1090 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1091 * resolved along body-frame axes, averaged over time interval.
1092 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1093 * resolved along body-frame axes, averaged over time interval.
1094 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1095 * resolved along body-frame axes, averaged over time interval.
1096 * @param result instance where new estimated ECI frame containing new body position,
1097 * velocity and coordinate transformation matrix will be stored.
1098 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1099 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1100 * body-to-ECI-frame coordinate transformation matrix are
1101 * invalid.
1102 */
1103 public void navigate(
1104 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1105 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1106 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1107 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1108 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1109 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1110 angularRateX, angularRateY, angularRateZ, result);
1111 }
1112
1113 /**
1114 * Runs precision ECI-frame inertial navigation equations.
1115 *
1116 * @param timeInterval time interval between epochs expressed in seconds (s).
1117 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1118 * frame, resolved along ECI-frame axes and expressed in meters (m).
1119 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1120 * frame, resolved along ECI-frame axes and expressed in meters (m).
1121 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1122 * frame, resolved along ECI-frame axes and expressed in meters (m).
1123 * @param oldC previous body-to-ECI-frame coordinate transformation.
1124 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1125 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1126 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1127 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1128 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1129 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1130 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1131 * resolved along body-frame axes, averaged over time interval.
1132 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1133 * resolved along body-frame axes, averaged over time interval.
1134 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1135 * resolved along body-frame axes, averaged over time interval.
1136 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1137 * resolved along body-frame axes, averaged over time interval.
1138 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1139 * resolved along body-frame axes, averaged over time interval.
1140 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1141 * resolved along body-frame axes, averaged over time interval.
1142 * @param result instance where new estimated ECI frame containing new body position,
1143 * velocity and coordinate transformation matrix will be stored.
1144 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1145 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1146 * body-to-ECI-frame coordinate transformation matrix are
1147 * invalid.
1148 */
1149 public void navigate(
1150 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1151 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1152 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1153 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1154 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1155 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1156 angularRateX, angularRateY, angularRateZ, result);
1157 }
1158
1159 /**
1160 * Runs precision ECI-frame inertial navigation equations.
1161 *
1162 * @param timeInterval time interval between epochs.
1163 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1164 * frame, resolved along ECI-frame axes and expressed in meters (m).
1165 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1166 * frame, resolved along ECI-frame axes and expressed in meters (m).
1167 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1168 * frame, resolved along ECI-frame axes and expressed in meters (m).
1169 * @param oldC previous body-to-ECI-frame coordinate transformation.
1170 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1171 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1172 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1173 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1174 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1175 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1176 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1177 * resolved along body-frame axes, averaged over time interval.
1178 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1179 * resolved along body-frame axes, averaged over time interval.
1180 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1181 * resolved along body-frame axes, averaged over time interval.
1182 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1183 * resolved along body-frame axes, averaged over time interval.
1184 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1185 * resolved along body-frame axes, averaged over time interval.
1186 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1187 * resolved along body-frame axes, averaged over time interval.
1188 * @param result instance where new estimated ECI frame containing new body position,
1189 * velocity and coordinate transformation matrix will be stored.
1190 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1191 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1192 * body-to-ECI-frame coordinate transformation matrix are
1193 * invalid.
1194 */
1195 public void navigate(
1196 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1197 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1198 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1199 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1200 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1201 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1202 angularRateX, angularRateY, angularRateZ, result);
1203 }
1204
1205 /**
1206 * Runs precision ECI-frame inertial navigation equations.
1207 *
1208 * @param timeInterval time interval between epochs expressed in seconds (s).
1209 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1210 * frame, resolved along ECI-frame axes.
1211 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1212 * frame, resolved along ECI-frame axes.
1213 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1214 * frame, resolved along ECI-frame axes.
1215 * @param oldC previous body-to-ECI-frame coordinate transformation.
1216 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
1217 * resolved along ECI-frame axes.
1218 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
1219 * resolved along ECI-frame axes.
1220 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
1221 * resolved along ECI-frame axes.
1222 * @param kinematics body kinematics containing specific forces and angular rates applied to
1223 * the body.
1224 * @param result instance where new estimated ECI frame containing new body position,
1225 * velocity and coordinate transformation matrix will be stored.
1226 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1227 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1228 * body-to-ECI-frame coordinate transformation matrix are
1229 * invalid.
1230 */
1231 public void navigate(
1232 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1233 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1234 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
1235 InvalidSourceAndDestinationFrameTypeException {
1236 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
1237 }
1238
1239 /**
1240 * Runs precision ECI-frame inertial navigation equations.
1241 *
1242 * @param timeInterval time interval between epochs.
1243 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1244 * frame, resolved along ECI-frame axes.
1245 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1246 * frame, resolved along ECI-frame axes.
1247 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1248 * frame, resolved along ECI-frame axes.
1249 * @param oldC previous body-to-ECI-frame coordinate transformation.
1250 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
1251 * resolved along ECI-frame axes.
1252 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
1253 * resolved along ECI-frame axes.
1254 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
1255 * resolved along ECI-frame axes.
1256 * @param kinematics body kinematics containing specific forces and angular rates applied to
1257 * the body.
1258 * @param result instance where new estimated ECI frame containing new body position,
1259 * velocity and coordinate transformation matrix will be stored.
1260 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1261 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1262 * body-to-ECI-frame coordinate transformation matrix are
1263 * invalid.
1264 */
1265 public void navigate(
1266 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1267 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1268 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
1269 InvalidSourceAndDestinationFrameTypeException {
1270 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
1271 }
1272
1273 /**
1274 * Runs precision ECI-frame inertial navigation equations.
1275 *
1276 * @param timeInterval time interval between epochs expressed in seconds (s).
1277 * @param oldFrame previous ECI frame containing body position, velocity and
1278 * coordinate transformation matrix.
1279 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1280 * resolved along body-frame axes, averaged over time interval and
1281 * expressed in meters per squared second (m/s^2).
1282 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1283 * resolved along body-frame axes, averaged over time interval and
1284 * expressed in meters per squared second (m/s^2).
1285 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1286 * resolved along body-frame axes, averaged over time interval and
1287 * expressed in meters per squared second (m/s^2).
1288 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1289 * resolved along body-frame axes, averaged over time interval and
1290 * expressed in radians per second (rad/s).
1291 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1292 * resolved along body-frame axes, averaged over time interval and
1293 * expressed in radians per second (rad/s).
1294 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1295 * resolved along body-frame axes, averaged over time interval and
1296 * expressed in radians per second (rad/s).
1297 * @param result instance where new estimated ECI frame containing new body position,
1298 * velocity and coordinate transformation matrix will be stored.
1299 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1300 */
1301 public void navigate(
1302 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
1303 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
1304 throws InertialNavigatorException {
1305 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1306 }
1307
1308 /**
1309 * Runs precision ECI-frame inertial navigation equations.
1310 *
1311 * @param timeInterval time interval between epochs.
1312 * @param oldFrame previous ECI frame containing body position, velocity and
1313 * coordinate transformation matrix.
1314 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1315 * resolved along body-frame axes, averaged over time interval and
1316 * expressed in meters per squared second (m/s^2).
1317 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1318 * resolved along body-frame axes, averaged over time interval and
1319 * expressed in meters per squared second (m/s^2).
1320 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1321 * resolved along body-frame axes, averaged over time interval and
1322 * expressed in meters per squared second (m/s^2).
1323 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1324 * resolved along body-frame axes, averaged over time interval and
1325 * expressed in radians per second (rad/s).
1326 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1327 * resolved along body-frame axes, averaged over time interval and
1328 * expressed in radians per second (rad/s).
1329 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1330 * resolved along body-frame axes, averaged over time interval and
1331 * expressed in radians per second (rad/s).
1332 * @param result instance where new estimated ECI frame containing new body position,
1333 * velocity and coordinate transformation matrix will be stored.
1334 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1335 */
1336 public void navigate(
1337 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
1338 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
1339 throws InertialNavigatorException {
1340 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1341 }
1342
1343 /**
1344 * Runs precision ECI-frame inertial navigation equations.
1345 *
1346 * @param timeInterval time interval between epochs expressed in seconds (s).
1347 * @param oldFrame previous ECI frame containing body position, velocity and
1348 * coordinate transformation matrix.
1349 * @param kinematics body kinematics containing specific forces and angular rates applied to
1350 * the body.
1351 * @param result instance where new estimated ECI frame containing new body position,
1352 * velocity and coordinate transformation matrix will be stored.
1353 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1354 */
1355 public void navigate(
1356 final double timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics, final ECIFrame result)
1357 throws InertialNavigatorException {
1358 navigateECI(timeInterval, oldFrame, kinematics, result);
1359 }
1360
1361 /**
1362 * Runs precision ECI-frame inertial navigation equations.
1363 *
1364 * @param timeInterval time interval between epochs.
1365 * @param oldFrame previous ECI frame containing body position, velocity and
1366 * coordinate transformation matrix.
1367 * @param kinematics body kinematics containing specific forces and angular rates applied to
1368 * the body.
1369 * @param result instance where new estimated ECI frame containing new body position,
1370 * velocity and coordinate transformation matrix will be stored.
1371 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1372 */
1373 public void navigate(
1374 final Time timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics, final ECIFrame result)
1375 throws InertialNavigatorException {
1376 navigateECI(timeInterval, oldFrame, kinematics, result);
1377 }
1378
1379 /**
1380 * Runs precision ECI-frame inertial navigation equations.
1381 *
1382 * @param timeInterval time interval between epochs expressed in seconds (s).
1383 * @param oldFrame previous ECI frame containing body position, velocity and
1384 * coordinate transformation matrix.
1385 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1386 * resolved along body-frame axes, averaged over time interval.
1387 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1388 * resolved along body-frame axes, averaged over time interval.
1389 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1390 * resolved along body-frame axes, averaged over time interval.
1391 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1392 * resolved along body-frame axes, averaged over time interval and
1393 * expressed in radians per second (rad/s).
1394 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1395 * resolved along body-frame axes, averaged over time interval and
1396 * expressed in radians per second (rad/s).
1397 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1398 * resolved along body-frame axes, averaged over time interval and
1399 * expressed in radians per second (rad/s).
1400 * @param result instance where new estimated ECI frame containing new body position,
1401 * velocity and coordinate transformation matrix will be stored.
1402 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1403 */
1404 public void navigate(
1405 final double timeInterval, final ECIFrame oldFrame,
1406 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1407 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
1408 throws InertialNavigatorException {
1409 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1410 }
1411
1412 /**
1413 * Runs precision ECI-frame inertial navigation equations.
1414 *
1415 * @param timeInterval time interval between epochs.
1416 * @param oldFrame previous ECI frame containing body position, velocity and
1417 * coordinate transformation matrix.
1418 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1419 * resolved along body-frame axes, averaged over time interval.
1420 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1421 * resolved along body-frame axes, averaged over time interval.
1422 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1423 * resolved along body-frame axes, averaged over time interval.
1424 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1425 * resolved along body-frame axes, averaged over time interval and
1426 * expressed in radians per second (rad/s).
1427 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1428 * resolved along body-frame axes, averaged over time interval and
1429 * expressed in radians per second (rad/s).
1430 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1431 * resolved along body-frame axes, averaged over time interval and
1432 * expressed in radians per second (rad/s).
1433 * @param result instance where new estimated ECI frame containing new body position,
1434 * velocity and coordinate transformation matrix will be stored.
1435 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1436 */
1437 public void navigate(
1438 final Time timeInterval, final ECIFrame oldFrame,
1439 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1440 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
1441 throws InertialNavigatorException {
1442 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1443 }
1444
1445 /**
1446 * Runs precision ECI-frame inertial navigation equations.
1447 *
1448 * @param timeInterval time interval between epochs expressed in seconds (s).
1449 * @param oldFrame previous ECI frame containing body position, velocity and
1450 * coordinate transformation matrix.
1451 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1452 * resolved along body-frame axes, averaged over time interval and
1453 * expressed in meters per squared second (m/s^2).
1454 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1455 * resolved along body-frame axes, averaged over time interval and
1456 * expressed in meters per squared second (m/s^2).
1457 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1458 * resolved along body-frame axes, averaged over time interval and
1459 * expressed in meters per squared second (m/s^2).
1460 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1461 * resolved along body-frame axes, averaged over time interval.
1462 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1463 * resolved along body-frame axes, averaged over time interval.
1464 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1465 * resolved along body-frame axes, averaged over time interval.
1466 * @param result instance where new estimated ECI frame containing new body position,
1467 * velocity and coordinate transformation matrix will be stored.
1468 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1469 */
1470 public void navigate(
1471 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
1472 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1473 final ECIFrame result) throws InertialNavigatorException {
1474 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1475 }
1476
1477 /**
1478 * Runs precision ECI-frame inertial navigation equations.
1479 *
1480 * @param timeInterval time interval between epochs.
1481 * @param oldFrame previous ECI frame containing body position, velocity and
1482 * coordinate transformation matrix.
1483 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1484 * resolved along body-frame axes, averaged over time interval and
1485 * expressed in meters per squared second (m/s^2).
1486 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1487 * resolved along body-frame axes, averaged over time interval and
1488 * expressed in meters per squared second (m/s^2).
1489 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1490 * resolved along body-frame axes, averaged over time interval and
1491 * expressed in meters per squared second (m/s^2).
1492 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1493 * resolved along body-frame axes, averaged over time interval.
1494 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1495 * resolved along body-frame axes, averaged over time interval.
1496 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1497 * resolved along body-frame axes, averaged over time interval.
1498 * @param result instance where new estimated ECI frame containing new body position,
1499 * velocity and coordinate transformation matrix will be stored.
1500 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1501 */
1502 public void navigate(
1503 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
1504 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1505 final ECIFrame result) throws InertialNavigatorException {
1506 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1507 }
1508
1509 /**
1510 * Runs precision ECI-frame inertial navigation equations.
1511 *
1512 * @param timeInterval time interval between epochs expressed in seconds (s).
1513 * @param oldFrame previous ECI frame containing body position, velocity and
1514 * coordinate transformation matrix.
1515 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1516 * resolved along body-frame axes, averaged over time interval.
1517 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1518 * resolved along body-frame axes, averaged over time interval.
1519 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1520 * resolved along body-frame axes, averaged over time interval.
1521 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1522 * resolved along body-frame axes, averaged over time interval.
1523 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1524 * resolved along body-frame axes, averaged over time interval.
1525 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1526 * resolved along body-frame axes, averaged over time interval.
1527 * @param result instance where new estimated ECI frame containing new body position,
1528 * velocity and coordinate transformation matrix will be stored.
1529 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1530 */
1531 public void navigate(
1532 final double timeInterval, final ECIFrame oldFrame,
1533 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1534 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1535 final ECIFrame result) throws InertialNavigatorException {
1536 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1537 }
1538
1539 /**
1540 * Runs precision ECI-frame inertial navigation equations.
1541 *
1542 * @param timeInterval time interval between epochs.
1543 * @param oldFrame previous ECI frame containing body position, velocity and
1544 * coordinate transformation matrix.
1545 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1546 * resolved along body-frame axes, averaged over time interval.
1547 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1548 * resolved along body-frame axes, averaged over time interval.
1549 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1550 * resolved along body-frame axes, averaged over time interval.
1551 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1552 * resolved along body-frame axes, averaged over time interval.
1553 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1554 * resolved along body-frame axes, averaged over time interval.
1555 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1556 * resolved along body-frame axes, averaged over time interval.
1557 * @param result instance where new estimated ECI frame containing new body position,
1558 * velocity and coordinate transformation matrix will be stored.
1559 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1560 */
1561 public void navigate(
1562 final Time timeInterval, final ECIFrame oldFrame,
1563 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1564 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1565 final ECIFrame result) throws InertialNavigatorException {
1566 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
1567 }
1568
1569 /**
1570 * Runs precision ECI-frame inertial navigation equations.
1571 *
1572 * @param timeInterval time interval between epochs expressed in seconds (s).
1573 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1574 * frame, resolved along ECI-frame axes and expressed in meters (m).
1575 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1576 * frame, resolved along ECI-frame axes and expressed in meters (m).
1577 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1578 * frame, resolved along ECI-frame axes and expressed in meters (m).
1579 * @param oldC previous body-to-ECI-frame coordinate transformation.
1580 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1581 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1582 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1583 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1584 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1585 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1586 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1587 * resolved along body-frame axes, averaged over time interval and
1588 * expressed in meters per squared second (m/s^2).
1589 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1590 * resolved along body-frame axes, averaged over time interval and
1591 * expressed in meters per squared second (m/s^2).
1592 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1593 * resolved along body-frame axes, averaged over time interval and
1594 * expressed in meters per squared second (m/s^2).
1595 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1596 * resolved along body-frame axes, averaged over time interval and
1597 * expressed in radians per second (rad/s).
1598 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1599 * resolved along body-frame axes, averaged over time interval and
1600 * expressed in radians per second (rad/s).
1601 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1602 * resolved along body-frame axes, averaged over time interval and
1603 * expressed in radians per second (rad/s).
1604 * @return estimated ECI frame containing new body position, velocity and coordinate
1605 * transformation matrix.
1606 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1607 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1608 * body-to-ECI-frame coordinate transformation matrix are
1609 * invalid.
1610 */
1611 public ECIFrame navigateAndReturnNew(
1612 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1613 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1614 final double fx, final double fy, final double fz,
1615 final double angularRateX, final double angularRateY, final double angularRateZ)
1616 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1617 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1618 angularRateX, angularRateY, angularRateZ);
1619 }
1620
1621 /**
1622 * Runs precision ECI-frame inertial navigation equations.
1623 *
1624 * @param timeInterval time interval between epochs.
1625 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1626 * frame, resolved along ECI-frame axes and expressed in meters (m).
1627 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1628 * frame, resolved along ECI-frame axes and expressed in meters (m).
1629 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1630 * frame, resolved along ECI-frame axes and expressed in meters (m).
1631 * @param oldC previous body-to-ECI-frame coordinate transformation.
1632 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1633 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1634 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1635 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1636 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1637 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1638 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1639 * resolved along body-frame axes, averaged over time interval and
1640 * expressed in meters per squared second (m/s^2).
1641 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1642 * resolved along body-frame axes, averaged over time interval and
1643 * expressed in meters per squared second (m/s^2).
1644 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1645 * resolved along body-frame axes, averaged over time interval and
1646 * expressed in meters per squared second (m/s^2).
1647 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1648 * resolved along body-frame axes, averaged over time interval and
1649 * expressed in radians per second (rad/s).
1650 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1651 * resolved along body-frame axes, averaged over time interval and
1652 * expressed in radians per second (rad/s).
1653 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1654 * resolved along body-frame axes, averaged over time interval and
1655 * expressed in radians per second (rad/s).
1656 * @return estimated ECI frame containing new body position, velocity and coordinate
1657 * transformation matrix.
1658 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1659 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1660 * body-to-ECI-frame coordinate transformation matrix are
1661 * invalid.
1662 */
1663 public ECIFrame navigateAndReturnNew(
1664 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1665 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1666 final double fx, final double fy, final double fz,
1667 final double angularRateX, final double angularRateY, final double angularRateZ)
1668 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1669 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1670 angularRateX, angularRateY, angularRateZ);
1671 }
1672
1673 /**
1674 * Runs precision ECI-frame inertial navigation equations.
1675 *
1676 * @param timeInterval time interval between epochs expressed in seconds (s).
1677 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1678 * frame, resolved along ECI-frame axes and expressed in meters (m).
1679 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1680 * frame, resolved along ECI-frame axes and expressed in meters (m).
1681 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1682 * frame, resolved along ECI-frame axes and expressed in meters (m).
1683 * @param oldC previous body-to-ECI-frame coordinate transformation.
1684 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1685 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1686 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1687 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1688 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1689 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1690 * @param kinematics body kinematics containing specific forces and angular rates applied to
1691 * the body.
1692 * @return estimated ECI frame containing new body position, velocity and coordinate
1693 * transformation matrix.
1694 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1695 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1696 * body-to-ECI-frame coordinate transformation matrix are
1697 * invalid.
1698 */
1699 public ECIFrame navigateAndReturnNew(
1700 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1701 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1702 final BodyKinematics kinematics) throws InertialNavigatorException,
1703 InvalidSourceAndDestinationFrameTypeException {
1704 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
1705 }
1706
1707 /**
1708 * Runs precision ECI-frame inertial navigation equations.
1709 *
1710 * @param timeInterval time interval between epochs.
1711 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1712 * frame, resolved along ECI-frame axes and expressed in meters (m).
1713 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1714 * frame, resolved along ECI-frame axes and expressed in meters (m).
1715 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1716 * frame, resolved along ECI-frame axes and expressed in meters (m).
1717 * @param oldC previous body-to-ECI-frame coordinate transformation.
1718 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1719 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1720 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1721 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1722 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1723 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1724 * @param kinematics body kinematics containing specific forces and angular rates applied to
1725 * the body.
1726 * @return estimated ECI frame containing new body position, velocity and coordinate
1727 * transformation matrix.
1728 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1729 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1730 * body-to-ECI-frame coordinate transformation matrix are
1731 * invalid.
1732 */
1733 public ECIFrame navigateAndReturnNew(
1734 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1735 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1736 final BodyKinematics kinematics) throws InertialNavigatorException,
1737 InvalidSourceAndDestinationFrameTypeException {
1738 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
1739 }
1740
1741 /**
1742 * Runs precision ECI-frame inertial navigation equations.
1743 *
1744 * @param timeInterval time interval between epochs expressed in seconds (s).
1745 * @param oldPosition previous cartesian position of body frame with respect ECI
1746 * frame, resolved along ECI-frame axes and expressed in meters (m).
1747 * @param oldC previous body-to-ECI-frame coordinate transformation.
1748 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1749 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1750 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1751 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1752 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1753 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1754 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1755 * resolved along body-frame axes, averaged over time interval and
1756 * expressed in meters per squared second (m/s^2).
1757 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1758 * resolved along body-frame axes, averaged over time interval and
1759 * expressed in meters per squared second (m/s^2).
1760 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1761 * resolved along body-frame axes, averaged over time interval and
1762 * expressed in meters per squared second (m/s^2).
1763 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1764 * resolved along body-frame axes, averaged over time interval and
1765 * expressed in radians per second (rad/s).
1766 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1767 * resolved along body-frame axes, averaged over time interval and
1768 * expressed in radians per second (rad/s).
1769 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1770 * resolved along body-frame axes, averaged over time interval and
1771 * expressed in radians per second (rad/s).
1772 * @return estimated ECI frame containing new body position, velocity and coordinate
1773 * transformation matrix.
1774 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1775 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1776 * body-to-ECI-frame coordinate transformation matrix are
1777 * invalid.
1778 */
1779 public ECIFrame navigateAndReturnNew(
1780 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
1781 final double oldVx, final double oldVy, final double oldVz,
1782 final double fx, final double fy, final double fz,
1783 final double angularRateX, final double angularRateY, final double angularRateZ)
1784 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1785 return navigateECIAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1786 angularRateX, angularRateY, angularRateZ);
1787 }
1788
1789 /**
1790 * Runs precision ECI-frame inertial navigation equations.
1791 *
1792 * @param timeInterval time interval between epochs.
1793 * @param oldPosition previous cartesian position of body frame with respect ECI
1794 * frame, resolved along ECI-frame axes and expressed in meters (m).
1795 * @param oldC previous body-to-ECI-frame coordinate transformation.
1796 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1797 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1798 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1799 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1800 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1801 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1802 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1803 * resolved along body-frame axes, averaged over time interval and
1804 * expressed in meters per squared second (m/s^2).
1805 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1806 * resolved along body-frame axes, averaged over time interval and
1807 * expressed in meters per squared second (m/s^2).
1808 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1809 * resolved along body-frame axes, averaged over time interval and
1810 * expressed in meters per squared second (m/s^2).
1811 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1812 * resolved along body-frame axes, averaged over time interval and
1813 * expressed in radians per second (rad/s).
1814 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1815 * resolved along body-frame axes, averaged over time interval and
1816 * expressed in radians per second (rad/s).
1817 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1818 * resolved along body-frame axes, averaged over time interval and
1819 * expressed in radians per second (rad/s).
1820 * @return estimated ECI frame containing new body position, velocity and coordinate
1821 * transformation matrix.
1822 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1823 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1824 * body-to-ECI-frame coordinate transformation matrix are
1825 * invalid.
1826 */
1827 public ECIFrame navigateAndReturnNew(
1828 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
1829 final double oldVx, final double oldVy, final double oldVz,
1830 final double fx, final double fy, final double fz,
1831 final double angularRateX, final double angularRateY, final double angularRateZ)
1832 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1833 return navigateECIAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1834 angularRateX, angularRateY, angularRateZ);
1835 }
1836
1837 /**
1838 * Runs precision ECI-frame inertial navigation equations.
1839 *
1840 * @param timeInterval time interval between epochs expressed in seconds (s).
1841 * @param oldPosition previous cartesian position of body frame with respect ECI
1842 * frame, resolved along ECI-frame axes and expressed in meters (m).
1843 * @param oldC previous body-to-ECI-frame coordinate transformation.
1844 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1845 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1846 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1847 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1848 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1849 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1850 * @param kinematics body kinematics containing specific forces and angular rates applied to
1851 * the body.
1852 * @return estimated ECI frame containing new body position, velocity and coordinate
1853 * transformation matrix.
1854 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1855 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1856 * body-to-ECI-frame coordinate transformation matrix are
1857 * invalid.
1858 */
1859 public ECIFrame navigateAndReturnNew(
1860 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
1861 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
1862 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1863 return navigateECIAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics);
1864 }
1865
1866 /**
1867 * Runs precision ECI-frame inertial navigation equations.
1868 *
1869 * @param timeInterval time interval between epochs.
1870 * @param oldPosition previous cartesian position of body frame with respect ECI
1871 * frame, resolved along ECI-frame axes and expressed in meters (m).
1872 * @param oldC previous body-to-ECI-frame coordinate transformation.
1873 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1874 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1875 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1876 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1877 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1878 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1879 * @param kinematics body kinematics containing specific forces and angular rates applied to
1880 * the body.
1881 * @return estimated ECI frame containing new body position, velocity and coordinate
1882 * transformation matrix.
1883 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1884 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1885 * body-to-ECI-frame coordinate transformation matrix are
1886 * invalid.
1887 */
1888 public ECIFrame navigateAndReturnNew(
1889 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
1890 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
1891 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1892 return navigateECIAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics);
1893 }
1894
1895 /**
1896 * Runs precision ECI-frame inertial navigation equations.
1897 *
1898 * @param timeInterval time interval between epochs expressed in seconds (s).
1899 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1900 * frame, resolved along ECI-frame axes.
1901 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1902 * frame, resolved along ECI-frame axes.
1903 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1904 * frame, resolved along ECI-frame axes.
1905 * @param oldC previous body-to-ECI-frame coordinate transformation.
1906 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1907 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1908 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1909 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1910 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1911 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1912 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1913 * resolved along body-frame axes, averaged over time interval and
1914 * expressed in meters per squared second (m/s^2).
1915 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1916 * resolved along body-frame axes, averaged over time interval and
1917 * expressed in meters per squared second (m/s^2).
1918 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1919 * resolved along body-frame axes, averaged over time interval and
1920 * expressed in meters per squared second (m/s^2).
1921 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1922 * resolved along body-frame axes, averaged over time interval and
1923 * expressed in radians per second (rad/s).
1924 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1925 * resolved along body-frame axes, averaged over time interval and
1926 * expressed in radians per second (rad/s).
1927 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1928 * resolved along body-frame axes, averaged over time interval and
1929 * expressed in radians per second (rad/s).
1930 * @return estimated ECI frame containing new body position, velocity and coordinate
1931 * transformation matrix.
1932 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1933 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1934 * body-to-ECI-frame coordinate transformation matrix are
1935 * invalid.
1936 */
1937 public ECIFrame navigateAndReturnNew(
1938 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1939 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1940 final double fx, final double fy, final double fz,
1941 final double angularRateX, final double angularRateY, final double angularRateZ)
1942 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1943 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1944 angularRateX, angularRateY, angularRateZ);
1945 }
1946
1947 /**
1948 * Runs precision ECI-frame inertial navigation equations.
1949 *
1950 * @param timeInterval time interval between epochs.
1951 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
1952 * frame, resolved along ECI-frame axes.
1953 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
1954 * frame, resolved along ECI-frame axes.
1955 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
1956 * frame, resolved along ECI-frame axes.
1957 * @param oldC previous body-to-ECI-frame coordinate transformation.
1958 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
1959 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1960 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
1961 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1962 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
1963 * resolved along ECI-frame axes and expressed in meters per second (m/s).
1964 * @param fx specific force x-coordinate of body frame with respect ECI frame,
1965 * resolved along body-frame axes, averaged over time interval and
1966 * expressed in meters per squared second (m/s^2).
1967 * @param fy specific force y-coordinate of body frame with respect ECI frame,
1968 * resolved along body-frame axes, averaged over time interval and
1969 * expressed in meters per squared second (m/s^2).
1970 * @param fz specific force z-coordinate of body frame with respect ECI frame,
1971 * resolved along body-frame axes, averaged over time interval and
1972 * expressed in meters per squared second (m/s^2).
1973 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
1974 * resolved along body-frame axes, averaged over time interval and
1975 * expressed in radians per second (rad/s).
1976 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
1977 * resolved along body-frame axes, averaged over time interval and
1978 * expressed in radians per second (rad/s).
1979 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
1980 * resolved along body-frame axes, averaged over time interval and
1981 * expressed in radians per second (rad/s).
1982 * @return estimated ECI frame containing new body position, velocity and coordinate
1983 * transformation matrix.
1984 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1985 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1986 * body-to-ECI-frame coordinate transformation matrix are
1987 * invalid.
1988 */
1989 public ECIFrame navigateAndReturnNew(
1990 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1991 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1992 final double fx, final double fy, final double fz,
1993 final double angularRateX, final double angularRateY, final double angularRateZ)
1994 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1995 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1996 angularRateX, angularRateY, angularRateZ);
1997 }
1998
1999 /**
2000 * Runs precision ECI-frame inertial navigation equations.
2001 *
2002 * @param timeInterval time interval between epochs expressed in seconds (s).
2003 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2004 * frame, resolved along ECI-frame axes.
2005 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2006 * frame, resolved along ECI-frame axes.
2007 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2008 * frame, resolved along ECI-frame axes.
2009 * @param oldC previous body-to-ECI-frame coordinate transformation.
2010 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2011 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2012 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2013 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2014 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2015 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2016 * @param kinematics body kinematics containing specific forces and angular rates applied to
2017 * the body.
2018 * @return estimated ECI frame containing new body position, velocity and coordinate
2019 * transformation matrix.
2020 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2021 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2022 * body-to-ECI-frame coordinate transformation matrix are
2023 * invalid.
2024 */
2025 public ECIFrame navigateAndReturnNew(
2026 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2027 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2028 final BodyKinematics kinematics) throws InertialNavigatorException,
2029 InvalidSourceAndDestinationFrameTypeException {
2030 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
2031 }
2032
2033 /**
2034 * Runs precision ECI-frame inertial navigation equations.
2035 *
2036 * @param timeInterval time interval between epochs.
2037 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2038 * frame, resolved along ECI-frame axes.
2039 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2040 * frame, resolved along ECI-frame axes.
2041 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2042 * frame, resolved along ECI-frame axes.
2043 * @param oldC previous body-to-ECI-frame coordinate transformation.
2044 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2045 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2046 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2047 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2048 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2049 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2050 * @param kinematics body kinematics containing specific forces and angular rates applied to
2051 * the body.
2052 * @return estimated ECI frame containing new body position, velocity and coordinate
2053 * transformation matrix.
2054 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2055 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2056 * body-to-ECI-frame coordinate transformation matrix are
2057 * invalid.
2058 */
2059 public ECIFrame navigateAndReturnNew(
2060 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2061 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2062 final BodyKinematics kinematics) throws InertialNavigatorException,
2063 InvalidSourceAndDestinationFrameTypeException {
2064 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
2065 }
2066
2067 /**
2068 * Runs precision ECI-frame inertial navigation equations.
2069 *
2070 * @param timeInterval time interval between epochs expressed in seconds (s).
2071 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2072 * frame, resolved along ECI-frame axes and expressed in meters (m).
2073 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2074 * frame, resolved along ECI-frame axes and expressed in meters (m).
2075 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2076 * frame, resolved along ECI-frame axes and expressed in meters (m).
2077 * @param oldC previous body-to-ECI-frame coordinate transformation.
2078 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2079 * resolved along ECI-frame axes.
2080 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2081 * resolved along ECI-frame axes.
2082 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2083 * resolved along ECI-frame axes.
2084 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2085 * resolved along body-frame axes, averaged over time interval and
2086 * expressed in meters per squared second (m/s^2).
2087 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2088 * resolved along body-frame axes, averaged over time interval and
2089 * expressed in meters per squared second (m/s^2).
2090 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2091 * resolved along body-frame axes, averaged over time interval and
2092 * expressed in meters per squared second (m/s^2).
2093 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2094 * resolved along body-frame axes, averaged over time interval and
2095 * expressed in radians per second (rad/s).
2096 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2097 * resolved along body-frame axes, averaged over time interval and
2098 * expressed in radians per second (rad/s).
2099 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2100 * resolved along body-frame axes, averaged over time interval and
2101 * expressed in radians per second (rad/s).
2102 * @return estimated ECI frame containing new body position, velocity and coordinate
2103 * transformation matrix.
2104 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2105 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2106 * body-to-ECI-frame coordinate transformation matrix are
2107 * invalid.
2108 */
2109 public ECIFrame navigateAndReturnNew(
2110 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2111 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2112 final double fx, final double fy, final double fz,
2113 final double angularRateX, final double angularRateY, final double angularRateZ)
2114 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2115 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2116 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2117 }
2118
2119 /**
2120 * Runs precision ECI-frame inertial navigation equations.
2121 *
2122 * @param timeInterval time interval between epochs.
2123 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2124 * frame, resolved along ECI-frame axes and expressed in meters (m).
2125 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2126 * frame, resolved along ECI-frame axes and expressed in meters (m).
2127 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2128 * frame, resolved along ECI-frame axes and expressed in meters (m).
2129 * @param oldC previous body-to-ECI-frame coordinate transformation.
2130 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2131 * resolved along ECI-frame axes.
2132 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2133 * resolved along ECI-frame axes.
2134 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2135 * resolved along ECI-frame axes.
2136 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2137 * resolved along body-frame axes, averaged over time interval and
2138 * expressed in meters per squared second (m/s^2).
2139 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2140 * resolved along body-frame axes, averaged over time interval and
2141 * expressed in meters per squared second (m/s^2).
2142 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2143 * resolved along body-frame axes, averaged over time interval and
2144 * expressed in meters per squared second (m/s^2).
2145 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2146 * resolved along body-frame axes, averaged over time interval and
2147 * expressed in radians per second (rad/s).
2148 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2149 * resolved along body-frame axes, averaged over time interval and
2150 * expressed in radians per second (rad/s).
2151 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2152 * resolved along body-frame axes, averaged over time interval and
2153 * expressed in radians per second (rad/s).
2154 * @return estimated ECI frame containing new body position, velocity and coordinate
2155 * transformation matrix.
2156 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2157 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2158 * body-to-ECI-frame coordinate transformation matrix are
2159 * invalid.
2160 */
2161 public ECIFrame navigateAndReturnNew(
2162 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2163 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2164 final double fx, final double fy, final double fz,
2165 final double angularRateX, final double angularRateY, final double angularRateZ)
2166 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2167 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2168 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2169 }
2170
2171 /**
2172 * Runs precision ECI-frame inertial navigation equations.
2173 *
2174 * @param timeInterval time interval between epochs expressed in seconds (s).
2175 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2176 * frame, resolved along ECI-frame axes and expressed in meters (m).
2177 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2178 * frame, resolved along ECI-frame axes and expressed in meters (m).
2179 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2180 * frame, resolved along ECI-frame axes and expressed in meters (m).
2181 * @param oldC previous body-to-ECI-frame coordinate transformation.
2182 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2183 * resolved along ECI-frame axes.
2184 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2185 * resolved along ECI-frame axes.
2186 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2187 * resolved along ECI-frame axes.
2188 * @param kinematics body kinematics containing specific forces and angular rates applied to
2189 * the body.
2190 * @return estimated ECI frame containing new body position, velocity and coordinate
2191 * transformation matrix.
2192 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2193 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2194 * body-to-ECI-frame coordinate transformation matrix are
2195 * invalid.
2196 */
2197 public ECIFrame navigateAndReturnNew(
2198 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2199 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2200 final BodyKinematics kinematics) throws InertialNavigatorException,
2201 InvalidSourceAndDestinationFrameTypeException {
2202 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2203 kinematics);
2204 }
2205
2206 /**
2207 * Runs precision ECI-frame inertial navigation equations.
2208 *
2209 * @param timeInterval time interval between epochs expressed in seconds (s).
2210 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2211 * frame, resolved along ECI-frame axes and expressed in meters (m).
2212 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2213 * frame, resolved along ECI-frame axes and expressed in meters (m).
2214 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2215 * frame, resolved along ECI-frame axes and expressed in meters (m).
2216 * @param oldC previous body-to-ECI-frame coordinate transformation.
2217 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2218 * resolved along ECI-frame axes.
2219 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2220 * resolved along ECI-frame axes.
2221 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2222 * resolved along ECI-frame axes.
2223 * @param kinematics body kinematics containing specific forces and angular rates applied to
2224 * the body.
2225 * @return estimated ECI frame containing new body position, velocity and coordinate
2226 * transformation matrix.
2227 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2228 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2229 * body-to-ECI-frame coordinate transformation matrix are
2230 * invalid.
2231 */
2232 public ECIFrame navigateAndReturnNew(
2233 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2234 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2235 final BodyKinematics kinematics) throws InertialNavigatorException,
2236 InvalidSourceAndDestinationFrameTypeException {
2237 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2238 kinematics);
2239 }
2240
2241 /**
2242 * Runs precision ECI-frame inertial navigation equations.
2243 *
2244 * @param timeInterval time interval between epochs expressed in seconds (s).
2245 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2246 * frame, resolved along ECI-frame axes and expressed in meters (m).
2247 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2248 * frame, resolved along ECI-frame axes and expressed in meters (m).
2249 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2250 * frame, resolved along ECI-frame axes and expressed in meters (m).
2251 * @param oldC previous body-to-ECI-frame coordinate transformation.
2252 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2253 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2254 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2255 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2256 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2257 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2258 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2259 * resolved along body-frame axes, averaged over time interval.
2260 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2261 * resolved along body-frame axes, averaged over time interval.
2262 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2263 * resolved along body-frame axes, averaged over time interval.
2264 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2265 * resolved along body-frame axes, averaged over time interval and
2266 * expressed in radians per second (rad/s).
2267 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2268 * resolved along body-frame axes, averaged over time interval and
2269 * expressed in radians per second (rad/s).
2270 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2271 * resolved along body-frame axes, averaged over time interval and
2272 * expressed in radians per second (rad/s).
2273 * @return estimated ECI frame containing new body position, velocity and coordinate
2274 * transformation matrix.
2275 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2276 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2277 * body-to-ECI-frame coordinate transformation matrix are
2278 * invalid.
2279 */
2280 public ECIFrame navigateAndReturnNew(
2281 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2282 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2283 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2284 final double angularRateX, final double angularRateY, final double angularRateZ)
2285 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2286 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2287 angularRateX, angularRateY, angularRateZ);
2288 }
2289
2290 /**
2291 * Runs precision ECI-frame inertial navigation equations.
2292 *
2293 * @param timeInterval time interval between epochs.
2294 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2295 * frame, resolved along ECI-frame axes and expressed in meters (m).
2296 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2297 * frame, resolved along ECI-frame axes and expressed in meters (m).
2298 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2299 * frame, resolved along ECI-frame axes and expressed in meters (m).
2300 * @param oldC previous body-to-ECI-frame coordinate transformation.
2301 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2302 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2303 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2304 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2305 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2306 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2307 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2308 * resolved along body-frame axes, averaged over time interval.
2309 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2310 * resolved along body-frame axes, averaged over time interval.
2311 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2312 * resolved along body-frame axes, averaged over time interval.
2313 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2314 * resolved along body-frame axes, averaged over time interval and
2315 * expressed in radians per second (rad/s).
2316 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2317 * resolved along body-frame axes, averaged over time interval and
2318 * expressed in radians per second (rad/s).
2319 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2320 * resolved along body-frame axes, averaged over time interval and
2321 * expressed in radians per second (rad/s).
2322 * @return estimated ECI frame containing new body position, velocity and coordinate
2323 * transformation matrix.
2324 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2325 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2326 * body-to-ECI-frame coordinate transformation matrix are
2327 * invalid.
2328 */
2329 public ECIFrame navigateAndReturnNew(
2330 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2331 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2332 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2333 final double angularRateX, final double angularRateY, final double angularRateZ)
2334 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2335 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2336 angularRateX, angularRateY, angularRateZ);
2337 }
2338
2339 /**
2340 * Runs precision ECI-frame inertial navigation equations.
2341 *
2342 * @param timeInterval time interval between epochs expressed in seconds (s).
2343 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2344 * frame, resolved along ECI-frame axes and expressed in meters (m).
2345 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2346 * frame, resolved along ECI-frame axes and expressed in meters (m).
2347 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2348 * frame, resolved along ECI-frame axes and expressed in meters (m).
2349 * @param oldC previous body-to-ECI-frame coordinate transformation.
2350 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2351 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2352 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2353 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2354 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2355 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2356 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2357 * resolved along body-frame axes, averaged over time interval and
2358 * expressed in meters per squared second (m/s^2).
2359 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2360 * resolved along body-frame axes, averaged over time interval and
2361 * expressed in meters per squared second (m/s^2).
2362 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2363 * resolved along body-frame axes, averaged over time interval and
2364 * expressed in meters per squared second (m/s^2).
2365 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2366 * resolved along body-frame axes, averaged over time interval.
2367 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2368 * resolved along body-frame axes, averaged over time interval.
2369 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2370 * resolved along body-frame axes, averaged over time interval.
2371 * @return estimated ECI frame containing new body position, velocity and coordinate
2372 * transformation matrix.
2373 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2374 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2375 * body-to-ECI-frame coordinate transformation matrix are
2376 * invalid.
2377 */
2378 public ECIFrame navigateAndReturnNew(
2379 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2380 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2381 final double fx, final double fy, final double fz,
2382 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2383 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2384 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2385 angularRateX, angularRateY, angularRateZ);
2386 }
2387
2388 /**
2389 * Runs precision ECI-frame inertial navigation equations.
2390 *
2391 * @param timeInterval time interval between epochs.
2392 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2393 * frame, resolved along ECI-frame axes and expressed in meters (m).
2394 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2395 * frame, resolved along ECI-frame axes and expressed in meters (m).
2396 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2397 * frame, resolved along ECI-frame axes and expressed in meters (m).
2398 * @param oldC previous body-to-ECI-frame coordinate transformation.
2399 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2400 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2401 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2402 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2403 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2404 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2405 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2406 * resolved along body-frame axes, averaged over time interval and
2407 * expressed in meters per squared second (m/s^2).
2408 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2409 * resolved along body-frame axes, averaged over time interval and
2410 * expressed in meters per squared second (m/s^2).
2411 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2412 * resolved along body-frame axes, averaged over time interval and
2413 * expressed in meters per squared second (m/s^2).
2414 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2415 * resolved along body-frame axes, averaged over time interval.
2416 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2417 * resolved along body-frame axes, averaged over time interval.
2418 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2419 * resolved along body-frame axes, averaged over time interval.
2420 * @return estimated ECI frame containing new body position, velocity and coordinate
2421 * transformation matrix.
2422 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2423 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2424 * body-to-ECI-frame coordinate transformation matrix are
2425 * invalid.
2426 */
2427 public ECIFrame navigateAndReturnNew(
2428 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2429 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2430 final double fx, final double fy, final double fz,
2431 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2432 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2433 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2434 angularRateX, angularRateY, angularRateZ);
2435 }
2436
2437 /**
2438 * Runs precision ECI-frame inertial navigation equations.
2439 *
2440 * @param timeInterval time interval between epochs expressed in seconds (s).
2441 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2442 * frame, resolved along ECI-frame axes.
2443 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2444 * frame, resolved along ECI-frame axes.
2445 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2446 * frame, resolved along ECI-frame axes.
2447 * @param oldC previous body-to-ECI-frame coordinate transformation.
2448 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2449 * resolved along ECI-frame axes.
2450 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2451 * resolved along ECI-frame axes.
2452 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2453 * resolved along ECI-frame axes.
2454 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2455 * resolved along body-frame axes, averaged over time interval and
2456 * expressed in meters per squared second (m/s^2).
2457 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2458 * resolved along body-frame axes, averaged over time interval and
2459 * expressed in meters per squared second (m/s^2).
2460 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2461 * resolved along body-frame axes, averaged over time interval and
2462 * expressed in meters per squared second (m/s^2).
2463 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2464 * resolved along body-frame axes, averaged over time interval and
2465 * expressed in radians per second (rad/s).
2466 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2467 * resolved along body-frame axes, averaged over time interval and
2468 * expressed in radians per second (rad/s).
2469 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2470 * resolved along body-frame axes, averaged over time interval and
2471 * expressed in radians per second (rad/s).
2472 * @return estimated ECI frame containing new body position, velocity and coordinate
2473 * transformation matrix.
2474 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2475 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2476 * body-to-ECI-frame coordinate transformation matrix are
2477 * invalid.
2478 */
2479 public ECIFrame navigateAndReturnNew(
2480 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2481 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2482 final double fx, final double fy, final double fz,
2483 final double angularRateX, final double angularRateY, final double angularRateZ)
2484 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2485 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2486 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2487 }
2488
2489 /**
2490 * Runs precision ECI-frame inertial navigation equations.
2491 *
2492 * @param timeInterval time interval between epochs.
2493 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2494 * frame, resolved along ECI-frame axes.
2495 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2496 * frame, resolved along ECI-frame axes.
2497 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2498 * frame, resolved along ECI-frame axes.
2499 * @param oldC previous body-to-ECI-frame coordinate transformation.
2500 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2501 * resolved along ECI-frame axes.
2502 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2503 * resolved along ECI-frame axes.
2504 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2505 * resolved along ECI-frame axes.
2506 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2507 * resolved along body-frame axes, averaged over time interval and
2508 * expressed in meters per squared second (m/s^2).
2509 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2510 * resolved along body-frame axes, averaged over time interval and
2511 * expressed in meters per squared second (m/s^2).
2512 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2513 * resolved along body-frame axes, averaged over time interval and
2514 * expressed in meters per squared second (m/s^2).
2515 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2516 * resolved along body-frame axes, averaged over time interval and
2517 * expressed in radians per second (rad/s).
2518 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2519 * resolved along body-frame axes, averaged over time interval and
2520 * expressed in radians per second (rad/s).
2521 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2522 * resolved along body-frame axes, averaged over time interval and
2523 * expressed in radians per second (rad/s).
2524 * @return estimated ECI frame containing new body position, velocity and coordinate
2525 * transformation matrix.
2526 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2527 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2528 * body-to-ECI-frame coordinate transformation matrix are
2529 * invalid.
2530 */
2531 public ECIFrame navigateAndReturnNew(
2532 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2533 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2534 final double fx, final double fy, final double fz,
2535 final double angularRateX, final double angularRateY, final double angularRateZ)
2536 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2537 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2538 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2539 }
2540
2541 /**
2542 * Runs precision ECI-frame inertial navigation equations.
2543 *
2544 * @param timeInterval time interval between epochs expressed in seconds (s).
2545 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2546 * frame, resolved along ECI-frame axes.
2547 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2548 * frame, resolved along ECI-frame axes.
2549 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2550 * frame, resolved along ECI-frame axes.
2551 * @param oldC previous body-to-ECI-frame coordinate transformation.
2552 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2553 * resolved along ECI-frame axes.
2554 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2555 * resolved along ECI-frame axes.
2556 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2557 * resolved along ECI-frame axes.
2558 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2559 * resolved along body-frame axes, averaged over time interval.
2560 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2561 * resolved along body-frame axes, averaged over time interval.
2562 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2563 * resolved along body-frame axes, averaged over time interval.
2564 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2565 * resolved along body-frame axes, averaged over time interval.
2566 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2567 * resolved along body-frame axes, averaged over time interval.
2568 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2569 * resolved along body-frame axes, averaged over time interval.
2570 * @return estimated ECI frame containing new body position, velocity and coordinate
2571 * transformation matrix.
2572 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2573 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2574 * body-to-ECI-frame coordinate transformation matrix are
2575 * invalid.
2576 */
2577 public ECIFrame navigateAndReturnNew(
2578 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2579 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2580 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2581 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2582 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2583 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2584 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2585 }
2586
2587 /**
2588 * Runs precision ECI-frame inertial navigation equations.
2589 *
2590 * @param timeInterval time interval between epochs.
2591 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2592 * frame, resolved along ECI-frame axes.
2593 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2594 * frame, resolved along ECI-frame axes.
2595 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2596 * frame, resolved along ECI-frame axes.
2597 * @param oldC previous body-to-ECI-frame coordinate transformation.
2598 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2599 * resolved along ECI-frame axes.
2600 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2601 * resolved along ECI-frame axes.
2602 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2603 * resolved along ECI-frame axes.
2604 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2605 * resolved along body-frame axes, averaged over time interval.
2606 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2607 * resolved along body-frame axes, averaged over time interval.
2608 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2609 * resolved along body-frame axes, averaged over time interval.
2610 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2611 * resolved along body-frame axes, averaged over time interval.
2612 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2613 * resolved along body-frame axes, averaged over time interval.
2614 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2615 * resolved along body-frame axes, averaged over time interval.
2616 * @return estimated ECI frame containing new body position, velocity and coordinate
2617 * transformation matrix.
2618 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2619 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2620 * body-to-ECI-frame coordinate transformation matrix are
2621 * invalid.
2622 */
2623 public ECIFrame navigateAndReturnNew(
2624 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2625 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2626 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2627 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2628 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2629 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2630 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2631 }
2632
2633 /**
2634 * Runs precision ECI-frame inertial navigation equations.
2635 *
2636 * @param timeInterval time interval between epochs expressed in seconds (s).
2637 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2638 * frame, resolved along ECI-frame axes and expressed in meters (m).
2639 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2640 * frame, resolved along ECI-frame axes and expressed in meters (m).
2641 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2642 * frame, resolved along ECI-frame axes and expressed in meters (m).
2643 * @param oldC previous body-to-ECI-frame coordinate transformation.
2644 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2645 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2646 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2647 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2648 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2649 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2650 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2651 * resolved along body-frame axes, averaged over time interval.
2652 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2653 * resolved along body-frame axes, averaged over time interval.
2654 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2655 * resolved along body-frame axes, averaged over time interval.
2656 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2657 * resolved along body-frame axes, averaged over time interval.
2658 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2659 * resolved along body-frame axes, averaged over time interval.
2660 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2661 * resolved along body-frame axes, averaged over time interval.
2662 * @return estimated ECI frame containing new body position, velocity and coordinate
2663 * transformation matrix.
2664 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2665 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2666 * body-to-ECI-frame coordinate transformation matrix are
2667 * invalid.
2668 */
2669 public ECIFrame navigateAndReturnNew(
2670 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2671 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2672 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2673 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2674 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2675 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2676 angularRateX, angularRateY, angularRateZ);
2677 }
2678
2679 /**
2680 * Runs precision ECI-frame inertial navigation equations.
2681 *
2682 * @param timeInterval time interval between epochs.
2683 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2684 * frame, resolved along ECI-frame axes and expressed in meters (m).
2685 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2686 * frame, resolved along ECI-frame axes and expressed in meters (m).
2687 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2688 * frame, resolved along ECI-frame axes and expressed in meters (m).
2689 * @param oldC previous body-to-ECI-frame coordinate transformation.
2690 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
2691 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2692 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
2693 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2694 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
2695 * resolved along ECI-frame axes and expressed in meters per second (m/s).
2696 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2697 * resolved along body-frame axes, averaged over time interval.
2698 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2699 * resolved along body-frame axes, averaged over time interval.
2700 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2701 * resolved along body-frame axes, averaged over time interval.
2702 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2703 * resolved along body-frame axes, averaged over time interval.
2704 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2705 * resolved along body-frame axes, averaged over time interval.
2706 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2707 * resolved along body-frame axes, averaged over time interval.
2708 * @return estimated ECI frame containing new body position, velocity and coordinate
2709 * transformation matrix.
2710 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2711 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2712 * body-to-ECI-frame coordinate transformation matrix are
2713 * invalid.
2714 */
2715 public ECIFrame navigateAndReturnNew(
2716 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2717 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2718 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2719 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2720 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2721 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2722 angularRateX, angularRateY, angularRateZ);
2723 }
2724
2725 /**
2726 * Runs precision ECI-frame inertial navigation equations.
2727 *
2728 * @param timeInterval time interval between epochs expressed in seconds (s).
2729 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2730 * frame, resolved along ECI-frame axes.
2731 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2732 * frame, resolved along ECI-frame axes.
2733 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2734 * frame, resolved along ECI-frame axes.
2735 * @param oldC previous body-to-ECI-frame coordinate transformation.
2736 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2737 * resolved along ECI-frame axes.
2738 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2739 * resolved along ECI-frame axes.
2740 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2741 * resolved along ECI-frame axes.
2742 * @param kinematics body kinematics containing specific forces and angular rates applied to
2743 * the body.
2744 * @return estimated ECI frame containing new body position, velocity and coordinate
2745 * transformation matrix.
2746 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2747 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2748 * body-to-ECI-frame coordinate transformation matrix are
2749 * invalid.
2750 */
2751 public ECIFrame navigateAndReturnNew(
2752 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2753 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2754 final BodyKinematics kinematics) throws InertialNavigatorException,
2755 InvalidSourceAndDestinationFrameTypeException {
2756 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2757 kinematics);
2758 }
2759
2760 /**
2761 * Runs precision ECI-frame inertial navigation equations.
2762 *
2763 * @param timeInterval time interval between epochs.
2764 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
2765 * frame, resolved along ECI-frame axes.
2766 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
2767 * frame, resolved along ECI-frame axes.
2768 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
2769 * frame, resolved along ECI-frame axes.
2770 * @param oldC previous body-to-ECI-frame coordinate transformation.
2771 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
2772 * resolved along ECI-frame axes.
2773 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
2774 * resolved along ECI-frame axes.
2775 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
2776 * resolved along ECI-frame axes.
2777 * @param kinematics body kinematics containing specific forces and angular rates applied to
2778 * the body.
2779 * @return estimated ECI frame containing new body position, velocity and coordinate
2780 * transformation matrix.
2781 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2782 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2783 * body-to-ECI-frame coordinate transformation matrix are
2784 * invalid.
2785 */
2786 public ECIFrame navigateAndReturnNew(
2787 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2788 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2789 final BodyKinematics kinematics) throws InertialNavigatorException,
2790 InvalidSourceAndDestinationFrameTypeException {
2791 return navigateECIAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
2792 kinematics);
2793 }
2794
2795 /**
2796 * Runs precision ECI-frame inertial navigation equations.
2797 *
2798 * @param timeInterval time interval between epochs expressed in seconds (s).
2799 * @param oldFrame previous ECI frame containing body position, velocity and
2800 * coordinate transformation matrix.
2801 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2802 * resolved along body-frame axes, averaged over time interval and
2803 * expressed in meters per squared second (m/s^2).
2804 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2805 * resolved along body-frame axes, averaged over time interval and
2806 * expressed in meters per squared second (m/s^2).
2807 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2808 * resolved along body-frame axes, averaged over time interval and
2809 * expressed in meters per squared second (m/s^2).
2810 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2811 * resolved along body-frame axes, averaged over time interval and
2812 * expressed in radians per second (rad/s).
2813 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2814 * resolved along body-frame axes, averaged over time interval and
2815 * expressed in radians per second (rad/s).
2816 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2817 * resolved along body-frame axes, averaged over time interval and
2818 * expressed in radians per second (rad/s).
2819 * @return estimated ECI frame containing new body position, velocity and coordinate
2820 * transformation matrix.
2821 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2822 */
2823 public ECIFrame navigateAndReturnNew(
2824 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
2825 final double angularRateX, final double angularRateY, final double angularRateZ)
2826 throws InertialNavigatorException {
2827 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2828 }
2829
2830 /**
2831 * Runs precision ECI-frame inertial navigation equations.
2832 *
2833 * @param timeInterval time interval between epochs.
2834 * @param oldFrame previous ECI frame containing body position, velocity and
2835 * coordinate transformation matrix.
2836 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2837 * resolved along body-frame axes, averaged over time interval and
2838 * expressed in meters per squared second (m/s^2).
2839 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2840 * resolved along body-frame axes, averaged over time interval and
2841 * expressed in meters per squared second (m/s^2).
2842 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2843 * resolved along body-frame axes, averaged over time interval and
2844 * expressed in meters per squared second (m/s^2).
2845 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2846 * resolved along body-frame axes, averaged over time interval and
2847 * expressed in radians per second (rad/s).
2848 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2849 * resolved along body-frame axes, averaged over time interval and
2850 * expressed in radians per second (rad/s).
2851 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2852 * resolved along body-frame axes, averaged over time interval and
2853 * expressed in radians per second (rad/s).
2854 * @return estimated ECI frame containing new body position, velocity and coordinate
2855 * transformation matrix.
2856 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2857 */
2858 public ECIFrame navigateAndReturnNew(
2859 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
2860 final double angularRateX, final double angularRateY, final double angularRateZ)
2861 throws InertialNavigatorException {
2862 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2863 }
2864
2865 /**
2866 * Runs precision ECI-frame inertial navigation equations.
2867 *
2868 * @param timeInterval time interval between epochs expressed in seconds (s).
2869 * @param oldFrame previous ECI frame containing body position, velocity and
2870 * coordinate transformation matrix.
2871 * @param kinematics body kinematics containing specific forces and angular rates applied to
2872 * the body.
2873 * @return estimated ECI frame containing new body position, velocity and coordinate
2874 * transformation matrix.
2875 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2876 */
2877 public ECIFrame navigateAndReturnNew(
2878 final double timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics)
2879 throws InertialNavigatorException {
2880 return navigateECIAndReturnNew(timeInterval, oldFrame, kinematics);
2881 }
2882
2883 /**
2884 * Runs precision ECI-frame inertial navigation equations.
2885 *
2886 * @param timeInterval time interval between epochs.
2887 * @param oldFrame previous ECI frame containing body position, velocity and
2888 * coordinate transformation matrix.
2889 * @param kinematics body kinematics containing specific forces and angular rates applied to
2890 * the body.
2891 * @return estimated ECI frame containing new body position, velocity and coordinate
2892 * transformation matrix.
2893 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2894 */
2895 public ECIFrame navigateAndReturnNew(
2896 final Time timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics)
2897 throws InertialNavigatorException {
2898 return navigateECIAndReturnNew(timeInterval, oldFrame, kinematics);
2899 }
2900
2901 /**
2902 * Runs precision ECI-frame inertial navigation equations.
2903 *
2904 * @param timeInterval time interval between epochs expressed in seconds (s).
2905 * @param oldFrame previous ECI frame containing body position, velocity and
2906 * coordinate transformation matrix.
2907 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2908 * resolved along body-frame axes, averaged over time interval.
2909 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2910 * resolved along body-frame axes, averaged over time interval.
2911 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2912 * resolved along body-frame axes, averaged over time interval.
2913 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2914 * resolved along body-frame axes, averaged over time interval and
2915 * expressed in radians per second (rad/s).
2916 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2917 * resolved along body-frame axes, averaged over time interval and
2918 * expressed in radians per second (rad/s).
2919 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2920 * resolved along body-frame axes, averaged over time interval and
2921 * expressed in radians per second (rad/s).
2922 * @return estimated ECI frame containing new body position, velocity and coordinate
2923 * transformation matrix.
2924 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2925 */
2926 public ECIFrame navigateAndReturnNew(
2927 final double timeInterval, final ECIFrame oldFrame,
2928 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2929 final double angularRateX, final double angularRateY, final double angularRateZ)
2930 throws InertialNavigatorException {
2931 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2932 }
2933
2934 /**
2935 * Runs precision ECI-frame inertial navigation equations.
2936 *
2937 * @param timeInterval time interval between epochs.
2938 * @param oldFrame previous ECI frame containing body position, velocity and
2939 * coordinate transformation matrix.
2940 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2941 * resolved along body-frame axes, averaged over time interval.
2942 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2943 * resolved along body-frame axes, averaged over time interval.
2944 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2945 * resolved along body-frame axes, averaged over time interval.
2946 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2947 * resolved along body-frame axes, averaged over time interval and
2948 * expressed in radians per second (rad/s).
2949 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2950 * resolved along body-frame axes, averaged over time interval and
2951 * expressed in radians per second (rad/s).
2952 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2953 * resolved along body-frame axes, averaged over time interval and
2954 * expressed in radians per second (rad/s).
2955 * @return estimated ECI frame containing new body position, velocity and coordinate
2956 * transformation matrix.
2957 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2958 */
2959 public ECIFrame navigateAndReturnNew(
2960 final Time timeInterval, final ECIFrame oldFrame,
2961 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2962 final double angularRateX, final double angularRateY, final double angularRateZ)
2963 throws InertialNavigatorException {
2964 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2965 }
2966
2967 /**
2968 * Runs precision ECI-frame inertial navigation equations.
2969 *
2970 * @param timeInterval time interval between epochs expressed in seconds (s).
2971 * @param oldFrame previous ECI frame containing body position, velocity and
2972 * coordinate transformation matrix.
2973 * @param fx specific force x-coordinate of body frame with respect ECI frame,
2974 * resolved along body-frame axes, averaged over time interval and
2975 * expressed in meters per squared second (m/s^2).
2976 * @param fy specific force y-coordinate of body frame with respect ECI frame,
2977 * resolved along body-frame axes, averaged over time interval and
2978 * expressed in meters per squared second (m/s^2).
2979 * @param fz specific force z-coordinate of body frame with respect ECI frame,
2980 * resolved along body-frame axes, averaged over time interval and
2981 * expressed in meters per squared second (m/s^2).
2982 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
2983 * resolved along body-frame axes, averaged over time interval.
2984 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
2985 * resolved along body-frame axes, averaged over time interval.
2986 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
2987 * resolved along body-frame axes, averaged over time interval.
2988 * @return estimated ECI frame containing new body position, velocity and coordinate
2989 * transformation matrix.
2990 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2991 */
2992 public ECIFrame navigateAndReturnNew(
2993 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
2994 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
2995 throws InertialNavigatorException {
2996 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
2997 }
2998
2999 /**
3000 * Runs precision ECI-frame inertial navigation equations.
3001 *
3002 * @param timeInterval time interval between epochs.
3003 * @param oldFrame previous ECI frame containing body position, velocity and
3004 * coordinate transformation matrix.
3005 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3006 * resolved along body-frame axes, averaged over time interval and
3007 * expressed in meters per squared second (m/s^2).
3008 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3009 * resolved along body-frame axes, averaged over time interval and
3010 * expressed in meters per squared second (m/s^2).
3011 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3012 * resolved along body-frame axes, averaged over time interval and
3013 * expressed in meters per squared second (m/s^2).
3014 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3015 * resolved along body-frame axes, averaged over time interval.
3016 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3017 * resolved along body-frame axes, averaged over time interval.
3018 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3019 * resolved along body-frame axes, averaged over time interval.
3020 * @return estimated ECI frame containing new body position, velocity and coordinate
3021 * transformation matrix.
3022 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3023 */
3024 public ECIFrame navigateAndReturnNew(
3025 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
3026 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
3027 throws InertialNavigatorException {
3028 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
3029 }
3030
3031 /**
3032 * Runs precision ECI-frame inertial navigation equations.
3033 *
3034 * @param timeInterval time interval between epochs expressed in seconds (s).
3035 * @param oldFrame previous ECI frame containing body position, velocity and
3036 * coordinate transformation matrix.
3037 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3038 * resolved along body-frame axes, averaged over time interval.
3039 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3040 * resolved along body-frame axes, averaged over time interval.
3041 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3042 * resolved along body-frame axes, averaged over time interval.
3043 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3044 * resolved along body-frame axes, averaged over time interval.
3045 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3046 * resolved along body-frame axes, averaged over time interval.
3047 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3048 * resolved along body-frame axes, averaged over time interval.
3049 * @return estimated ECI frame containing new body position, velocity and coordinate
3050 * transformation matrix.
3051 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3052 */
3053 public ECIFrame navigateAndReturnNew(
3054 final double timeInterval, final ECIFrame oldFrame,
3055 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3056 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
3057 throws InertialNavigatorException {
3058 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
3059 }
3060
3061 /**
3062 * Runs precision ECI-frame inertial navigation equations.
3063 *
3064 * @param timeInterval time interval between epochs.
3065 * @param oldFrame previous ECI frame containing body position, velocity and
3066 * coordinate transformation matrix.
3067 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3068 * resolved along body-frame axes, averaged over time interval.
3069 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3070 * resolved along body-frame axes, averaged over time interval.
3071 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3072 * resolved along body-frame axes, averaged over time interval.
3073 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3074 * resolved along body-frame axes, averaged over time interval.
3075 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3076 * resolved along body-frame axes, averaged over time interval.
3077 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3078 * resolved along body-frame axes, averaged over time interval.
3079 * @return estimated ECI frame containing new body position, velocity and coordinate
3080 * transformation matrix.
3081 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3082 */
3083 public ECIFrame navigateAndReturnNew(
3084 final Time timeInterval, final ECIFrame oldFrame,
3085 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3086 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
3087 throws InertialNavigatorException {
3088 return navigateECIAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
3089 }
3090
3091 /**
3092 * Runs precision ECI-frame inertial navigation equations.
3093 *
3094 * @param timeInterval time interval between epochs expressed in seconds (s).
3095 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3096 * frame, resolved along ECI-frame axes and expressed in meters (m).
3097 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3098 * frame, resolved along ECI-frame axes and expressed in meters (m).
3099 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3100 * frame, resolved along ECI-frame axes and expressed in meters (m).
3101 * @param oldC previous body-to-ECI-frame coordinate transformation.
3102 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3103 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3104 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3105 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3106 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3107 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3108 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3109 * resolved along body-frame axes, averaged over time interval and
3110 * expressed in meters per squared second (m/s^2).
3111 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3112 * resolved along body-frame axes, averaged over time interval and
3113 * expressed in meters per squared second (m/s^2).
3114 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3115 * resolved along body-frame axes, averaged over time interval and
3116 * expressed in meters per squared second (m/s^2).
3117 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3118 * resolved along body-frame axes, averaged over time interval and
3119 * expressed in radians per second (rad/s).
3120 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3121 * resolved along body-frame axes, averaged over time interval and
3122 * expressed in radians per second (rad/s).
3123 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3124 * resolved along body-frame axes, averaged over time interval and
3125 * expressed in radians per second (rad/s).
3126 * @param result instance where new estimated ECI frame containing new body position,
3127 * velocity and coordinate transformation matrix will be stored.
3128 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3129 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3130 * body-to-ECI-frame coordinate transformation matrix are
3131 * invalid.
3132 */
3133 public static void navigateECI(
3134 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3135 final CoordinateTransformation oldC,
3136 final double oldVx, final double oldVy, final double oldVz,
3137 final double fx, final double fy, final double fz,
3138 final double angularRateX, final double angularRateY, final double angularRateZ,
3139 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3140
3141 if (!isValidBodyToEciCoordinateTransformationMatrix(oldC)) {
3142 throw new InvalidSourceAndDestinationFrameTypeException();
3143 }
3144
3145 try {
3146 // Attitude update
3147 // Calculate attitude increment, magnitude, and skew-symmetric matrix
3148 final var alphaIbb = new Matrix(ROWS, 1);
3149 alphaIbb.setElementAtIndex(0, angularRateX * timeInterval);
3150 alphaIbb.setElementAtIndex(1, angularRateY * timeInterval);
3151 alphaIbb.setElementAtIndex(2, angularRateZ * timeInterval);
3152
3153 final var magAlpha = Utils.normF(alphaIbb);
3154 final var skewAlpha = Utils.skewMatrix(alphaIbb);
3155
3156 // Obtain coordinate transformation matrix from the new attitude to the old
3157 // using Rodrigues' formula, (5.73)
3158 final var cNewOld = Matrix.identity(ROWS, ROWS);
3159 if (magAlpha > ALPHA_THRESHOLD) {
3160 final var magAlpha2 = magAlpha * magAlpha;
3161 final var value1 = Math.sin(magAlpha) / magAlpha;
3162 final var value2 = (1.0 - Math.cos(magAlpha)) / magAlpha2;
3163
3164 final var tmp1 = skewAlpha.multiplyByScalarAndReturnNew(value1);
3165 final var tmp2 = skewAlpha.multiplyByScalarAndReturnNew(value2);
3166 tmp2.multiply(skewAlpha);
3167
3168 cNewOld.add(tmp1);
3169 cNewOld.add(tmp2);
3170 } else {
3171 cNewOld.add(skewAlpha);
3172 }
3173
3174 // Update attitude
3175 final var oldCbi = oldC.getMatrix();
3176 final var cbi = oldCbi.multiplyAndReturnNew(cNewOld);
3177
3178 // Specific force frame transformation
3179 // Calculate the average body-to-ECI-frame coordinate transformation
3180 // matrix over the update interval using (5.84)
3181 if (magAlpha > ALPHA_THRESHOLD) {
3182 final var tmp1 = Matrix.identity(ROWS, ROWS);
3183 final var magAlpha2 = magAlpha * magAlpha;
3184 final var value1 = (1.0 - Math.cos(magAlpha)) / magAlpha2;
3185 final var value2 = (1.0 - Math.sin(magAlpha) / magAlpha) / magAlpha2;
3186
3187 final var tmp2 = skewAlpha.multiplyByScalarAndReturnNew(value1);
3188 final var tmp3 = skewAlpha.multiplyByScalarAndReturnNew(value2);
3189 tmp3.multiply(skewAlpha);
3190
3191 tmp1.add(tmp2);
3192 tmp1.add(tmp3);
3193
3194 oldCbi.multiply(tmp1);
3195 }
3196
3197 // oldCbi contains average body-to-ECI-frame (aveCbi)
3198
3199 // Transform specific force to ECI-frame resolving axes using (5.81)
3200 final var fIbb = new Matrix(ROWS, 1);
3201 fIbb.setElementAtIndex(0, fx);
3202 fIbb.setElementAtIndex(1, fy);
3203 fIbb.setElementAtIndex(2, fz);
3204
3205 oldCbi.multiply(fIbb);
3206 // now oldCbi contains specific force to ECI-frame resolving axes(fIbi)
3207
3208 // Update velocity
3209 // From (5.18) and (5.20),
3210 final var oldVibi = new Matrix(ROWS, 1);
3211 oldVibi.setElementAtIndex(0, oldVx);
3212 oldVibi.setElementAtIndex(1, oldVy);
3213 oldVibi.setElementAtIndex(2, oldVz);
3214
3215 final var gravitation = ECIGravitationEstimator.estimateGravitationAndReturnNew(oldX, oldY, oldZ);
3216 final var g = gravitation.asMatrix();
3217
3218 // fIbi + g
3219 oldCbi.add(g);
3220
3221 // timeInterval * (fIbi + g)
3222 oldCbi.multiplyByScalar(timeInterval);
3223
3224 // oldVibi + timeInterval * (fIbi + g)
3225 final var vIbi = oldVibi.addAndReturnNew(oldCbi);
3226
3227 final var vx = vIbi.getElementAtIndex(0);
3228 final var vy = vIbi.getElementAtIndex(1);
3229 final var vz = vIbi.getElementAtIndex(2);
3230
3231 // Update cartesian position
3232 // From (5.23),
3233 final var x = oldX + (vx + oldVx) * 0.5 * timeInterval;
3234 final var y = oldY + (vy + oldVy) * 0.5 * timeInterval;
3235 final var z = oldZ + (vz + oldVz) * 0.5 * timeInterval;
3236
3237 final var newC = new CoordinateTransformation(cbi, FrameType.BODY_FRAME,
3238 FrameType.EARTH_CENTERED_INERTIAL_FRAME);
3239
3240 result.setCoordinates(x, y, z);
3241 result.setVelocityCoordinates(vx, vy, vz);
3242 result.setCoordinateTransformation(newC);
3243
3244 } catch (final AlgebraException | InvalidRotationMatrixException e) {
3245 throw new InertialNavigatorException(e);
3246 }
3247 }
3248
3249 /**
3250 * Runs precision ECI-frame inertial navigation equations.
3251 *
3252 * @param timeInterval time interval between epochs.
3253 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3254 * frame, resolved along ECI-frame axes and expressed in meters (m).
3255 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3256 * frame, resolved along ECI-frame axes and expressed in meters (m).
3257 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3258 * frame, resolved along ECI-frame axes and expressed in meters (m).
3259 * @param oldC previous body-to-ECI-frame coordinate transformation.
3260 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3261 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3262 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3263 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3264 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3265 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3266 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3267 * resolved along body-frame axes, averaged over time interval and
3268 * expressed in meters per squared second (m/s^2).
3269 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3270 * resolved along body-frame axes, averaged over time interval and
3271 * expressed in meters per squared second (m/s^2).
3272 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3273 * resolved along body-frame axes, averaged over time interval and
3274 * expressed in meters per squared second (m/s^2).
3275 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3276 * resolved along body-frame axes, averaged over time interval and
3277 * expressed in radians per second (rad/s).
3278 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3279 * resolved along body-frame axes, averaged over time interval and
3280 * expressed in radians per second (rad/s).
3281 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3282 * resolved along body-frame axes, averaged over time interval and
3283 * expressed in radians per second (rad/s).
3284 * @param result instance where new estimated ECI frame containing new body position,
3285 * velocity and coordinate transformation matrix will be stored.
3286 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3287 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3288 * body-to-ECI-frame coordinate transformation matrix are
3289 * invalid.
3290 */
3291 public static void navigateECI(
3292 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3293 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3294 final double fx, final double fy, final double fz,
3295 final double angularRateX, final double angularRateY, final double angularRateZ,
3296 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3297 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3298 angularRateX, angularRateY, angularRateZ, result);
3299 }
3300
3301 /**
3302 * Runs precision ECI-frame inertial navigation equations.
3303 *
3304 * @param timeInterval time interval between epochs expressed in seconds (s).
3305 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3306 * frame, resolved along ECI-frame axes and expressed in meters (m).
3307 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3308 * frame, resolved along ECI-frame axes and expressed in meters (m).
3309 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3310 * frame, resolved along ECI-frame axes and expressed in meters (m).
3311 * @param oldC previous body-to-ECI-frame coordinate transformation.
3312 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3313 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3314 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3315 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3316 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3317 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3318 * @param kinematics body kinematics containing specific forces and angular rates applied to
3319 * the body.
3320 * @param result instance where new estimated ECI frame containing new body position,
3321 * velocity and coordinate transformation matrix will be stored.
3322 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3323 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3324 * body-to-ECI-frame coordinate transformation matrix are
3325 * invalid.
3326 */
3327 public static void navigateECI(
3328 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3329 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3330 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
3331 InvalidSourceAndDestinationFrameTypeException {
3332 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
3333 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
3334 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
3335 }
3336
3337 /**
3338 * Runs precision ECI-frame inertial navigation equations.
3339 *
3340 * @param timeInterval time interval between epochs.
3341 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3342 * frame, resolved along ECI-frame axes and expressed in meters (m).
3343 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3344 * frame, resolved along ECI-frame axes and expressed in meters (m).
3345 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3346 * frame, resolved along ECI-frame axes and expressed in meters (m).
3347 * @param oldC previous body-to-ECI-frame coordinate transformation.
3348 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3349 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3350 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3351 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3352 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3353 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3354 * @param kinematics body kinematics containing specific forces and angular rates applied to
3355 * the body.
3356 * @param result instance where new estimated ECI frame containing new body position,
3357 * velocity and coordinate transformation matrix will be stored.
3358 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3359 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3360 * body-to-ECI-frame coordinate transformation matrix are
3361 * invalid.
3362 */
3363 public static void navigateECI(
3364 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3365 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3366 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
3367 InvalidSourceAndDestinationFrameTypeException {
3368 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
3369 }
3370
3371 /**
3372 * Runs precision ECI-frame inertial navigation equations.
3373 *
3374 * @param timeInterval time interval between epochs expressed in seconds (s).
3375 * @param oldPosition previous cartesian position of body frame with respect ECI
3376 * frame, resolved along ECI-frame axes and expressed in meters (m).
3377 * @param oldC previous body-to-ECI-frame coordinate transformation.
3378 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3379 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3380 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3381 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3382 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3383 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3384 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3385 * resolved along body-frame axes, averaged over time interval and
3386 * expressed in meters per squared second (m/s^2).
3387 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3388 * resolved along body-frame axes, averaged over time interval and
3389 * expressed in meters per squared second (m/s^2).
3390 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3391 * resolved along body-frame axes, averaged over time interval and
3392 * expressed in meters per squared second (m/s^2).
3393 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3394 * resolved along body-frame axes, averaged over time interval and
3395 * expressed in radians per second (rad/s).
3396 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3397 * resolved along body-frame axes, averaged over time interval and
3398 * expressed in radians per second (rad/s).
3399 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3400 * resolved along body-frame axes, averaged over time interval and
3401 * expressed in radians per second (rad/s).
3402 * @param result instance where new estimated ECI frame containing new body position,
3403 * velocity and coordinate transformation matrix will be stored.
3404 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3405 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3406 * body-to-ECI-frame coordinate transformation matrix are
3407 * invalid.
3408 */
3409 public static void navigateECI(
3410 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
3411 final double oldVx, final double oldVy, final double oldVz,
3412 final double fx, final double fy, final double fz,
3413 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3414 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3415 navigateECI(timeInterval, oldPosition.getInhomX(), oldPosition.getInhomY(), oldPosition.getInhomZ(),
3416 oldC, oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3417 }
3418
3419 /**
3420 * Runs precision ECI-frame inertial navigation equations.
3421 *
3422 * @param timeInterval time interval between epochs.
3423 * @param oldPosition previous cartesian position of body frame with respect ECI
3424 * frame, resolved along ECI-frame axes and expressed in meters (m).
3425 * @param oldC previous body-to-ECI-frame coordinate transformation.
3426 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3427 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3428 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3429 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3430 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3431 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3432 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3433 * resolved along body-frame axes, averaged over time interval and
3434 * expressed in meters per squared second (m/s^2).
3435 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3436 * resolved along body-frame axes, averaged over time interval and
3437 * expressed in meters per squared second (m/s^2).
3438 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3439 * resolved along body-frame axes, averaged over time interval and
3440 * expressed in meters per squared second (m/s^2).
3441 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3442 * resolved along body-frame axes, averaged over time interval and
3443 * expressed in radians per second (rad/s).
3444 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3445 * resolved along body-frame axes, averaged over time interval and
3446 * expressed in radians per second (rad/s).
3447 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3448 * resolved along body-frame axes, averaged over time interval and
3449 * expressed in radians per second (rad/s).
3450 * @param result instance where new estimated ECI frame containing new body position,
3451 * velocity and coordinate transformation matrix will be stored.
3452 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3453 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3454 * body-to-ECI-frame coordinate transformation matrix are
3455 * invalid.
3456 */
3457 public static void navigateECI(
3458 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
3459 final double oldVx, final double oldVy, final double oldVz,
3460 final double fx, final double fy, final double fz,
3461 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3462 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3463 navigateECI(timeInterval, oldPosition.getInhomX(), oldPosition.getInhomY(), oldPosition.getInhomZ(), oldC,
3464 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3465 }
3466
3467 /**
3468 * Runs precision ECI-frame inertial navigation equations.
3469 *
3470 * @param timeInterval time interval between epochs expressed in seconds (s).
3471 * @param oldPosition previous cartesian position of body frame with respect ECI
3472 * frame, resolved along ECI-frame axes and expressed in meters (m).
3473 * @param oldC previous body-to-ECI-frame coordinate transformation.
3474 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3475 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3476 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3477 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3478 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3479 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3480 * @param kinematics body kinematics containing specific forces and angular rates applied to
3481 * the body.
3482 * @param result instance where new estimated ECI frame containing new body position,
3483 * velocity and coordinate transformation matrix will be stored.
3484 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3485 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3486 * body-to-ECI-frame coordinate transformation matrix are
3487 * invalid.
3488 */
3489 public static void navigateECI(
3490 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
3491 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
3492 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3493 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz,
3494 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
3495 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
3496 }
3497
3498 /**
3499 * Runs precision ECI-frame inertial navigation equations.
3500 *
3501 * @param timeInterval time interval between epochs.
3502 * @param oldPosition previous cartesian position of body frame with respect ECI
3503 * frame, resolved along ECI-frame axes and expressed in meters (m).
3504 * @param oldC previous body-to-ECI-frame coordinate transformation.
3505 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3506 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3507 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3508 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3509 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3510 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3511 * @param kinematics body kinematics containing specific forces and angular rates applied to
3512 * the body.
3513 * @param result instance where new estimated ECI frame containing new body position,
3514 * velocity and coordinate transformation matrix will be stored.
3515 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3516 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3517 * body-to-ECI-frame coordinate transformation matrix are
3518 * invalid.
3519 */
3520 public static void navigateECI(
3521 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
3522 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
3523 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3524 navigateECI(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
3525 }
3526
3527 /**
3528 * Runs precision ECI-frame inertial navigation equations.
3529 *
3530 * @param timeInterval time interval between epochs expressed in seconds (s).
3531 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3532 * frame, resolved along ECI-frame axes.
3533 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3534 * frame, resolved along ECI-frame axes.
3535 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3536 * frame, resolved along ECI-frame axes.
3537 * @param oldC previous body-to-ECI-frame coordinate transformation.
3538 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3539 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3540 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3541 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3542 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3543 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3544 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3545 * resolved along body-frame axes, averaged over time interval and
3546 * expressed in meters per squared second (m/s^2).
3547 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3548 * resolved along body-frame axes, averaged over time interval and
3549 * expressed in meters per squared second (m/s^2).
3550 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3551 * resolved along body-frame axes, averaged over time interval and
3552 * expressed in meters per squared second (m/s^2).
3553 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3554 * resolved along body-frame axes, averaged over time interval and
3555 * expressed in radians per second (rad/s).
3556 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3557 * resolved along body-frame axes, averaged over time interval and
3558 * expressed in radians per second (rad/s).
3559 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3560 * resolved along body-frame axes, averaged over time interval and
3561 * expressed in radians per second (rad/s).
3562 * @param result instance where new estimated ECI frame containing new body position,
3563 * velocity and coordinate transformation matrix will be stored.
3564 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3565 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3566 * body-to-ECI-frame coordinate transformation matrix are
3567 * invalid.
3568 */
3569 public static void navigateECI(
3570 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
3571 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3572 final double fx, final double fy, final double fz,
3573 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3574 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3575 navigateECI(timeInterval,
3576 convertDistanceToDouble(oldX), convertDistanceToDouble(oldY), convertDistanceToDouble(oldZ), oldC,
3577 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3578 }
3579
3580 /**
3581 * Runs precision ECI-frame inertial navigation equations.
3582 *
3583 * @param timeInterval time interval between epochs.
3584 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3585 * frame, resolved along ECI-frame axes.
3586 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3587 * frame, resolved along ECI-frame axes.
3588 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3589 * frame, resolved along ECI-frame axes.
3590 * @param oldC previous body-to-ECI-frame coordinate transformation.
3591 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3592 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3593 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3594 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3595 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3596 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3597 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3598 * resolved along body-frame axes, averaged over time interval and
3599 * expressed in meters per squared second (m/s^2).
3600 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3601 * resolved along body-frame axes, averaged over time interval and
3602 * expressed in meters per squared second (m/s^2).
3603 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3604 * resolved along body-frame axes, averaged over time interval and
3605 * expressed in meters per squared second (m/s^2).
3606 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3607 * resolved along body-frame axes, averaged over time interval and
3608 * expressed in radians per second (rad/s).
3609 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3610 * resolved along body-frame axes, averaged over time interval and
3611 * expressed in radians per second (rad/s).
3612 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3613 * resolved along body-frame axes, averaged over time interval and
3614 * expressed in radians per second (rad/s).
3615 * @param result instance where new estimated ECI frame containing new body position,
3616 * velocity and coordinate transformation matrix will be stored.
3617 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3618 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3619 * body-to-ECI-frame coordinate transformation matrix are
3620 * invalid.
3621 */
3622 public static void navigateECI(
3623 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
3624 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3625 final double fx, final double fy, final double fz,
3626 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3627 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3628 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3629 angularRateX, angularRateY, angularRateZ, result);
3630 }
3631
3632 /**
3633 * Runs precision ECI-frame inertial navigation equations.
3634 *
3635 * @param timeInterval time interval between epochs expressed in seconds (s).
3636 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3637 * frame, resolved along ECI-frame axes.
3638 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3639 * frame, resolved along ECI-frame axes.
3640 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3641 * frame, resolved along ECI-frame axes.
3642 * @param oldC previous body-to-ECI-frame coordinate transformation.
3643 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3644 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3645 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3646 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3647 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3648 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3649 * @param kinematics body kinematics containing specific forces and angular rates applied to
3650 * the body.
3651 * @param result instance where new estimated ECI frame containing new body position,
3652 * velocity and coordinate transformation matrix will be stored.
3653 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3654 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3655 * body-to-ECI-frame coordinate transformation matrix are
3656 * invalid.
3657 */
3658 public static void navigateECI(
3659 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
3660 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3661 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
3662 InvalidSourceAndDestinationFrameTypeException {
3663 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
3664 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
3665 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
3666 }
3667
3668 /**
3669 * Runs precision ECI-frame inertial navigation equations.
3670 *
3671 * @param timeInterval time interval between epochs.
3672 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3673 * frame, resolved along ECI-frame axes.
3674 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3675 * frame, resolved along ECI-frame axes.
3676 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3677 * frame, resolved along ECI-frame axes.
3678 * @param oldC previous body-to-ECI-frame coordinate transformation.
3679 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3680 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3681 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3682 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3683 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3684 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3685 * @param kinematics body kinematics containing specific forces and angular rates applied to
3686 * the body.
3687 * @param result instance where new estimated ECI frame containing new body position,
3688 * velocity and coordinate transformation matrix will be stored.
3689 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3690 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3691 * body-to-ECI-frame coordinate transformation matrix are
3692 * invalid.
3693 */
3694 public static void navigateECI(
3695 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
3696 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3697 final BodyKinematics kinematics, final ECIFrame result)
3698 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3699 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
3700 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
3701 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
3702 }
3703
3704 /**
3705 * Runs precision ECI-frame inertial navigation equations.
3706 *
3707 * @param timeInterval time interval between epochs expressed in seconds (s).
3708 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3709 * frame, resolved along ECI-frame axes and expressed in meters (m).
3710 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3711 * frame, resolved along ECI-frame axes and expressed in meters (m).
3712 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3713 * frame, resolved along ECI-frame axes and expressed in meters (m).
3714 * @param oldC previous body-to-ECI-frame coordinate transformation.
3715 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
3716 * resolved along ECI-frame axes.
3717 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
3718 * resolved along ECI-frame axes.
3719 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
3720 * resolved along ECI-frame axes.
3721 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3722 * resolved along body-frame axes, averaged over time interval and
3723 * expressed in meters per squared second (m/s^2).
3724 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3725 * resolved along body-frame axes, averaged over time interval and
3726 * expressed in meters per squared second (m/s^2).
3727 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3728 * resolved along body-frame axes, averaged over time interval and
3729 * expressed in meters per squared second (m/s^2).
3730 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3731 * resolved along body-frame axes, averaged over time interval and
3732 * expressed in radians per second (rad/s).
3733 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3734 * resolved along body-frame axes, averaged over time interval and
3735 * expressed in radians per second (rad/s).
3736 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3737 * resolved along body-frame axes, averaged over time interval and
3738 * expressed in radians per second (rad/s).
3739 * @param result instance where new estimated ECI frame containing new body position,
3740 * velocity and coordinate transformation matrix will be stored.
3741 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3742 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3743 * body-to-ECI-frame coordinate transformation matrix are
3744 * invalid.
3745 */
3746 public static void navigateECI(
3747 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3748 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
3749 final double fx, final double fy, final double fz,
3750 final double angularRateX, final double angularRateY, final double angularRateZ,
3751 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3752 navigateECI(timeInterval, oldX, oldY, oldZ, oldC,
3753 convertSpeedToDouble(oldSpeedX), convertSpeedToDouble(oldSpeedY), convertSpeedToDouble(oldSpeedZ),
3754 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3755 }
3756
3757 /**
3758 * Runs precision ECI-frame inertial navigation equations.
3759 *
3760 * @param timeInterval time interval between epochs.
3761 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3762 * frame, resolved along ECI-frame axes and expressed in meters (m).
3763 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3764 * frame, resolved along ECI-frame axes and expressed in meters (m).
3765 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3766 * frame, resolved along ECI-frame axes and expressed in meters (m).
3767 * @param oldC previous body-to-ECI-frame coordinate transformation.
3768 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
3769 * resolved along ECI-frame axes.
3770 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
3771 * resolved along ECI-frame axes.
3772 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
3773 * resolved along ECI-frame axes.
3774 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3775 * resolved along body-frame axes, averaged over time interval and
3776 * expressed in meters per squared second (m/s^2).
3777 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3778 * resolved along body-frame axes, averaged over time interval and
3779 * expressed in meters per squared second (m/s^2).
3780 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3781 * resolved along body-frame axes, averaged over time interval and
3782 * expressed in meters per squared second (m/s^2).
3783 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3784 * resolved along body-frame axes, averaged over time interval and
3785 * expressed in radians per second (rad/s).
3786 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3787 * resolved along body-frame axes, averaged over time interval and
3788 * expressed in radians per second (rad/s).
3789 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3790 * resolved along body-frame axes, averaged over time interval and
3791 * expressed in radians per second (rad/s).
3792 * @param result instance where new estimated ECI frame containing new body position,
3793 * velocity and coordinate transformation matrix will be stored.
3794 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3795 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3796 * body-to-ECI-frame coordinate transformation matrix are
3797 * invalid.
3798 */
3799 public static void navigateECI(
3800 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3801 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
3802 final double fx, final double fy, final double fz,
3803 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3804 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3805 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
3806 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3807 }
3808
3809 /**
3810 * Runs precision ECI-frame inertial navigation equations.
3811 *
3812 * @param timeInterval time interval between epochs expressed in seconds (s).
3813 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3814 * frame, resolved along ECI-frame axes and expressed in meters (m).
3815 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3816 * frame, resolved along ECI-frame axes and expressed in meters (m).
3817 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3818 * frame, resolved along ECI-frame axes and expressed in meters (m).
3819 * @param oldC previous body-to-ECI-frame coordinate transformation.
3820 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
3821 * resolved along ECI-frame axes.
3822 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
3823 * resolved along ECI-frame axes.
3824 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
3825 * resolved along ECI-frame axes.
3826 * @param kinematics body kinematics containing specific forces and angular rates applied to
3827 * the body.
3828 * @param result instance where new estimated ECI frame containing new body position,
3829 * velocity and coordinate transformation matrix will be stored.
3830 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3831 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3832 * body-to-ECI-frame coordinate transformation matrix are
3833 * invalid.
3834 */
3835 public static void navigateECI(
3836 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3837 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
3838 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
3839 InvalidSourceAndDestinationFrameTypeException {
3840 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
3841 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
3842 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
3843 }
3844
3845 /**
3846 * Runs precision ECI-frame inertial navigation equations.
3847 *
3848 * @param timeInterval time interval between epochs expressed in seconds (s).
3849 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3850 * frame, resolved along ECI-frame axes and expressed in meters (m).
3851 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3852 * frame, resolved along ECI-frame axes and expressed in meters (m).
3853 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3854 * frame, resolved along ECI-frame axes and expressed in meters (m).
3855 * @param oldC previous body-to-ECI-frame coordinate transformation.
3856 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
3857 * resolved along ECI-frame axes.
3858 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
3859 * resolved along ECI-frame axes.
3860 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
3861 * resolved along ECI-frame axes.
3862 * @param kinematics body kinematics containing specific forces and angular rates applied to
3863 * the body.
3864 * @param result instance where new estimated ECI frame containing new body position,
3865 * velocity and coordinate transformation matrix will be stored.
3866 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3867 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3868 * body-to-ECI-frame coordinate transformation matrix are
3869 * invalid.
3870 */
3871 public static void navigateECI(
3872 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3873 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
3874 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
3875 InvalidSourceAndDestinationFrameTypeException {
3876 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
3877 kinematics, result);
3878 }
3879
3880 /**
3881 * Runs precision ECI-frame inertial navigation equations.
3882 *
3883 * @param timeInterval time interval between epochs expressed in seconds (s).
3884 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3885 * frame, resolved along ECI-frame axes and expressed in meters (m).
3886 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3887 * frame, resolved along ECI-frame axes and expressed in meters (m).
3888 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3889 * frame, resolved along ECI-frame axes and expressed in meters (m).
3890 * @param oldC previous body-to-ECI-frame coordinate transformation.
3891 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3892 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3893 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3894 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3895 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3896 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3897 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3898 * resolved along body-frame axes, averaged over time interval.
3899 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3900 * resolved along body-frame axes, averaged over time interval.
3901 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3902 * resolved along body-frame axes, averaged over time interval.
3903 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3904 * resolved along body-frame axes, averaged over time interval and
3905 * expressed in radians per second (rad/s).
3906 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3907 * resolved along body-frame axes, averaged over time interval and
3908 * expressed in radians per second (rad/s).
3909 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3910 * resolved along body-frame axes, averaged over time interval and
3911 * expressed in radians per second (rad/s).
3912 * @param result instance where new estimated ECI frame containing new body position,
3913 * velocity and coordinate transformation matrix will be stored.
3914 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3915 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3916 * body-to-ECI-frame coordinate transformation matrix are
3917 * invalid.
3918 */
3919 public static void navigateECI(
3920 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3921 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3922 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3923 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3924 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3925 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
3926 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
3927 angularRateX, angularRateY, angularRateZ, result);
3928 }
3929
3930 /**
3931 * Runs precision ECI-frame inertial navigation equations.
3932 *
3933 * @param timeInterval time interval between epochs.
3934 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3935 * frame, resolved along ECI-frame axes and expressed in meters (m).
3936 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3937 * frame, resolved along ECI-frame axes and expressed in meters (m).
3938 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3939 * frame, resolved along ECI-frame axes and expressed in meters (m).
3940 * @param oldC previous body-to-ECI-frame coordinate transformation.
3941 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3942 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3943 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3944 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3945 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3946 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3947 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3948 * resolved along body-frame axes, averaged over time interval.
3949 * @param fy specific force y-coordinate of body frame with respect ECI frame,
3950 * resolved along body-frame axes, averaged over time interval.
3951 * @param fz specific force z-coordinate of body frame with respect ECI frame,
3952 * resolved along body-frame axes, averaged over time interval.
3953 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
3954 * resolved along body-frame axes, averaged over time interval and
3955 * expressed in radians per second (rad/s).
3956 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
3957 * resolved along body-frame axes, averaged over time interval and
3958 * expressed in radians per second (rad/s).
3959 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
3960 * resolved along body-frame axes, averaged over time interval and
3961 * expressed in radians per second (rad/s).
3962 * @param result instance where new estimated ECI frame containing new body position,
3963 * velocity and coordinate transformation matrix will be stored.
3964 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3965 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3966 * body-to-ECI-frame coordinate transformation matrix are
3967 * invalid.
3968 */
3969 public static void navigateECI(
3970 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3971 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3972 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3973 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
3974 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3975 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
3976 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
3977 angularRateX, angularRateY, angularRateZ, result);
3978 }
3979
3980 /**
3981 * Runs precision ECI-frame inertial navigation equations.
3982 *
3983 * @param timeInterval time interval between epochs expressed in seconds (s).
3984 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
3985 * frame, resolved along ECI-frame axes and expressed in meters (m).
3986 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
3987 * frame, resolved along ECI-frame axes and expressed in meters (m).
3988 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
3989 * frame, resolved along ECI-frame axes and expressed in meters (m).
3990 * @param oldC previous body-to-ECI-frame coordinate transformation.
3991 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
3992 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3993 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
3994 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3995 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
3996 * resolved along ECI-frame axes and expressed in meters per second (m/s).
3997 * @param fx specific force x-coordinate of body frame with respect ECI frame,
3998 * resolved along body-frame axes, averaged over time interval and
3999 * expressed in meters per squared second (m/s^2).
4000 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4001 * resolved along body-frame axes, averaged over time interval and
4002 * expressed in meters per squared second (m/s^2).
4003 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4004 * resolved along body-frame axes, averaged over time interval and
4005 * expressed in meters per squared second (m/s^2).
4006 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4007 * resolved along body-frame axes, averaged over time interval.
4008 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4009 * resolved along body-frame axes, averaged over time interval.
4010 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4011 * resolved along body-frame axes, averaged over time interval.
4012 * @param result instance where new estimated ECI frame containing new body position,
4013 * velocity and coordinate transformation matrix will be stored.
4014 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4015 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4016 * body-to-ECI-frame coordinate transformation matrix are
4017 * invalid.
4018 */
4019 public static void navigateECI(
4020 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4021 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4022 final double fx, final double fy, final double fz,
4023 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4024 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4025 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4026 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
4027 convertAngularSpeedToDouble(angularRateZ), result);
4028 }
4029
4030 /**
4031 * Runs precision ECI-frame inertial navigation equations.
4032 *
4033 * @param timeInterval time interval between epochs.
4034 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4035 * frame, resolved along ECI-frame axes and expressed in meters (m).
4036 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4037 * frame, resolved along ECI-frame axes and expressed in meters (m).
4038 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4039 * frame, resolved along ECI-frame axes and expressed in meters (m).
4040 * @param oldC previous body-to-ECI-frame coordinate transformation.
4041 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4042 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4043 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4044 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4045 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4046 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4047 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4048 * resolved along body-frame axes, averaged over time interval and
4049 * expressed in meters per squared second (m/s^2).
4050 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4051 * resolved along body-frame axes, averaged over time interval and
4052 * expressed in meters per squared second (m/s^2).
4053 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4054 * resolved along body-frame axes, averaged over time interval and
4055 * expressed in meters per squared second (m/s^2).
4056 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4057 * resolved along body-frame axes, averaged over time interval.
4058 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4059 * resolved along body-frame axes, averaged over time interval.
4060 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4061 * resolved along body-frame axes, averaged over time interval.
4062 * @param result instance where new estimated ECI frame containing new body position,
4063 * velocity and coordinate transformation matrix will be stored.
4064 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4065 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4066 * body-to-ECI-frame coordinate transformation matrix are
4067 * invalid.
4068 */
4069 public static void navigateECI(
4070 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4071 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4072 final double fx, final double fy, final double fz,
4073 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4074 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4075 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4076 angularRateX, angularRateY, angularRateZ, result);
4077 }
4078
4079 /**
4080 * Runs precision ECI-frame inertial navigation equations.
4081 *
4082 * @param timeInterval time interval between epochs expressed in seconds (s).
4083 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4084 * frame, resolved along ECI-frame axes.
4085 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4086 * frame, resolved along ECI-frame axes.
4087 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4088 * frame, resolved along ECI-frame axes.
4089 * @param oldC previous body-to-ECI-frame coordinate transformation.
4090 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
4091 * resolved along ECI-frame axes.
4092 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
4093 * resolved along ECI-frame axes.
4094 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
4095 * resolved along ECI-frame axes.
4096 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4097 * resolved along body-frame axes, averaged over time interval and
4098 * expressed in meters per squared second (m/s^2).
4099 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4100 * resolved along body-frame axes, averaged over time interval and
4101 * expressed in meters per squared second (m/s^2).
4102 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4103 * resolved along body-frame axes, averaged over time interval and
4104 * expressed in meters per squared second (m/s^2).
4105 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4106 * resolved along body-frame axes, averaged over time interval and
4107 * expressed in radians per second (rad/s).
4108 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4109 * resolved along body-frame axes, averaged over time interval and
4110 * expressed in radians per second (rad/s).
4111 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4112 * resolved along body-frame axes, averaged over time interval and
4113 * expressed in radians per second (rad/s).
4114 * @param result instance where new estimated ECI frame containing new body position,
4115 * velocity and coordinate transformation matrix will be stored.
4116 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4117 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4118 * body-to-ECI-frame coordinate transformation matrix are
4119 * invalid.
4120 */
4121 public static void navigateECI(
4122 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4123 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4124 final double fx, final double fy, final double fz,
4125 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
4126 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4127 navigateECI(timeInterval,
4128 convertDistanceToDouble(oldX), convertDistanceToDouble(oldY), convertDistanceToDouble(oldZ), oldC,
4129 convertSpeedToDouble(oldSpeedX), convertSpeedToDouble(oldSpeedY), convertSpeedToDouble(oldSpeedZ),
4130 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
4131 }
4132
4133 /**
4134 * Runs precision ECI-frame inertial navigation equations.
4135 *
4136 * @param timeInterval time interval between epochs.
4137 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4138 * frame, resolved along ECI-frame axes.
4139 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4140 * frame, resolved along ECI-frame axes.
4141 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4142 * frame, resolved along ECI-frame axes.
4143 * @param oldC previous body-to-ECI-frame coordinate transformation.
4144 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
4145 * resolved along ECI-frame axes.
4146 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
4147 * resolved along ECI-frame axes.
4148 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
4149 * resolved along ECI-frame axes.
4150 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4151 * resolved along body-frame axes, averaged over time interval and
4152 * expressed in meters per squared second (m/s^2).
4153 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4154 * resolved along body-frame axes, averaged over time interval and
4155 * expressed in meters per squared second (m/s^2).
4156 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4157 * resolved along body-frame axes, averaged over time interval and
4158 * expressed in meters per squared second (m/s^2).
4159 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4160 * resolved along body-frame axes, averaged over time interval and
4161 * expressed in radians per second (rad/s).
4162 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4163 * resolved along body-frame axes, averaged over time interval and
4164 * expressed in radians per second (rad/s).
4165 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4166 * resolved along body-frame axes, averaged over time interval and
4167 * expressed in radians per second (rad/s).
4168 * @param result instance where new estimated ECI frame containing new body position,
4169 * velocity and coordinate transformation matrix will be stored.
4170 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4171 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4172 * body-to-ECI-frame coordinate transformation matrix are
4173 * invalid.
4174 */
4175 public static void navigateECI(
4176 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4177 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4178 final double fx, final double fy, final double fz,
4179 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
4180 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4181 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
4182 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
4183 }
4184
4185 /**
4186 * Runs precision ECI-frame inertial navigation equations.
4187 *
4188 * @param timeInterval time interval between epochs expressed in seconds (s).
4189 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4190 * frame, resolved along ECI-frame axes.
4191 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4192 * frame, resolved along ECI-frame axes.
4193 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4194 * frame, resolved along ECI-frame axes.
4195 * @param oldC previous body-to-ECI-frame coordinate transformation.
4196 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
4197 * resolved along ECI-frame axes.
4198 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
4199 * resolved along ECI-frame axes.
4200 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
4201 * resolved along ECI-frame axes.
4202 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4203 * resolved along body-frame axes, averaged over time interval.
4204 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4205 * resolved along body-frame axes, averaged over time interval.
4206 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4207 * resolved along body-frame axes, averaged over time interval.
4208 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4209 * resolved along body-frame axes, averaged over time interval.
4210 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4211 * resolved along body-frame axes, averaged over time interval.
4212 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4213 * resolved along body-frame axes, averaged over time interval.
4214 * @param result instance where new estimated ECI frame containing new body position,
4215 * velocity and coordinate transformation matrix will be stored.
4216 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4217 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4218 * body-to-ECI-frame coordinate transformation matrix are
4219 * invalid.
4220 */
4221 public static void navigateECI(
4222 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4223 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4224 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4225 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4226 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4227 navigateECI(timeInterval,
4228 convertDistanceToDouble(oldX), convertDistanceToDouble(oldY), convertDistanceToDouble(oldZ), oldC,
4229 convertSpeedToDouble(oldSpeedX), convertSpeedToDouble(oldSpeedY), convertSpeedToDouble(oldSpeedZ),
4230 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
4231 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
4232 convertAngularSpeedToDouble(angularRateZ), result);
4233 }
4234
4235 /**
4236 * Runs precision ECI-frame inertial navigation equations.
4237 *
4238 * @param timeInterval time interval between epochs.
4239 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4240 * frame, resolved along ECI-frame axes.
4241 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4242 * frame, resolved along ECI-frame axes.
4243 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4244 * frame, resolved along ECI-frame axes.
4245 * @param oldC previous body-to-ECI-frame coordinate transformation.
4246 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
4247 * resolved along ECI-frame axes.
4248 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
4249 * resolved along ECI-frame axes.
4250 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
4251 * resolved along ECI-frame axes.
4252 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4253 * resolved along body-frame axes, averaged over time interval.
4254 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4255 * resolved along body-frame axes, averaged over time interval.
4256 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4257 * resolved along body-frame axes, averaged over time interval.
4258 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4259 * resolved along body-frame axes, averaged over time interval.
4260 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4261 * resolved along body-frame axes, averaged over time interval.
4262 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4263 * resolved along body-frame axes, averaged over time interval.
4264 * @param result instance where new estimated ECI frame containing new body position,
4265 * velocity and coordinate transformation matrix will be stored.
4266 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4267 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4268 * body-to-ECI-frame coordinate transformation matrix are
4269 * invalid.
4270 */
4271 public static void navigateECI(
4272 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4273 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4274 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4275 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4276 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4277 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
4278 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
4279 }
4280
4281 /**
4282 * Runs precision ECI-frame inertial navigation equations.
4283 *
4284 * @param timeInterval time interval between epochs expressed in seconds (s).
4285 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4286 * frame, resolved along ECI-frame axes and expressed in meters (m).
4287 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4288 * frame, resolved along ECI-frame axes and expressed in meters (m).
4289 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4290 * frame, resolved along ECI-frame axes and expressed in meters (m).
4291 * @param oldC previous body-to-ECI-frame coordinate transformation.
4292 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4293 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4294 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4295 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4296 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4297 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4298 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4299 * resolved along body-frame axes, averaged over time interval.
4300 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4301 * resolved along body-frame axes, averaged over time interval.
4302 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4303 * resolved along body-frame axes, averaged over time interval.
4304 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4305 * resolved along body-frame axes, averaged over time interval.
4306 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4307 * resolved along body-frame axes, averaged over time interval.
4308 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4309 * resolved along body-frame axes, averaged over time interval.
4310 * @param result instance where new estimated ECI frame containing new body position,
4311 * velocity and coordinate transformation matrix will be stored.
4312 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4313 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4314 * body-to-ECI-frame coordinate transformation matrix are
4315 * invalid.
4316 */
4317 public static void navigateECI(
4318 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4319 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4320 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4321 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4322 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4323 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
4324 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
4325 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
4326 convertAngularSpeedToDouble(angularRateZ), result);
4327 }
4328
4329 /**
4330 * Runs precision ECI-frame inertial navigation equations.
4331 *
4332 * @param timeInterval time interval between epochs.
4333 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4334 * frame, resolved along ECI-frame axes and expressed in meters (m).
4335 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4336 * frame, resolved along ECI-frame axes and expressed in meters (m).
4337 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4338 * frame, resolved along ECI-frame axes and expressed in meters (m).
4339 * @param oldC previous body-to-ECI-frame coordinate transformation.
4340 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4341 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4342 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4343 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4344 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4345 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4346 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4347 * resolved along body-frame axes, averaged over time interval.
4348 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4349 * resolved along body-frame axes, averaged over time interval.
4350 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4351 * resolved along body-frame axes, averaged over time interval.
4352 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4353 * resolved along body-frame axes, averaged over time interval.
4354 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4355 * resolved along body-frame axes, averaged over time interval.
4356 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4357 * resolved along body-frame axes, averaged over time interval.
4358 * @param result instance where new estimated ECI frame containing new body position,
4359 * velocity and coordinate transformation matrix will be stored.
4360 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4361 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4362 * body-to-ECI-frame coordinate transformation matrix are
4363 * invalid.
4364 */
4365 public static void navigateECI(
4366 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4367 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4368 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4369 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4370 final ECIFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4371 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4372 angularRateX, angularRateY, angularRateZ, result);
4373 }
4374
4375 /**
4376 * Runs precision ECI-frame inertial navigation equations.
4377 *
4378 * @param timeInterval time interval between epochs expressed in seconds (s).
4379 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4380 * frame, resolved along ECI-frame axes.
4381 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4382 * frame, resolved along ECI-frame axes.
4383 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4384 * frame, resolved along ECI-frame axes.
4385 * @param oldC previous body-to-ECI-frame coordinate transformation.
4386 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
4387 * resolved along ECI-frame axes.
4388 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
4389 * resolved along ECI-frame axes.
4390 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
4391 * resolved along ECI-frame axes.
4392 * @param kinematics body kinematics containing specific forces and angular rates applied to
4393 * the body.
4394 * @param result instance where new estimated ECI frame containing new body position,
4395 * velocity and coordinate transformation matrix will be stored.
4396 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4397 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4398 * body-to-ECI-frame coordinate transformation matrix are
4399 * invalid.
4400 */
4401 public static void navigateECI(
4402 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4403 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4404 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
4405 InvalidSourceAndDestinationFrameTypeException {
4406 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
4407 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
4408 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
4409 }
4410
4411 /**
4412 * Runs precision ECI-frame inertial navigation equations.
4413 *
4414 * @param timeInterval time interval between epochs.
4415 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4416 * frame, resolved along ECI-frame axes.
4417 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4418 * frame, resolved along ECI-frame axes.
4419 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4420 * frame, resolved along ECI-frame axes.
4421 * @param oldC previous body-to-ECI-frame coordinate transformation.
4422 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
4423 * resolved along ECI-frame axes.
4424 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
4425 * resolved along ECI-frame axes.
4426 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
4427 * resolved along ECI-frame axes.
4428 * @param kinematics body kinematics containing specific forces and angular rates applied to
4429 * the body.
4430 * @param result instance where new estimated ECI frame containing new body position,
4431 * velocity and coordinate transformation matrix will be stored.
4432 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4433 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4434 * body-to-ECI-frame coordinate transformation matrix are
4435 * invalid.
4436 */
4437 public static void navigateECI(
4438 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4439 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4440 final BodyKinematics kinematics, final ECIFrame result) throws InertialNavigatorException,
4441 InvalidSourceAndDestinationFrameTypeException {
4442 navigateECI(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
4443 kinematics, result);
4444 }
4445
4446 /**
4447 * Runs precision ECI-frame inertial navigation equations.
4448 *
4449 * @param timeInterval time interval between epochs expressed in seconds (s).
4450 * @param oldFrame previous ECI frame containing body position, velocity and
4451 * coordinate transformation matrix.
4452 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4453 * resolved along body-frame axes, averaged over time interval and
4454 * expressed in meters per squared second (m/s^2).
4455 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4456 * resolved along body-frame axes, averaged over time interval and
4457 * expressed in meters per squared second (m/s^2).
4458 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4459 * resolved along body-frame axes, averaged over time interval and
4460 * expressed in meters per squared second (m/s^2).
4461 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4462 * resolved along body-frame axes, averaged over time interval and
4463 * expressed in radians per second (rad/s).
4464 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4465 * resolved along body-frame axes, averaged over time interval and
4466 * expressed in radians per second (rad/s).
4467 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4468 * resolved along body-frame axes, averaged over time interval and
4469 * expressed in radians per second (rad/s).
4470 * @param result instance where new estimated ECI frame containing new body position,
4471 * velocity and coordinate transformation matrix will be stored.
4472 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4473 */
4474 public static void navigateECI(
4475 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
4476 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
4477 throws InertialNavigatorException {
4478 try {
4479 navigateECI(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
4480 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
4481 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
4482 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
4483 // never happens
4484 }
4485 }
4486
4487 /**
4488 * Runs precision ECI-frame inertial navigation equations.
4489 *
4490 * @param timeInterval time interval between epochs.
4491 * @param oldFrame previous ECI frame containing body position, velocity and
4492 * coordinate transformation matrix.
4493 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4494 * resolved along body-frame axes, averaged over time interval and
4495 * expressed in meters per squared second (m/s^2).
4496 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4497 * resolved along body-frame axes, averaged over time interval and
4498 * expressed in meters per squared second (m/s^2).
4499 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4500 * resolved along body-frame axes, averaged over time interval and
4501 * expressed in meters per squared second (m/s^2).
4502 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4503 * resolved along body-frame axes, averaged over time interval and
4504 * expressed in radians per second (rad/s).
4505 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4506 * resolved along body-frame axes, averaged over time interval and
4507 * expressed in radians per second (rad/s).
4508 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4509 * resolved along body-frame axes, averaged over time interval and
4510 * expressed in radians per second (rad/s).
4511 * @param result instance where new estimated ECI frame containing new body position,
4512 * velocity and coordinate transformation matrix will be stored.
4513 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4514 */
4515 public static void navigateECI(
4516 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
4517 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
4518 throws InertialNavigatorException {
4519 navigateECI(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
4520 result);
4521 }
4522
4523 /**
4524 * Runs precision ECI-frame inertial navigation equations.
4525 *
4526 * @param timeInterval time interval between epochs expressed in seconds (s).
4527 * @param oldFrame previous ECI frame containing body position, velocity and
4528 * coordinate transformation matrix.
4529 * @param kinematics body kinematics containing specific forces and angular rates applied to
4530 * the body.
4531 * @param result instance where new estimated ECI frame containing new body position,
4532 * velocity and coordinate transformation matrix will be stored.
4533 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4534 */
4535 public static void navigateECI(
4536 final double timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics, final ECIFrame result)
4537 throws InertialNavigatorException {
4538 try {
4539 navigateECI(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
4540 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
4541 kinematics, result);
4542 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
4543 // never happens
4544 }
4545 }
4546
4547 /**
4548 * Runs precision ECI-frame inertial navigation equations.
4549 *
4550 * @param timeInterval time interval between epochs.
4551 * @param oldFrame previous ECI frame containing body position, velocity and
4552 * coordinate transformation matrix.
4553 * @param kinematics body kinematics containing specific forces and angular rates applied to
4554 * the body.
4555 * @param result instance where new estimated ECI frame containing new body position,
4556 * velocity and coordinate transformation matrix will be stored.
4557 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4558 */
4559 public static void navigateECI(
4560 final Time timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics, final ECIFrame result)
4561 throws InertialNavigatorException {
4562 navigateECI(convertTimeToDouble(timeInterval), oldFrame, kinematics, result);
4563 }
4564
4565 /**
4566 * Runs precision ECI-frame inertial navigation equations.
4567 *
4568 * @param timeInterval time interval between epochs expressed in seconds (s).
4569 * @param oldFrame previous ECI frame containing body position, velocity and
4570 * coordinate transformation matrix.
4571 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4572 * resolved along body-frame axes, averaged over time interval.
4573 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4574 * resolved along body-frame axes, averaged over time interval.
4575 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4576 * resolved along body-frame axes, averaged over time interval.
4577 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4578 * resolved along body-frame axes, averaged over time interval and
4579 * expressed in radians per second (rad/s).
4580 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4581 * resolved along body-frame axes, averaged over time interval and
4582 * expressed in radians per second (rad/s).
4583 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4584 * resolved along body-frame axes, averaged over time interval and
4585 * expressed in radians per second (rad/s).
4586 * @param result instance where new estimated ECI frame containing new body position,
4587 * velocity and coordinate transformation matrix will be stored.
4588 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4589 */
4590 public static void navigateECI(
4591 final double timeInterval, final ECIFrame oldFrame,
4592 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4593 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
4594 throws InertialNavigatorException {
4595 try {
4596 navigateECI(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
4597 oldFrame.getCoordinateTransformation(),
4598 oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(), fx, fy, fz,
4599 angularRateX, angularRateY, angularRateZ, result);
4600 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
4601 // never happens
4602 }
4603 }
4604
4605 /**
4606 * Runs precision ECI-frame inertial navigation equations.
4607 *
4608 * @param timeInterval time interval between epochs.
4609 * @param oldFrame previous ECI frame containing body position, velocity and
4610 * coordinate transformation matrix.
4611 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4612 * resolved along body-frame axes, averaged over time interval.
4613 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4614 * resolved along body-frame axes, averaged over time interval.
4615 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4616 * resolved along body-frame axes, averaged over time interval.
4617 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4618 * resolved along body-frame axes, averaged over time interval and
4619 * expressed in radians per second (rad/s).
4620 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4621 * resolved along body-frame axes, averaged over time interval and
4622 * expressed in radians per second (rad/s).
4623 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4624 * resolved along body-frame axes, averaged over time interval and
4625 * expressed in radians per second (rad/s).
4626 * @param result instance where new estimated ECI frame containing new body position,
4627 * velocity and coordinate transformation matrix will be stored.
4628 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4629 */
4630 public static void navigateECI(
4631 final Time timeInterval, final ECIFrame oldFrame,
4632 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4633 final double angularRateX, final double angularRateY, final double angularRateZ, final ECIFrame result)
4634 throws InertialNavigatorException {
4635 navigateECI(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
4636 result);
4637 }
4638
4639 /**
4640 * Runs precision ECI-frame inertial navigation equations.
4641 *
4642 * @param timeInterval time interval between epochs expressed in seconds (s).
4643 * @param oldFrame previous ECI frame containing body position, velocity and
4644 * coordinate transformation matrix.
4645 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4646 * resolved along body-frame axes, averaged over time interval and
4647 * expressed in meters per squared second (m/s^2).
4648 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4649 * resolved along body-frame axes, averaged over time interval and
4650 * expressed in meters per squared second (m/s^2).
4651 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4652 * resolved along body-frame axes, averaged over time interval and
4653 * expressed in meters per squared second (m/s^2).
4654 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4655 * resolved along body-frame axes, averaged over time interval.
4656 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4657 * resolved along body-frame axes, averaged over time interval.
4658 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4659 * resolved along body-frame axes, averaged over time interval.
4660 * @param result instance where new estimated ECI frame containing new body position,
4661 * velocity and coordinate transformation matrix will be stored.
4662 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4663 */
4664 public static void navigateECI(
4665 final double timeInterval, final ECIFrame oldFrame,
4666 final double fx, final double fy, final double fz,
4667 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4668 final ECIFrame result) throws InertialNavigatorException {
4669 try {
4670 navigateECI(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
4671 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
4672 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
4673 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
4674 // never happens
4675 }
4676 }
4677
4678 /**
4679 * Runs precision ECI-frame inertial navigation equations.
4680 *
4681 * @param timeInterval time interval between epochs.
4682 * @param oldFrame previous ECI frame containing body position, velocity and
4683 * coordinate transformation matrix.
4684 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4685 * resolved along body-frame axes, averaged over time interval and
4686 * expressed in meters per squared second (m/s^2).
4687 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4688 * resolved along body-frame axes, averaged over time interval and
4689 * expressed in meters per squared second (m/s^2).
4690 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4691 * resolved along body-frame axes, averaged over time interval and
4692 * expressed in meters per squared second (m/s^2).
4693 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4694 * resolved along body-frame axes, averaged over time interval.
4695 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4696 * resolved along body-frame axes, averaged over time interval.
4697 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4698 * resolved along body-frame axes, averaged over time interval.
4699 * @param result instance where new estimated ECI frame containing new body position,
4700 * velocity and coordinate transformation matrix will be stored.
4701 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4702 */
4703 public static void navigateECI(
4704 final Time timeInterval, final ECIFrame oldFrame,
4705 final double fx, final double fy, final double fz,
4706 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4707 final ECIFrame result) throws InertialNavigatorException {
4708 navigateECI(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
4709 result);
4710 }
4711
4712 /**
4713 * Runs precision ECI-frame inertial navigation equations.
4714 *
4715 * @param timeInterval time interval between epochs expressed in seconds (s).
4716 * @param oldFrame previous ECI frame containing body position, velocity and
4717 * coordinate transformation matrix.
4718 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4719 * resolved along body-frame axes, averaged over time interval.
4720 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4721 * resolved along body-frame axes, averaged over time interval.
4722 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4723 * resolved along body-frame axes, averaged over time interval.
4724 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4725 * resolved along body-frame axes, averaged over time interval.
4726 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4727 * resolved along body-frame axes, averaged over time interval.
4728 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4729 * resolved along body-frame axes, averaged over time interval.
4730 * @param result instance where new estimated ECI frame containing new body position,
4731 * velocity and coordinate transformation matrix will be stored.
4732 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4733 */
4734 public static void navigateECI(
4735 final double timeInterval, final ECIFrame oldFrame,
4736 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4737 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4738 final ECIFrame result) throws InertialNavigatorException {
4739 try {
4740 navigateECI(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
4741 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
4742 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
4743 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
4744 // never happens
4745 }
4746 }
4747
4748 /**
4749 * Runs precision ECI-frame inertial navigation equations.
4750 *
4751 * @param timeInterval time interval between epochs.
4752 * @param oldFrame previous ECI frame containing body position, velocity and
4753 * coordinate transformation matrix.
4754 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4755 * resolved along body-frame axes, averaged over time interval.
4756 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4757 * resolved along body-frame axes, averaged over time interval.
4758 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4759 * resolved along body-frame axes, averaged over time interval.
4760 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4761 * resolved along body-frame axes, averaged over time interval.
4762 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4763 * resolved along body-frame axes, averaged over time interval.
4764 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4765 * resolved along body-frame axes, averaged over time interval.
4766 * @param result instance where new estimated ECI frame containing new body position,
4767 * velocity and coordinate transformation matrix will be stored.
4768 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4769 */
4770 public static void navigateECI(
4771 final Time timeInterval, final ECIFrame oldFrame,
4772 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4773 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
4774 final ECIFrame result) throws InertialNavigatorException {
4775 navigateECI(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
4776 result);
4777 }
4778
4779 /**
4780 * Runs precision ECI-frame inertial navigation equations.
4781 *
4782 * @param timeInterval time interval between epochs expressed in seconds (s).
4783 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4784 * frame, resolved along ECI-frame axes and expressed in meters (m).
4785 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4786 * frame, resolved along ECI-frame axes and expressed in meters (m).
4787 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4788 * frame, resolved along ECI-frame axes and expressed in meters (m).
4789 * @param oldC previous body-to-ECI-frame coordinate transformation.
4790 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4791 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4792 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4793 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4794 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4795 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4796 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4797 * resolved along body-frame axes, averaged over time interval and
4798 * expressed in meters per squared second (m/s^2).
4799 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4800 * resolved along body-frame axes, averaged over time interval and
4801 * expressed in meters per squared second (m/s^2).
4802 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4803 * resolved along body-frame axes, averaged over time interval and
4804 * expressed in meters per squared second (m/s^2).
4805 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4806 * resolved along body-frame axes, averaged over time interval and
4807 * expressed in radians per second (rad/s).
4808 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4809 * resolved along body-frame axes, averaged over time interval and
4810 * expressed in radians per second (rad/s).
4811 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4812 * resolved along body-frame axes, averaged over time interval and
4813 * expressed in radians per second (rad/s).
4814 * @return estimated ECI frame containing new body position, velocity and coordinate
4815 * transformation matrix.
4816 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4817 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4818 * body-to-ECI-frame coordinate transformation matrix are
4819 * invalid.
4820 */
4821 public static ECIFrame navigateECIAndReturnNew(
4822 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4823 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4824 final double fx, final double fy, final double fz,
4825 final double angularRateX, final double angularRateY, final double angularRateZ)
4826 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4827 final var result = new ECIFrame();
4828 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4829 angularRateX, angularRateY, angularRateZ, result);
4830 return result;
4831 }
4832
4833 /**
4834 * Runs precision ECI-frame inertial navigation equations.
4835 *
4836 * @param timeInterval time interval between epochs.
4837 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4838 * frame, resolved along ECI-frame axes and expressed in meters (m).
4839 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4840 * frame, resolved along ECI-frame axes and expressed in meters (m).
4841 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4842 * frame, resolved along ECI-frame axes and expressed in meters (m).
4843 * @param oldC previous body-to-ECI-frame coordinate transformation.
4844 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4845 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4846 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4847 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4848 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4849 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4850 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4851 * resolved along body-frame axes, averaged over time interval and
4852 * expressed in meters per squared second (m/s^2).
4853 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4854 * resolved along body-frame axes, averaged over time interval and
4855 * expressed in meters per squared second (m/s^2).
4856 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4857 * resolved along body-frame axes, averaged over time interval and
4858 * expressed in meters per squared second (m/s^2).
4859 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4860 * resolved along body-frame axes, averaged over time interval and
4861 * expressed in radians per second (rad/s).
4862 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4863 * resolved along body-frame axes, averaged over time interval and
4864 * expressed in radians per second (rad/s).
4865 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4866 * resolved along body-frame axes, averaged over time interval and
4867 * expressed in radians per second (rad/s).
4868 * @return estimated ECI frame containing new body position, velocity and coordinate
4869 * transformation matrix.
4870 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4871 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4872 * body-to-ECI-frame coordinate transformation matrix are
4873 * invalid.
4874 */
4875 public static ECIFrame navigateECIAndReturnNew(
4876 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4877 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4878 final double fx, final double fy, final double fz,
4879 final double angularRateX, final double angularRateY, final double angularRateZ)
4880 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4881 final var result = new ECIFrame();
4882 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4883 angularRateX, angularRateY, angularRateZ, result);
4884 return result;
4885 }
4886
4887 /**
4888 * Runs precision ECI-frame inertial navigation equations.
4889 *
4890 * @param timeInterval time interval between epochs expressed in seconds (s).
4891 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4892 * frame, resolved along ECI-frame axes and expressed in meters (m).
4893 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4894 * frame, resolved along ECI-frame axes and expressed in meters (m).
4895 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4896 * frame, resolved along ECI-frame axes and expressed in meters (m).
4897 * @param oldC previous body-to-ECI-frame coordinate transformation.
4898 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4899 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4900 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4901 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4902 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4903 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4904 * @param kinematics body kinematics containing specific forces and angular rates applied to
4905 * the body.
4906 * @return estimated ECI frame containing new body position, velocity and coordinate
4907 * transformation matrix.
4908 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4909 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4910 * body-to-ECI-frame coordinate transformation matrix are
4911 * invalid.
4912 */
4913 public static ECIFrame navigateECIAndReturnNew(
4914 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4915 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4916 final BodyKinematics kinematics) throws InertialNavigatorException,
4917 InvalidSourceAndDestinationFrameTypeException {
4918 final var result = new ECIFrame();
4919 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
4920 return result;
4921 }
4922
4923 /**
4924 * Runs precision ECI-frame inertial navigation equations.
4925 *
4926 * @param timeInterval time interval between epochs.
4927 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
4928 * frame, resolved along ECI-frame axes and expressed in meters (m).
4929 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
4930 * frame, resolved along ECI-frame axes and expressed in meters (m).
4931 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
4932 * frame, resolved along ECI-frame axes and expressed in meters (m).
4933 * @param oldC previous body-to-ECI-frame coordinate transformation.
4934 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4935 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4936 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4937 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4938 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4939 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4940 * @param kinematics body kinematics containing specific forces and angular rates applied to
4941 * the body.
4942 * @return estimated ECI frame containing new body position, velocity and coordinate
4943 * transformation matrix.
4944 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4945 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4946 * body-to-ECI-frame coordinate transformation matrix are
4947 * invalid.
4948 */
4949 public static ECIFrame navigateECIAndReturnNew(
4950 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4951 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4952 final BodyKinematics kinematics) throws InertialNavigatorException,
4953 InvalidSourceAndDestinationFrameTypeException {
4954 final var result = new ECIFrame();
4955 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
4956 return result;
4957 }
4958
4959 /**
4960 * Runs precision ECI-frame inertial navigation equations.
4961 *
4962 * @param timeInterval time interval between epochs expressed in seconds (s).
4963 * @param oldPosition previous cartesian position of body frame with respect ECI
4964 * frame, resolved along ECI-frame axes and expressed in meters (m).
4965 * @param oldC previous body-to-ECI-frame coordinate transformation.
4966 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
4967 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4968 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
4969 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4970 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
4971 * resolved along ECI-frame axes and expressed in meters per second (m/s).
4972 * @param fx specific force x-coordinate of body frame with respect ECI frame,
4973 * resolved along body-frame axes, averaged over time interval and
4974 * expressed in meters per squared second (m/s^2).
4975 * @param fy specific force y-coordinate of body frame with respect ECI frame,
4976 * resolved along body-frame axes, averaged over time interval and
4977 * expressed in meters per squared second (m/s^2).
4978 * @param fz specific force z-coordinate of body frame with respect ECI frame,
4979 * resolved along body-frame axes, averaged over time interval and
4980 * expressed in meters per squared second (m/s^2).
4981 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
4982 * resolved along body-frame axes, averaged over time interval and
4983 * expressed in radians per second (rad/s).
4984 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
4985 * resolved along body-frame axes, averaged over time interval and
4986 * expressed in radians per second (rad/s).
4987 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
4988 * resolved along body-frame axes, averaged over time interval and
4989 * expressed in radians per second (rad/s).
4990 * @return estimated ECI frame containing new body position, velocity and coordinate
4991 * transformation matrix.
4992 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4993 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4994 * body-to-ECI-frame coordinate transformation matrix are
4995 * invalid.
4996 */
4997 public static ECIFrame navigateECIAndReturnNew(
4998 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4999 final double oldVx, final double oldVy, final double oldVz,
5000 final double fx, final double fy, final double fz,
5001 final double angularRateX, final double angularRateY, final double angularRateZ)
5002 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5003 final var result = new ECIFrame();
5004 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5005 angularRateX, angularRateY, angularRateZ, result);
5006 return result;
5007 }
5008
5009 /**
5010 * Runs precision ECI-frame inertial navigation equations.
5011 *
5012 * @param timeInterval time interval between epochs.
5013 * @param oldPosition previous cartesian position of body frame with respect ECI
5014 * frame, resolved along ECI-frame axes and expressed in meters (m).
5015 * @param oldC previous body-to-ECI-frame coordinate transformation.
5016 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5017 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5018 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5019 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5020 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5021 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5022 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5023 * resolved along body-frame axes, averaged over time interval and
5024 * expressed in meters per squared second (m/s^2).
5025 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5026 * resolved along body-frame axes, averaged over time interval and
5027 * expressed in meters per squared second (m/s^2).
5028 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5029 * resolved along body-frame axes, averaged over time interval and
5030 * expressed in meters per squared second (m/s^2).
5031 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5032 * resolved along body-frame axes, averaged over time interval and
5033 * expressed in radians per second (rad/s).
5034 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5035 * resolved along body-frame axes, averaged over time interval and
5036 * expressed in radians per second (rad/s).
5037 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5038 * resolved along body-frame axes, averaged over time interval and
5039 * expressed in radians per second (rad/s).
5040 * @return estimated ECI frame containing new body position, velocity and coordinate
5041 * transformation matrix.
5042 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5043 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5044 * body-to-ECI-frame coordinate transformation matrix are
5045 * invalid.
5046 */
5047 public static ECIFrame navigateECIAndReturnNew(
5048 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
5049 final double oldVx, final double oldVy, final double oldVz,
5050 final double fx, final double fy, final double fz,
5051 final double angularRateX, final double angularRateY, final double angularRateZ)
5052 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5053 final var result = new ECIFrame();
5054 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5055 angularRateX, angularRateY, angularRateZ, result);
5056 return result;
5057 }
5058
5059 /**
5060 * Runs precision ECI-frame inertial navigation equations.
5061 *
5062 * @param timeInterval time interval between epochs expressed in seconds (s).
5063 * @param oldPosition previous cartesian position of body frame with respect ECI
5064 * frame, resolved along ECI-frame axes and expressed in meters (m).
5065 * @param oldC previous body-to-ECI-frame coordinate transformation.
5066 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5067 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5068 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5069 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5070 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5071 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5072 * @param kinematics body kinematics containing specific forces and angular rates applied to
5073 * the body.
5074 * @return estimated ECI frame containing new body position, velocity and coordinate
5075 * transformation matrix.
5076 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5077 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5078 * body-to-ECI-frame coordinate transformation matrix are
5079 * invalid.
5080 */
5081 public static ECIFrame navigateECIAndReturnNew(
5082 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
5083 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
5084 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5085 final var result = new ECIFrame();
5086 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
5087 return result;
5088 }
5089
5090 /**
5091 * Runs precision ECI-frame inertial navigation equations.
5092 *
5093 * @param timeInterval time interval between epochs.
5094 * @param oldPosition previous cartesian position of body frame with respect ECI
5095 * frame, resolved along ECI-frame axes and expressed in meters (m).
5096 * @param oldC previous body-to-ECI-frame coordinate transformation.
5097 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5098 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5099 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5100 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5101 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5102 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5103 * @param kinematics body kinematics containing specific forces and angular rates applied to
5104 * the body.
5105 * @return estimated ECI frame containing new body position, velocity and coordinate
5106 * transformation matrix.
5107 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5108 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5109 * body-to-ECI-frame coordinate transformation matrix are
5110 * invalid.
5111 */
5112 public static ECIFrame navigateECIAndReturnNew(
5113 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
5114 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
5115 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5116 final var result = new ECIFrame();
5117 navigateECI(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
5118 return result;
5119 }
5120
5121 /**
5122 * Runs precision ECI-frame inertial navigation equations.
5123 *
5124 * @param timeInterval time interval between epochs expressed in seconds (s).
5125 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5126 * frame, resolved along ECI-frame axes.
5127 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5128 * frame, resolved along ECI-frame axes.
5129 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5130 * frame, resolved along ECI-frame axes.
5131 * @param oldC previous body-to-ECI-frame coordinate transformation.
5132 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5133 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5134 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5135 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5136 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5137 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5138 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5139 * resolved along body-frame axes, averaged over time interval and
5140 * expressed in meters per squared second (m/s^2).
5141 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5142 * resolved along body-frame axes, averaged over time interval and
5143 * expressed in meters per squared second (m/s^2).
5144 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5145 * resolved along body-frame axes, averaged over time interval and
5146 * expressed in meters per squared second (m/s^2).
5147 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5148 * resolved along body-frame axes, averaged over time interval and
5149 * expressed in radians per second (rad/s).
5150 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5151 * resolved along body-frame axes, averaged over time interval and
5152 * expressed in radians per second (rad/s).
5153 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5154 * resolved along body-frame axes, averaged over time interval and
5155 * expressed in radians per second (rad/s).
5156 * @return estimated ECI frame containing new body position, velocity and coordinate
5157 * transformation matrix.
5158 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5159 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5160 * body-to-ECI-frame coordinate transformation matrix are
5161 * invalid.
5162 */
5163 public static ECIFrame navigateECIAndReturnNew(
5164 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5165 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5166 final double fx, final double fy, final double fz,
5167 final double angularRateX, final double angularRateY, final double angularRateZ)
5168 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5169 final var result = new ECIFrame();
5170 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5171 angularRateX, angularRateY, angularRateZ, result);
5172 return result;
5173 }
5174
5175 /**
5176 * Runs precision ECI-frame inertial navigation equations.
5177 *
5178 * @param timeInterval time interval between epochs.
5179 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5180 * frame, resolved along ECI-frame axes.
5181 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5182 * frame, resolved along ECI-frame axes.
5183 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5184 * frame, resolved along ECI-frame axes.
5185 * @param oldC previous body-to-ECI-frame coordinate transformation.
5186 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5187 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5188 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5189 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5190 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5191 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5192 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5193 * resolved along body-frame axes, averaged over time interval and
5194 * expressed in meters per squared second (m/s^2).
5195 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5196 * resolved along body-frame axes, averaged over time interval and
5197 * expressed in meters per squared second (m/s^2).
5198 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5199 * resolved along body-frame axes, averaged over time interval and
5200 * expressed in meters per squared second (m/s^2).
5201 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5202 * resolved along body-frame axes, averaged over time interval and
5203 * expressed in radians per second (rad/s).
5204 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5205 * resolved along body-frame axes, averaged over time interval and
5206 * expressed in radians per second (rad/s).
5207 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5208 * resolved along body-frame axes, averaged over time interval and
5209 * expressed in radians per second (rad/s).
5210 * @return estimated ECI frame containing new body position, velocity and coordinate
5211 * transformation matrix.
5212 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5213 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5214 * body-to-ECI-frame coordinate transformation matrix are
5215 * invalid.
5216 */
5217 public static ECIFrame navigateECIAndReturnNew(
5218 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5219 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5220 final double fx, final double fy, final double fz,
5221 final double angularRateX, final double angularRateY, final double angularRateZ)
5222 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5223 final var result = new ECIFrame();
5224 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5225 angularRateX, angularRateY, angularRateZ, result);
5226 return result;
5227 }
5228
5229 /**
5230 * Runs precision ECI-frame inertial navigation equations.
5231 *
5232 * @param timeInterval time interval between epochs expressed in seconds (s).
5233 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5234 * frame, resolved along ECI-frame axes.
5235 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5236 * frame, resolved along ECI-frame axes.
5237 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5238 * frame, resolved along ECI-frame axes.
5239 * @param oldC previous body-to-ECI-frame coordinate transformation.
5240 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5241 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5242 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5243 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5244 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5245 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5246 * @param kinematics body kinematics containing specific forces and angular rates applied to
5247 * the body.
5248 * @return estimated ECI frame containing new body position, velocity and coordinate
5249 * transformation matrix.
5250 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5251 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5252 * body-to-ECI-frame coordinate transformation matrix are
5253 * invalid.
5254 */
5255 public static ECIFrame navigateECIAndReturnNew(
5256 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5257 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5258 final BodyKinematics kinematics) throws InertialNavigatorException,
5259 InvalidSourceAndDestinationFrameTypeException {
5260 final var result = new ECIFrame();
5261 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
5262 return result;
5263 }
5264
5265 /**
5266 * Runs precision ECI-frame inertial navigation equations.
5267 *
5268 * @param timeInterval time interval between epochs.
5269 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5270 * frame, resolved along ECI-frame axes.
5271 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5272 * frame, resolved along ECI-frame axes.
5273 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5274 * frame, resolved along ECI-frame axes.
5275 * @param oldC previous body-to-ECI-frame coordinate transformation.
5276 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5277 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5278 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5279 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5280 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5281 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5282 * @param kinematics body kinematics containing specific forces and angular rates applied to
5283 * the body.
5284 * @return estimated ECI frame containing new body position, velocity and coordinate
5285 * transformation matrix.
5286 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5287 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5288 * body-to-ECI-frame coordinate transformation matrix are
5289 * invalid.
5290 */
5291 public static ECIFrame navigateECIAndReturnNew(
5292 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5293 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5294 final BodyKinematics kinematics) throws InertialNavigatorException,
5295 InvalidSourceAndDestinationFrameTypeException {
5296 final var result = new ECIFrame();
5297 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
5298 return result;
5299 }
5300
5301 /**
5302 * Runs precision ECI-frame inertial navigation equations.
5303 *
5304 * @param timeInterval time interval between epochs expressed in seconds (s).
5305 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5306 * frame, resolved along ECI-frame axes and expressed in meters (m).
5307 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5308 * frame, resolved along ECI-frame axes and expressed in meters (m).
5309 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5310 * frame, resolved along ECI-frame axes and expressed in meters (m).
5311 * @param oldC previous body-to-ECI-frame coordinate transformation.
5312 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5313 * resolved along ECI-frame axes.
5314 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5315 * resolved along ECI-frame axes.
5316 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5317 * resolved along ECI-frame axes.
5318 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5319 * resolved along body-frame axes, averaged over time interval and
5320 * expressed in meters per squared second (m/s^2).
5321 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5322 * resolved along body-frame axes, averaged over time interval and
5323 * expressed in meters per squared second (m/s^2).
5324 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5325 * resolved along body-frame axes, averaged over time interval and
5326 * expressed in meters per squared second (m/s^2).
5327 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5328 * resolved along body-frame axes, averaged over time interval and
5329 * expressed in radians per second (rad/s).
5330 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5331 * resolved along body-frame axes, averaged over time interval and
5332 * expressed in radians per second (rad/s).
5333 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5334 * resolved along body-frame axes, averaged over time interval and
5335 * expressed in radians per second (rad/s).
5336 * @return estimated ECI frame containing new body position, velocity and coordinate
5337 * transformation matrix.
5338 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5339 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5340 * body-to-ECI-frame coordinate transformation matrix are
5341 * invalid.
5342 */
5343 public static ECIFrame navigateECIAndReturnNew(
5344 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5345 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5346 final double fx, final double fy, final double fz,
5347 final double angularRateX, final double angularRateY, final double angularRateZ)
5348 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5349 final var result = new ECIFrame();
5350 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5351 angularRateX, angularRateY, angularRateZ, result);
5352 return result;
5353 }
5354
5355 /**
5356 * Runs precision ECI-frame inertial navigation equations.
5357 *
5358 * @param timeInterval time interval between epochs.
5359 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5360 * frame, resolved along ECI-frame axes and expressed in meters (m).
5361 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5362 * frame, resolved along ECI-frame axes and expressed in meters (m).
5363 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5364 * frame, resolved along ECI-frame axes and expressed in meters (m).
5365 * @param oldC previous body-to-ECI-frame coordinate transformation.
5366 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5367 * resolved along ECI-frame axes.
5368 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5369 * resolved along ECI-frame axes.
5370 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5371 * resolved along ECI-frame axes.
5372 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5373 * resolved along body-frame axes, averaged over time interval and
5374 * expressed in meters per squared second (m/s^2).
5375 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5376 * resolved along body-frame axes, averaged over time interval and
5377 * expressed in meters per squared second (m/s^2).
5378 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5379 * resolved along body-frame axes, averaged over time interval and
5380 * expressed in meters per squared second (m/s^2).
5381 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5382 * resolved along body-frame axes, averaged over time interval and
5383 * expressed in radians per second (rad/s).
5384 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5385 * resolved along body-frame axes, averaged over time interval and
5386 * expressed in radians per second (rad/s).
5387 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5388 * resolved along body-frame axes, averaged over time interval and
5389 * expressed in radians per second (rad/s).
5390 * @return estimated ECI frame containing new body position, velocity and coordinate
5391 * transformation matrix.
5392 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5393 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5394 * body-to-ECI-frame coordinate transformation matrix are
5395 * invalid.
5396 */
5397 public static ECIFrame navigateECIAndReturnNew(
5398 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5399 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5400 final double fx, final double fy, final double fz,
5401 final double angularRateX, final double angularRateY, final double angularRateZ)
5402 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5403 final var result = new ECIFrame();
5404 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5405 angularRateX, angularRateY, angularRateZ, result);
5406 return result;
5407 }
5408
5409 /**
5410 * Runs precision ECI-frame inertial navigation equations.
5411 *
5412 * @param timeInterval time interval between epochs expressed in seconds (s).
5413 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5414 * frame, resolved along ECI-frame axes and expressed in meters (m).
5415 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5416 * frame, resolved along ECI-frame axes and expressed in meters (m).
5417 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5418 * frame, resolved along ECI-frame axes and expressed in meters (m).
5419 * @param oldC previous body-to-ECI-frame coordinate transformation.
5420 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5421 * resolved along ECI-frame axes.
5422 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5423 * resolved along ECI-frame axes.
5424 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5425 * resolved along ECI-frame axes.
5426 * @param kinematics body kinematics containing specific forces and angular rates applied to
5427 * the body.
5428 * @return estimated ECI frame containing new body position, velocity and coordinate
5429 * transformation matrix.
5430 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5431 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5432 * body-to-ECI-frame coordinate transformation matrix are
5433 * invalid.
5434 */
5435 public static ECIFrame navigateECIAndReturnNew(
5436 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5437 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5438 final BodyKinematics kinematics) throws InertialNavigatorException,
5439 InvalidSourceAndDestinationFrameTypeException {
5440 final var result = new ECIFrame();
5441 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
5442 return result;
5443 }
5444
5445 /**
5446 * Runs precision ECI-frame inertial navigation equations.
5447 *
5448 * @param timeInterval time interval between epochs expressed in seconds (s).
5449 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5450 * frame, resolved along ECI-frame axes and expressed in meters (m).
5451 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5452 * frame, resolved along ECI-frame axes and expressed in meters (m).
5453 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5454 * frame, resolved along ECI-frame axes and expressed in meters (m).
5455 * @param oldC previous body-to-ECI-frame coordinate transformation.
5456 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5457 * resolved along ECI-frame axes.
5458 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5459 * resolved along ECI-frame axes.
5460 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5461 * resolved along ECI-frame axes.
5462 * @param kinematics body kinematics containing specific forces and angular rates applied to
5463 * the body.
5464 * @return estimated ECI frame containing new body position, velocity and coordinate
5465 * transformation matrix.
5466 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5467 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5468 * body-to-ECI-frame coordinate transformation matrix are
5469 * invalid.
5470 */
5471 public static ECIFrame navigateECIAndReturnNew(
5472 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5473 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5474 final BodyKinematics kinematics) throws InertialNavigatorException,
5475 InvalidSourceAndDestinationFrameTypeException {
5476 final var result = new ECIFrame();
5477 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
5478 return result;
5479 }
5480
5481 /**
5482 * Runs precision ECI-frame inertial navigation equations.
5483 *
5484 * @param timeInterval time interval between epochs expressed in seconds (s).
5485 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5486 * frame, resolved along ECI-frame axes and expressed in meters (m).
5487 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5488 * frame, resolved along ECI-frame axes and expressed in meters (m).
5489 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5490 * frame, resolved along ECI-frame axes and expressed in meters (m).
5491 * @param oldC previous body-to-ECI-frame coordinate transformation.
5492 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5493 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5494 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5495 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5496 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5497 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5498 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5499 * resolved along body-frame axes, averaged over time interval.
5500 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5501 * resolved along body-frame axes, averaged over time interval.
5502 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5503 * resolved along body-frame axes, averaged over time interval.
5504 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5505 * resolved along body-frame axes, averaged over time interval and
5506 * expressed in radians per second (rad/s).
5507 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5508 * resolved along body-frame axes, averaged over time interval and
5509 * expressed in radians per second (rad/s).
5510 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5511 * resolved along body-frame axes, averaged over time interval and
5512 * expressed in radians per second (rad/s).
5513 * @return estimated ECI frame containing new body position, velocity and coordinate
5514 * transformation matrix.
5515 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5516 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5517 * body-to-ECI-frame coordinate transformation matrix are
5518 * invalid.
5519 */
5520 public static ECIFrame navigateECIAndReturnNew(
5521 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5522 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5523 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5524 final double angularRateX, final double angularRateY, final double angularRateZ)
5525 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5526 final var result = new ECIFrame();
5527 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5528 angularRateX, angularRateY, angularRateZ, result);
5529 return result;
5530 }
5531
5532 /**
5533 * Runs precision ECI-frame inertial navigation equations.
5534 *
5535 * @param timeInterval time interval between epochs.
5536 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5537 * frame, resolved along ECI-frame axes and expressed in meters (m).
5538 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5539 * frame, resolved along ECI-frame axes and expressed in meters (m).
5540 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5541 * frame, resolved along ECI-frame axes and expressed in meters (m).
5542 * @param oldC previous body-to-ECI-frame coordinate transformation.
5543 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5544 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5545 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5546 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5547 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5548 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5549 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5550 * resolved along body-frame axes, averaged over time interval.
5551 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5552 * resolved along body-frame axes, averaged over time interval.
5553 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5554 * resolved along body-frame axes, averaged over time interval.
5555 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5556 * resolved along body-frame axes, averaged over time interval and
5557 * expressed in radians per second (rad/s).
5558 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5559 * resolved along body-frame axes, averaged over time interval and
5560 * expressed in radians per second (rad/s).
5561 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5562 * resolved along body-frame axes, averaged over time interval and
5563 * expressed in radians per second (rad/s).
5564 * @return estimated ECI frame containing new body position, velocity and coordinate
5565 * transformation matrix.
5566 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5567 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5568 * body-to-ECI-frame coordinate transformation matrix are
5569 * invalid.
5570 */
5571 public static ECIFrame navigateECIAndReturnNew(
5572 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5573 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5574 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5575 final double angularRateX, final double angularRateY, final double angularRateZ)
5576 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5577 final var result = new ECIFrame();
5578 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5579 angularRateX, angularRateY, angularRateZ, result);
5580 return result;
5581 }
5582
5583 /**
5584 * Runs precision ECI-frame inertial navigation equations.
5585 *
5586 * @param timeInterval time interval between epochs expressed in seconds (s).
5587 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5588 * frame, resolved along ECI-frame axes and expressed in meters (m).
5589 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5590 * frame, resolved along ECI-frame axes and expressed in meters (m).
5591 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5592 * frame, resolved along ECI-frame axes and expressed in meters (m).
5593 * @param oldC previous body-to-ECI-frame coordinate transformation.
5594 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5595 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5596 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5597 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5598 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5599 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5600 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5601 * resolved along body-frame axes, averaged over time interval and
5602 * expressed in meters per squared second (m/s^2).
5603 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5604 * resolved along body-frame axes, averaged over time interval and
5605 * expressed in meters per squared second (m/s^2).
5606 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5607 * resolved along body-frame axes, averaged over time interval and
5608 * expressed in meters per squared second (m/s^2).
5609 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5610 * resolved along body-frame axes, averaged over time interval.
5611 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5612 * resolved along body-frame axes, averaged over time interval.
5613 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5614 * resolved along body-frame axes, averaged over time interval.
5615 * @return estimated ECI frame containing new body position, velocity and coordinate
5616 * transformation matrix.
5617 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5618 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5619 * body-to-ECI-frame coordinate transformation matrix are
5620 * invalid.
5621 */
5622 public static ECIFrame navigateECIAndReturnNew(
5623 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5624 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5625 final double fx, final double fy, final double fz,
5626 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5627 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5628 final var result = new ECIFrame();
5629 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5630 angularRateX, angularRateY, angularRateZ, result);
5631 return result;
5632 }
5633
5634 /**
5635 * Runs precision ECI-frame inertial navigation equations.
5636 *
5637 * @param timeInterval time interval between epochs.
5638 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5639 * frame, resolved along ECI-frame axes and expressed in meters (m).
5640 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5641 * frame, resolved along ECI-frame axes and expressed in meters (m).
5642 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5643 * frame, resolved along ECI-frame axes and expressed in meters (m).
5644 * @param oldC previous body-to-ECI-frame coordinate transformation.
5645 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5646 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5647 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5648 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5649 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5650 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5651 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5652 * resolved along body-frame axes, averaged over time interval and
5653 * expressed in meters per squared second (m/s^2).
5654 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5655 * resolved along body-frame axes, averaged over time interval and
5656 * expressed in meters per squared second (m/s^2).
5657 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5658 * resolved along body-frame axes, averaged over time interval and
5659 * expressed in meters per squared second (m/s^2).
5660 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5661 * resolved along body-frame axes, averaged over time interval.
5662 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5663 * resolved along body-frame axes, averaged over time interval.
5664 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5665 * resolved along body-frame axes, averaged over time interval.
5666 * @return estimated ECI frame containing new body position, velocity and coordinate
5667 * transformation matrix.
5668 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5669 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5670 * body-to-ECI-frame coordinate transformation matrix are
5671 * invalid.
5672 */
5673 public static ECIFrame navigateECIAndReturnNew(
5674 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5675 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5676 final double fx, final double fy, final double fz,
5677 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5678 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5679 final var result = new ECIFrame();
5680 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5681 angularRateX, angularRateY, angularRateZ, result);
5682 return result;
5683 }
5684
5685 /**
5686 * Runs precision ECI-frame inertial navigation equations.
5687 *
5688 * @param timeInterval time interval between epochs expressed in seconds (s).
5689 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5690 * frame, resolved along ECI-frame axes.
5691 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5692 * frame, resolved along ECI-frame axes.
5693 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5694 * frame, resolved along ECI-frame axes.
5695 * @param oldC previous body-to-ECI-frame coordinate transformation.
5696 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5697 * resolved along ECI-frame axes.
5698 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5699 * resolved along ECI-frame axes.
5700 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5701 * resolved along ECI-frame axes.
5702 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5703 * resolved along body-frame axes, averaged over time interval and
5704 * expressed in meters per squared second (m/s^2).
5705 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5706 * resolved along body-frame axes, averaged over time interval and
5707 * expressed in meters per squared second (m/s^2).
5708 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5709 * resolved along body-frame axes, averaged over time interval and
5710 * expressed in meters per squared second (m/s^2).
5711 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5712 * resolved along body-frame axes, averaged over time interval and
5713 * expressed in radians per second (rad/s).
5714 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5715 * resolved along body-frame axes, averaged over time interval and
5716 * expressed in radians per second (rad/s).
5717 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5718 * resolved along body-frame axes, averaged over time interval and
5719 * expressed in radians per second (rad/s).
5720 * @return estimated ECI frame containing new body position, velocity and coordinate
5721 * transformation matrix.
5722 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5723 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5724 * body-to-ECI-frame coordinate transformation matrix are
5725 * invalid.
5726 */
5727 public static ECIFrame navigateECIAndReturnNew(
5728 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5729 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5730 final double fx, final double fy, final double fz,
5731 final double angularRateX, final double angularRateY, final double angularRateZ)
5732 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5733 final var result = new ECIFrame();
5734 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5735 angularRateX, angularRateY, angularRateZ, result);
5736 return result;
5737 }
5738
5739 /**
5740 * Runs precision ECI-frame inertial navigation equations.
5741 *
5742 * @param timeInterval time interval between epochs.
5743 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5744 * frame, resolved along ECI-frame axes.
5745 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5746 * frame, resolved along ECI-frame axes.
5747 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5748 * frame, resolved along ECI-frame axes.
5749 * @param oldC previous body-to-ECI-frame coordinate transformation.
5750 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5751 * resolved along ECI-frame axes.
5752 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5753 * resolved along ECI-frame axes.
5754 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5755 * resolved along ECI-frame axes.
5756 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5757 * resolved along body-frame axes, averaged over time interval and
5758 * expressed in meters per squared second (m/s^2).
5759 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5760 * resolved along body-frame axes, averaged over time interval and
5761 * expressed in meters per squared second (m/s^2).
5762 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5763 * resolved along body-frame axes, averaged over time interval and
5764 * expressed in meters per squared second (m/s^2).
5765 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5766 * resolved along body-frame axes, averaged over time interval and
5767 * expressed in radians per second (rad/s).
5768 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5769 * resolved along body-frame axes, averaged over time interval and
5770 * expressed in radians per second (rad/s).
5771 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5772 * resolved along body-frame axes, averaged over time interval and
5773 * expressed in radians per second (rad/s).
5774 * @return estimated ECI frame containing new body position, velocity and coordinate
5775 * transformation matrix.
5776 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5777 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5778 * body-to-ECI-frame coordinate transformation matrix are
5779 * invalid.
5780 */
5781 public static ECIFrame navigateECIAndReturnNew(
5782 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5783 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5784 final double fx, final double fy, final double fz,
5785 final double angularRateX, final double angularRateY, final double angularRateZ)
5786 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5787 final var result = new ECIFrame();
5788 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5789 angularRateX, angularRateY, angularRateZ, result);
5790 return result;
5791 }
5792
5793 /**
5794 * Runs precision ECI-frame inertial navigation equations.
5795 *
5796 * @param timeInterval time interval between epochs expressed in seconds (s).
5797 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5798 * frame, resolved along ECI-frame axes.
5799 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5800 * frame, resolved along ECI-frame axes.
5801 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5802 * frame, resolved along ECI-frame axes.
5803 * @param oldC previous body-to-ECI-frame coordinate transformation.
5804 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5805 * resolved along ECI-frame axes.
5806 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5807 * resolved along ECI-frame axes.
5808 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5809 * resolved along ECI-frame axes.
5810 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5811 * resolved along body-frame axes, averaged over time interval.
5812 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5813 * resolved along body-frame axes, averaged over time interval.
5814 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5815 * resolved along body-frame axes, averaged over time interval.
5816 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5817 * resolved along body-frame axes, averaged over time interval.
5818 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5819 * resolved along body-frame axes, averaged over time interval.
5820 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5821 * resolved along body-frame axes, averaged over time interval.
5822 * @return estimated ECI frame containing new body position, velocity and coordinate
5823 * transformation matrix.
5824 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5825 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5826 * body-to-ECI-frame coordinate transformation matrix are
5827 * invalid.
5828 */
5829 public static ECIFrame navigateECIAndReturnNew(
5830 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5831 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5832 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5833 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5834 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5835 final var result = new ECIFrame();
5836 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5837 angularRateX, angularRateY, angularRateZ, result);
5838 return result;
5839 }
5840
5841 /**
5842 * Runs precision ECI-frame inertial navigation equations.
5843 *
5844 * @param timeInterval time interval between epochs.
5845 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5846 * frame, resolved along ECI-frame axes.
5847 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5848 * frame, resolved along ECI-frame axes.
5849 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5850 * frame, resolved along ECI-frame axes.
5851 * @param oldC previous body-to-ECI-frame coordinate transformation.
5852 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5853 * resolved along ECI-frame axes.
5854 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5855 * resolved along ECI-frame axes.
5856 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
5857 * resolved along ECI-frame axes.
5858 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5859 * resolved along body-frame axes, averaged over time interval.
5860 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5861 * resolved along body-frame axes, averaged over time interval.
5862 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5863 * resolved along body-frame axes, averaged over time interval.
5864 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5865 * resolved along body-frame axes, averaged over time interval.
5866 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5867 * resolved along body-frame axes, averaged over time interval.
5868 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5869 * resolved along body-frame axes, averaged over time interval.
5870 * @return estimated ECI frame containing new body position, velocity and coordinate
5871 * transformation matrix.
5872 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5873 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5874 * body-to-ECI-frame coordinate transformation matrix are
5875 * invalid.
5876 */
5877 public static ECIFrame navigateECIAndReturnNew(
5878 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5879 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5880 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5881 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5882 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5883 final var result = new ECIFrame();
5884 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5885 angularRateX, angularRateY, angularRateZ, result);
5886 return result;
5887 }
5888
5889 /**
5890 * Runs precision ECI-frame inertial navigation equations.
5891 *
5892 * @param timeInterval time interval between epochs expressed in seconds (s).
5893 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5894 * frame, resolved along ECI-frame axes and expressed in meters (m).
5895 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5896 * frame, resolved along ECI-frame axes and expressed in meters (m).
5897 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5898 * frame, resolved along ECI-frame axes and expressed in meters (m).
5899 * @param oldC previous body-to-ECI-frame coordinate transformation.
5900 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5901 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5902 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5903 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5904 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5905 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5906 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5907 * resolved along body-frame axes, averaged over time interval.
5908 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5909 * resolved along body-frame axes, averaged over time interval.
5910 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5911 * resolved along body-frame axes, averaged over time interval.
5912 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5913 * resolved along body-frame axes, averaged over time interval.
5914 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5915 * resolved along body-frame axes, averaged over time interval.
5916 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5917 * resolved along body-frame axes, averaged over time interval.
5918 * @return estimated ECI frame containing new body position, velocity and coordinate
5919 * transformation matrix.
5920 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5921 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5922 * body-to-ECI-frame coordinate transformation matrix are
5923 * invalid.
5924 */
5925 public static ECIFrame navigateECIAndReturnNew(
5926 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5927 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5928 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5929 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5930 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5931 final var result = new ECIFrame();
5932 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5933 angularRateX, angularRateY, angularRateZ, result);
5934 return result;
5935 }
5936
5937 /**
5938 * Runs precision ECI-frame inertial navigation equations.
5939 *
5940 * @param timeInterval time interval between epochs.
5941 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5942 * frame, resolved along ECI-frame axes and expressed in meters (m).
5943 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5944 * frame, resolved along ECI-frame axes and expressed in meters (m).
5945 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5946 * frame, resolved along ECI-frame axes and expressed in meters (m).
5947 * @param oldC previous body-to-ECI-frame coordinate transformation.
5948 * @param oldVx previous velocity x-coordinate of body frame with respect ECI frame,
5949 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5950 * @param oldVy previous velocity y-coordinate of body frame with respect ECI frame,
5951 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5952 * @param oldVz previous velocity z-coordinate of body frame with respect ECI frame,
5953 * resolved along ECI-frame axes and expressed in meters per second (m/s).
5954 * @param fx specific force x-coordinate of body frame with respect ECI frame,
5955 * resolved along body-frame axes, averaged over time interval.
5956 * @param fy specific force y-coordinate of body frame with respect ECI frame,
5957 * resolved along body-frame axes, averaged over time interval.
5958 * @param fz specific force z-coordinate of body frame with respect ECI frame,
5959 * resolved along body-frame axes, averaged over time interval.
5960 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
5961 * resolved along body-frame axes, averaged over time interval.
5962 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
5963 * resolved along body-frame axes, averaged over time interval.
5964 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
5965 * resolved along body-frame axes, averaged over time interval.
5966 * @return estimated ECI frame containing new body position, velocity and coordinate
5967 * transformation matrix.
5968 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5969 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5970 * body-to-ECI-frame coordinate transformation matrix are
5971 * invalid.
5972 */
5973 public static ECIFrame navigateECIAndReturnNew(
5974 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5975 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5976 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5977 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5978 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5979 final var result = new ECIFrame();
5980 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5981 angularRateX, angularRateY, angularRateZ, result);
5982 return result;
5983 }
5984
5985 /**
5986 * Runs precision ECI-frame inertial navigation equations.
5987 *
5988 * @param timeInterval time interval between epochs expressed in seconds (s).
5989 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
5990 * frame, resolved along ECI-frame axes.
5991 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
5992 * frame, resolved along ECI-frame axes.
5993 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
5994 * frame, resolved along ECI-frame axes.
5995 * @param oldC previous body-to-ECI-frame coordinate transformation.
5996 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
5997 * resolved along ECI-frame axes.
5998 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
5999 * resolved along ECI-frame axes.
6000 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
6001 * resolved along ECI-frame axes.
6002 * @param kinematics body kinematics containing specific forces and angular rates applied to
6003 * the body.
6004 * @return estimated ECI frame containing new body position, velocity and coordinate
6005 * transformation matrix.
6006 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6007 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6008 * body-to-ECI-frame coordinate transformation matrix are
6009 * invalid.
6010 */
6011 public static ECIFrame navigateECIAndReturnNew(
6012 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
6013 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
6014 final BodyKinematics kinematics) throws InertialNavigatorException,
6015 InvalidSourceAndDestinationFrameTypeException {
6016 final var result = new ECIFrame();
6017 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
6018 return result;
6019 }
6020
6021 /**
6022 * Runs precision ECI-frame inertial navigation equations.
6023 *
6024 * @param timeInterval time interval between epochs.
6025 * @param oldX previous cartesian x-coordinate position of body frame with respect ECI
6026 * frame, resolved along ECI-frame axes.
6027 * @param oldY previous cartesian y-coordinate position of body frame with respect ECI
6028 * frame, resolved along ECI-frame axes.
6029 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECI
6030 * frame, resolved along ECI-frame axes.
6031 * @param oldC previous body-to-ECI-frame coordinate transformation.
6032 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECI frame,
6033 * resolved along ECI-frame axes.
6034 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECI frame,
6035 * resolved along ECI-frame axes.
6036 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECI frame,
6037 * resolved along ECI-frame axes.
6038 * @param kinematics body kinematics containing specific forces and angular rates applied to
6039 * the body.
6040 * @return estimated ECI frame containing new body position, velocity and coordinate
6041 * transformation matrix.
6042 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6043 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6044 * body-to-ECI-frame coordinate transformation matrix are
6045 * invalid.
6046 */
6047 public static ECIFrame navigateECIAndReturnNew(
6048 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
6049 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
6050 final BodyKinematics kinematics) throws InertialNavigatorException,
6051 InvalidSourceAndDestinationFrameTypeException {
6052 final var result = new ECIFrame();
6053 navigateECI(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
6054 return result;
6055 }
6056
6057 /**
6058 * Runs precision ECI-frame inertial navigation equations.
6059 *
6060 * @param timeInterval time interval between epochs expressed in seconds (s).
6061 * @param oldFrame previous ECI frame containing body position, velocity and
6062 * coordinate transformation matrix.
6063 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6064 * resolved along body-frame axes, averaged over time interval and
6065 * expressed in meters per squared second (m/s^2).
6066 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6067 * resolved along body-frame axes, averaged over time interval and
6068 * expressed in meters per squared second (m/s^2).
6069 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6070 * resolved along body-frame axes, averaged over time interval and
6071 * expressed in meters per squared second (m/s^2).
6072 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6073 * resolved along body-frame axes, averaged over time interval and
6074 * expressed in radians per second (rad/s).
6075 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6076 * resolved along body-frame axes, averaged over time interval and
6077 * expressed in radians per second (rad/s).
6078 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6079 * resolved along body-frame axes, averaged over time interval and
6080 * expressed in radians per second (rad/s).
6081 * @return estimated ECI frame containing new body position, velocity and coordinate
6082 * transformation matrix.
6083 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6084 */
6085 public static ECIFrame navigateECIAndReturnNew(
6086 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
6087 final double angularRateX, final double angularRateY, final double angularRateZ)
6088 throws InertialNavigatorException {
6089 final var result = new ECIFrame();
6090 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6091 return result;
6092 }
6093
6094 /**
6095 * Runs precision ECI-frame inertial navigation equations.
6096 *
6097 * @param timeInterval time interval between epochs.
6098 * @param oldFrame previous ECI frame containing body position, velocity and
6099 * coordinate transformation matrix.
6100 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6101 * resolved along body-frame axes, averaged over time interval and
6102 * expressed in meters per squared second (m/s^2).
6103 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6104 * resolved along body-frame axes, averaged over time interval and
6105 * expressed in meters per squared second (m/s^2).
6106 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6107 * resolved along body-frame axes, averaged over time interval and
6108 * expressed in meters per squared second (m/s^2).
6109 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6110 * resolved along body-frame axes, averaged over time interval and
6111 * expressed in radians per second (rad/s).
6112 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6113 * resolved along body-frame axes, averaged over time interval and
6114 * expressed in radians per second (rad/s).
6115 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6116 * resolved along body-frame axes, averaged over time interval and
6117 * expressed in radians per second (rad/s).
6118 * @return estimated ECI frame containing new body position, velocity and coordinate
6119 * transformation matrix.
6120 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6121 */
6122 public static ECIFrame navigateECIAndReturnNew(
6123 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
6124 final double angularRateX, final double angularRateY, final double angularRateZ)
6125 throws InertialNavigatorException {
6126 final var result = new ECIFrame();
6127 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6128 return result;
6129 }
6130
6131 /**
6132 * Runs precision ECI-frame inertial navigation equations.
6133 *
6134 * @param timeInterval time interval between epochs expressed in seconds (s).
6135 * @param oldFrame previous ECI frame containing body position, velocity and
6136 * coordinate transformation matrix.
6137 * @param kinematics body kinematics containing specific forces and angular rates applied to
6138 * the body.
6139 * @return estimated ECI frame containing new body position, velocity and coordinate
6140 * transformation matrix.
6141 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6142 */
6143 public static ECIFrame navigateECIAndReturnNew(
6144 final double timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics)
6145 throws InertialNavigatorException {
6146 final var result = new ECIFrame();
6147 navigateECI(timeInterval, oldFrame, kinematics, result);
6148 return result;
6149 }
6150
6151 /**
6152 * Runs precision ECI-frame inertial navigation equations.
6153 *
6154 * @param timeInterval time interval between epochs.
6155 * @param oldFrame previous ECI frame containing body position, velocity and
6156 * coordinate transformation matrix.
6157 * @param kinematics body kinematics containing specific forces and angular rates applied to
6158 * the body.
6159 * @return estimated ECI frame containing new body position, velocity and coordinate
6160 * transformation matrix.
6161 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6162 */
6163 public static ECIFrame navigateECIAndReturnNew(
6164 final Time timeInterval, final ECIFrame oldFrame, final BodyKinematics kinematics)
6165 throws InertialNavigatorException {
6166 final var result = new ECIFrame();
6167 navigateECI(timeInterval, oldFrame, kinematics, result);
6168 return result;
6169 }
6170
6171 /**
6172 * Runs precision ECI-frame inertial navigation equations.
6173 *
6174 * @param timeInterval time interval between epochs expressed in seconds (s).
6175 * @param oldFrame previous ECI frame containing body position, velocity and
6176 * coordinate transformation matrix.
6177 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6178 * resolved along body-frame axes, averaged over time interval.
6179 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6180 * resolved along body-frame axes, averaged over time interval.
6181 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6182 * resolved along body-frame axes, averaged over time interval.
6183 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6184 * resolved along body-frame axes, averaged over time interval and
6185 * expressed in radians per second (rad/s).
6186 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6187 * resolved along body-frame axes, averaged over time interval and
6188 * expressed in radians per second (rad/s).
6189 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6190 * resolved along body-frame axes, averaged over time interval and
6191 * expressed in radians per second (rad/s).
6192 * @return estimated ECI frame containing new body position, velocity and coordinate
6193 * transformation matrix.
6194 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6195 */
6196 public static ECIFrame navigateECIAndReturnNew(
6197 final double timeInterval, final ECIFrame oldFrame,
6198 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6199 final double angularRateX, final double angularRateY, final double angularRateZ)
6200 throws InertialNavigatorException {
6201 final var result = new ECIFrame();
6202 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6203 return result;
6204 }
6205
6206 /**
6207 * Runs precision ECI-frame inertial navigation equations.
6208 *
6209 * @param timeInterval time interval between epochs.
6210 * @param oldFrame previous ECI frame containing body position, velocity and
6211 * coordinate transformation matrix.
6212 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6213 * resolved along body-frame axes, averaged over time interval.
6214 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6215 * resolved along body-frame axes, averaged over time interval.
6216 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6217 * resolved along body-frame axes, averaged over time interval.
6218 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6219 * resolved along body-frame axes, averaged over time interval and
6220 * expressed in radians per second (rad/s).
6221 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6222 * resolved along body-frame axes, averaged over time interval and
6223 * expressed in radians per second (rad/s).
6224 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6225 * resolved along body-frame axes, averaged over time interval and
6226 * expressed in radians per second (rad/s).
6227 * @return estimated ECI frame containing new body position, velocity and coordinate
6228 * transformation matrix.
6229 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6230 */
6231 public static ECIFrame navigateECIAndReturnNew(
6232 final Time timeInterval, final ECIFrame oldFrame,
6233 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6234 final double angularRateX, final double angularRateY, final double angularRateZ)
6235 throws InertialNavigatorException {
6236 final var result = new ECIFrame();
6237 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6238 return result;
6239 }
6240
6241 /**
6242 * Runs precision ECI-frame inertial navigation equations.
6243 *
6244 * @param timeInterval time interval between epochs expressed in seconds (s).
6245 * @param oldFrame previous ECI frame containing body position, velocity and
6246 * coordinate transformation matrix.
6247 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6248 * resolved along body-frame axes, averaged over time interval and
6249 * expressed in meters per squared second (m/s^2).
6250 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6251 * resolved along body-frame axes, averaged over time interval and
6252 * expressed in meters per squared second (m/s^2).
6253 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6254 * resolved along body-frame axes, averaged over time interval and
6255 * expressed in meters per squared second (m/s^2).
6256 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6257 * resolved along body-frame axes, averaged over time interval.
6258 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6259 * resolved along body-frame axes, averaged over time interval.
6260 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6261 * resolved along body-frame axes, averaged over time interval.
6262 * @return estimated ECI frame containing new body position, velocity and coordinate
6263 * transformation matrix.
6264 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6265 */
6266 public static ECIFrame navigateECIAndReturnNew(
6267 final double timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
6268 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6269 throws InertialNavigatorException {
6270 final var result = new ECIFrame();
6271 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6272 return result;
6273 }
6274
6275 /**
6276 * Runs precision ECI-frame inertial navigation equations.
6277 *
6278 * @param timeInterval time interval between epochs.
6279 * @param oldFrame previous ECI frame containing body position, velocity and
6280 * coordinate transformation matrix.
6281 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6282 * resolved along body-frame axes, averaged over time interval and
6283 * expressed in meters per squared second (m/s^2).
6284 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6285 * resolved along body-frame axes, averaged over time interval and
6286 * expressed in meters per squared second (m/s^2).
6287 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6288 * resolved along body-frame axes, averaged over time interval and
6289 * expressed in meters per squared second (m/s^2).
6290 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6291 * resolved along body-frame axes, averaged over time interval.
6292 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6293 * resolved along body-frame axes, averaged over time interval.
6294 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6295 * resolved along body-frame axes, averaged over time interval.
6296 * @return estimated ECI frame containing new body position, velocity and coordinate
6297 * transformation matrix.
6298 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6299 */
6300 public static ECIFrame navigateECIAndReturnNew(
6301 final Time timeInterval, final ECIFrame oldFrame, final double fx, final double fy, final double fz,
6302 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6303 throws InertialNavigatorException {
6304 final var result = new ECIFrame();
6305 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6306 return result;
6307 }
6308
6309 /**
6310 * Runs precision ECI-frame inertial navigation equations.
6311 *
6312 * @param timeInterval time interval between epochs expressed in seconds (s).
6313 * @param oldFrame previous ECI frame containing body position, velocity and
6314 * coordinate transformation matrix.
6315 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6316 * resolved along body-frame axes, averaged over time interval.
6317 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6318 * resolved along body-frame axes, averaged over time interval.
6319 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6320 * resolved along body-frame axes, averaged over time interval.
6321 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6322 * resolved along body-frame axes, averaged over time interval.
6323 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6324 * resolved along body-frame axes, averaged over time interval.
6325 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6326 * resolved along body-frame axes, averaged over time interval.
6327 * @return estimated ECI frame containing new body position, velocity and coordinate
6328 * transformation matrix.
6329 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6330 */
6331 public static ECIFrame navigateECIAndReturnNew(
6332 final double timeInterval, final ECIFrame oldFrame,
6333 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6334 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6335 throws InertialNavigatorException {
6336 final var result = new ECIFrame();
6337 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6338 return result;
6339 }
6340
6341 /**
6342 * Runs precision ECI-frame inertial navigation equations.
6343 *
6344 * @param timeInterval time interval between epochs.
6345 * @param oldFrame previous ECI frame containing body position, velocity and
6346 * coordinate transformation matrix.
6347 * @param fx specific force x-coordinate of body frame with respect ECI frame,
6348 * resolved along body-frame axes, averaged over time interval.
6349 * @param fy specific force y-coordinate of body frame with respect ECI frame,
6350 * resolved along body-frame axes, averaged over time interval.
6351 * @param fz specific force z-coordinate of body frame with respect ECI frame,
6352 * resolved along body-frame axes, averaged over time interval.
6353 * @param angularRateX angular rate x-coordinate of body frame with respect ECI frame,
6354 * resolved along body-frame axes, averaged over time interval.
6355 * @param angularRateY angular rate y-coordinate of body frame with respect ECI frame,
6356 * resolved along body-frame axes, averaged over time interval.
6357 * @param angularRateZ angular rate z-coordinate of body frame with respect ECI frame,
6358 * resolved along body-frame axes, averaged over time interval.
6359 * @return estimated ECI frame containing new body position, velocity and coordinate
6360 * transformation matrix.
6361 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6362 */
6363 public static ECIFrame navigateECIAndReturnNew(
6364 final Time timeInterval, final ECIFrame oldFrame,
6365 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6366 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6367 throws InertialNavigatorException {
6368 final var result = new ECIFrame();
6369 navigateECI(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6370 return result;
6371 }
6372
6373 /**
6374 * Checks whether provided coordinate transformation matrix is valid or not.
6375 * Only body to ECI transformation matrices are considered to be valid.
6376 *
6377 * @param c coordinate transformation matrix to be checked.
6378 * @return true if provided value is valid, false otherwise.
6379 */
6380 public static boolean isValidBodyToEciCoordinateTransformationMatrix(final CoordinateTransformation c) {
6381 return ECIFrame.isValidCoordinateTransformation(c);
6382 }
6383
6384 /**
6385 * Converts provided time instance into its corresponding value expressed in
6386 * seconds.
6387 *
6388 * @param time time instance to be converted.
6389 * @return converted value expressed in seconds.
6390 */
6391 private static double convertTimeToDouble(final com.irurueta.units.Time time) {
6392 return TimeConverter.convert(time.getValue().doubleValue(), time.getUnit(), TimeUnit.SECOND);
6393 }
6394
6395 /**
6396 * Converts provided distance instance into its corresponding value expressed in
6397 * meters.
6398 *
6399 * @param distance distance instance to be converted.
6400 * @return converted value expressed in meters.
6401 */
6402 private static double convertDistanceToDouble(final Distance distance) {
6403 return DistanceConverter.convert(distance.getValue().doubleValue(), distance.getUnit(), DistanceUnit.METER);
6404 }
6405
6406 /**
6407 * Converts provided speed instance into its corresponding value expressed in
6408 * meters per second.
6409 *
6410 * @param speed speed instance to be converted.
6411 * @return converted value expressed in meters per second.
6412 */
6413 private static double convertSpeedToDouble(final Speed speed) {
6414 return SpeedConverter.convert(speed.getValue().doubleValue(), speed.getUnit(), SpeedUnit.METERS_PER_SECOND);
6415 }
6416
6417 /**
6418 * Converts provided acceleration instance into its corresponding value expressed
6419 * in meters per squared second.
6420 *
6421 * @param acceleration acceleration instance to be converted.
6422 * @return converted value expressed in meters per squared second.
6423 */
6424 private static double convertAccelerationToDouble(final Acceleration acceleration) {
6425 return AccelerationConverter.convert(acceleration.getValue().doubleValue(), acceleration.getUnit(),
6426 AccelerationUnit.METERS_PER_SQUARED_SECOND);
6427 }
6428
6429 /**
6430 * Converts provided angular speed into its corresponding value expressed in
6431 * radians per second.
6432 *
6433 * @param angularSpeed angular speed instance to be converted.
6434 * @return converted value expressed in radians per second.
6435 */
6436 private static double convertAngularSpeedToDouble(final AngularSpeed angularSpeed) {
6437 return AngularSpeedConverter.convert(angularSpeed.getValue().doubleValue(), angularSpeed.getUnit(),
6438 AngularSpeedUnit.RADIANS_PER_SECOND);
6439 }
6440 }