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.ECEFFrame;
25 import com.irurueta.navigation.frames.ECEFPosition;
26 import com.irurueta.navigation.frames.ECEFVelocity;
27 import com.irurueta.navigation.frames.FrameException;
28 import com.irurueta.navigation.frames.FrameType;
29 import com.irurueta.navigation.frames.InvalidSourceAndDestinationFrameTypeException;
30 import com.irurueta.navigation.geodesic.Constants;
31 import com.irurueta.navigation.inertial.BodyKinematics;
32 import com.irurueta.navigation.inertial.estimators.ECEFGravityEstimator;
33 import com.irurueta.units.*;
34
35 /**
36 * Runs precision ECEF-frame inertial navigation equations.
37 * This implementation is based on the equations defined in "Principles of GNSS, Inertial, and Multisensor
38 * Integrated Navigation Systems, Second Edition" and on the companion software available at:
39 * <a href="https://github.com/ymjdz/MATLAB-Codes/blob/master/Nav_equations_ECEF.m">
40 * https://github.com/ymjdz/MATLAB-Codes/blob/master/Nav_equations_ECEF.m
41 * </a>
42 */
43 public class ECEFInertialNavigator {
44
45 /**
46 * Earth rotation rate expressed in radians per second (rad/s).
47 */
48 public static final double EARTH_ROTATION_RATE = Constants.EARTH_ROTATION_RATE;
49
50 /**
51 * Alpha threshold.
52 */
53 private static final double ALPHA_THRESHOLD = 1e-8;
54
55 /**
56 * Number of rows.
57 */
58 private static final int ROWS = 3;
59
60 /**
61 * Runs precision ECEF-frame inertial navigation equations.
62 *
63 * @param timeInterval time interval between epochs expressed in seconds (s).
64 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
65 * frame, resolved along ECEF-frame axes and expressed in meters (m).
66 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
67 * frame, resolved along ECEF-frame axes and expressed in meters (m).
68 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
69 * frame, resolved along ECEF-frame axes and expressed in meters (m).
70 * @param oldC previous body-to-ECEF-frame coordinate transformation.
71 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
72 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
73 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
74 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
75 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
76 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
77 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
78 * resolved along body-frame axes, averaged over time interval and
79 * expressed in meters per squared second (m/s^2).
80 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
81 * resolved along body-frame axes, averaged over time interval and
82 * expressed in meters per squared second (m/s^2).
83 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
84 * resolved along body-frame axes, averaged over time interval and
85 * expressed in meters per squared second (m/s^2).
86 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
87 * resolved along body-frame axes, averaged over time interval and
88 * expressed in radians per second (rad/s).
89 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
90 * resolved along body-frame axes, averaged over time interval and
91 * expressed in radians per second (rad/s).
92 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
93 * resolved along body-frame axes, averaged over time interval and
94 * expressed in radians per second (rad/s).
95 * @param result instance where new estimated ECEF frame containing new body
96 * position, velocity and coordinate transformation matrix will be stored.
97 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
98 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
99 * body-to-ECEF-frame coordinate transformation matrix are
100 * invalid.
101 */
102 public void navigate(
103 final double timeInterval, final double oldX, final double oldY, final double oldZ,
104 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
105 final double fx, final double fy, final double fz,
106 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
107 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
108 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
109 angularRateX, angularRateY, angularRateZ, result);
110 }
111
112 /**
113 * Runs precision ECEF-frame inertial navigation equations.
114 *
115 * @param timeInterval time interval between epochs.
116 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
117 * frame, resolved along ECEF-frame axes and expressed in meters (m).
118 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
119 * frame, resolved along ECEF-frame axes and expressed in meters (m).
120 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
121 * frame, resolved along ECEF-frame axes and expressed in meters (m).
122 * @param oldC previous body-to-ECEF-frame coordinate transformation.
123 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
124 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
125 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
126 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
127 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
128 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
129 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
130 * resolved along body-frame axes, averaged over time interval and
131 * expressed in meters per squared second (m/s^2).
132 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
133 * resolved along body-frame axes, averaged over time interval and
134 * expressed in meters per squared second (m/s^2).
135 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
136 * resolved along body-frame axes, averaged over time interval and
137 * expressed in meters per squared second (m/s^2).
138 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
139 * resolved along body-frame axes, averaged over time interval and
140 * expressed in radians per second (rad/s).
141 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
142 * resolved along body-frame axes, averaged over time interval and
143 * expressed in radians per second (rad/s).
144 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
145 * resolved along body-frame axes, averaged over time interval and
146 * expressed in radians per second (rad/s).
147 * @param result instance where new estimated ECEF frame containing new body
148 * position, velocity and coordinate transformation matrix will be stored.
149 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
150 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
151 * body-to-ECEF-frame coordinate transformation matrix are
152 * invalid.
153 */
154 public void navigate(
155 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
156 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
157 final double fx, final double fy, final double fz,
158 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
159 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
160 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
161 angularRateX, angularRateY, angularRateZ, result);
162 }
163
164 /**
165 * Runs precision ECEF-frame inertial navigation equations.
166 *
167 * @param timeInterval time interval between epochs expressed in seconds (s).
168 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
169 * @param oldC previous body-to-ECEF-frame coordinate transformation.
170 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
171 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
172 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
173 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
174 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
175 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
176 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
177 * resolved along body-frame axes, averaged over time interval and
178 * expressed in meters per squared second (m/s^2).
179 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
180 * resolved along body-frame axes, averaged over time interval and
181 * expressed in meters per squared second (m/s^2).
182 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
183 * resolved along body-frame axes, averaged over time interval and
184 * expressed in meters per squared second (m/s^2).
185 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
186 * resolved along body-frame axes, averaged over time interval and
187 * expressed in radians per second (rad/s).
188 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
189 * resolved along body-frame axes, averaged over time interval and
190 * expressed in radians per second (rad/s).
191 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
192 * resolved along body-frame axes, averaged over time interval and
193 * expressed in radians per second (rad/s).
194 * @param result instance where new estimated ECEF frame containing new body
195 * position, velocity and coordinate transformation matrix will be stored.
196 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
197 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
198 * body-to-ECEF-frame coordinate transformation matrix are
199 * invalid.
200 */
201 public void navigate(
202 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
203 final double oldVx, final double oldVy, final double oldVz,
204 final double fx, final double fy, final double fz,
205 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
206 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
207 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
208 angularRateX, angularRateY, angularRateZ, result);
209 }
210
211 /**
212 * Runs precision ECEF-frame inertial navigation equations.
213 *
214 * @param timeInterval time interval between epochs.
215 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
216 * @param oldC previous body-to-ECEF-frame coordinate transformation.
217 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
218 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
219 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
220 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
221 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
222 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
223 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
224 * resolved along body-frame axes, averaged over time interval and
225 * expressed in meters per squared second (m/s^2).
226 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
227 * resolved along body-frame axes, averaged over time interval and
228 * expressed in meters per squared second (m/s^2).
229 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
230 * resolved along body-frame axes, averaged over time interval and
231 * expressed in meters per squared second (m/s^2).
232 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
233 * resolved along body-frame axes, averaged over time interval and
234 * expressed in radians per second (rad/s).
235 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
236 * resolved along body-frame axes, averaged over time interval and
237 * expressed in radians per second (rad/s).
238 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
239 * resolved along body-frame axes, averaged over time interval and
240 * expressed in radians per second (rad/s).
241 * @param result instance where new estimated ECEF frame containing new body
242 * position, velocity and coordinate transformation matrix will be stored.
243 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
244 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
245 * body-to-ECEF-frame coordinate transformation matrix are
246 * invalid.
247 */
248 public void navigate(
249 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
250 final double oldVx, final double oldVy, final double oldVz,
251 final double fx, final double fy, final double fz,
252 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
253 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
254 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
255 angularRateX, angularRateY, angularRateZ, result);
256 }
257
258 /**
259 * Runs precision ECEF-frame inertial navigation equations.
260 *
261 * @param timeInterval time interval between epochs expressed in seconds (s).
262 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
263 * frame, resolved along ECEF-frame axes and expressed in meters (m).
264 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
265 * frame, resolved along ECEF-frame axes and expressed in meters (m).
266 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
267 * frame, resolved along ECEF-frame axes and expressed in meters (m).
268 * @param oldC previous body-to-ECEF-frame coordinate transformation.
269 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
270 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
271 * resolved along body-frame axes, averaged over time interval and
272 * expressed in meters per squared second (m/s^2).
273 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
274 * resolved along body-frame axes, averaged over time interval and
275 * expressed in meters per squared second (m/s^2).
276 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
277 * resolved along body-frame axes, averaged over time interval and
278 * expressed in meters per squared second (m/s^2).
279 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
280 * resolved along body-frame axes, averaged over time interval and
281 * expressed in radians per second (rad/s).
282 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
283 * resolved along body-frame axes, averaged over time interval and
284 * expressed in radians per second (rad/s).
285 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
286 * resolved along body-frame axes, averaged over time interval and
287 * expressed in radians per second (rad/s).
288 * @param result instance where new estimated ECEF frame containing new body
289 * position, velocity and coordinate transformation matrix will be stored.
290 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
291 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
292 * body-to-ECEF-frame coordinate transformation matrix are
293 * invalid.
294 */
295 public void navigate(
296 final double timeInterval, final double oldX, final double oldY, final double oldZ,
297 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
298 final double fx, final double fy, final double fz,
299 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
300 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
301 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
302 angularRateX, angularRateY, angularRateZ, result);
303 }
304
305 /**
306 * Runs precision ECEF-frame inertial navigation equations.
307 *
308 * @param timeInterval time interval between epochs.
309 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
310 * frame, resolved along ECEF-frame axes and expressed in meters (m).
311 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
312 * frame, resolved along ECEF-frame axes and expressed in meters (m).
313 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
314 * frame, resolved along ECEF-frame axes and expressed in meters (m).
315 * @param oldC previous body-to-ECEF-frame coordinate transformation.
316 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
317 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
318 * resolved along body-frame axes, averaged over time interval and
319 * expressed in meters per squared second (m/s^2).
320 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
321 * resolved along body-frame axes, averaged over time interval and
322 * expressed in meters per squared second (m/s^2).
323 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
324 * resolved along body-frame axes, averaged over time interval and
325 * expressed in meters per squared second (m/s^2).
326 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
327 * resolved along body-frame axes, averaged over time interval and
328 * expressed in radians per second (rad/s).
329 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
330 * resolved along body-frame axes, averaged over time interval and
331 * expressed in radians per second (rad/s).
332 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
333 * resolved along body-frame axes, averaged over time interval and
334 * expressed in radians per second (rad/s).
335 * @param result instance where new estimated ECEF frame containing new body
336 * position, velocity and coordinate transformation matrix will be stored.
337 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
338 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
339 * body-to-ECEF-frame coordinate transformation matrix are
340 * invalid.
341 */
342 public void navigate(
343 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
344 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
345 final double fx, final double fy, final double fz,
346 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
347 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
348 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
349 angularRateX, angularRateY, angularRateZ, result);
350 }
351
352 /**
353 * Runs precision ECEF-frame inertial navigation equations.
354 *
355 * @param timeInterval time interval between epochs expressed in seconds (s).
356 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
357 * @param oldC previous body-to-ECEF-frame coordinate transformation.
358 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
359 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
360 * resolved along body-frame axes, averaged over time interval and
361 * expressed in meters per squared second (m/s^2).
362 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
363 * resolved along body-frame axes, averaged over time interval and
364 * expressed in meters per squared second (m/s^2).
365 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
366 * resolved along body-frame axes, averaged over time interval and
367 * expressed in meters per squared second (m/s^2).
368 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
369 * resolved along body-frame axes, averaged over time interval and
370 * expressed in radians per second (rad/s).
371 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
372 * resolved along body-frame axes, averaged over time interval and
373 * expressed in radians per second (rad/s).
374 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
375 * resolved along body-frame axes, averaged over time interval and
376 * expressed in radians per second (rad/s).
377 * @param result instance where new estimated ECEF frame containing new body
378 * position, velocity and coordinate transformation matrix will be stored.
379 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
380 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
381 * body-to-ECEF-frame coordinate transformation matrix are
382 * invalid.
383 */
384 public void navigate(
385 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
386 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
387 final double angularRateX, final double angularRateY, final double angularRateZ,
388 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
389 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
390 result);
391 }
392
393 /**
394 * Runs precision ECEF-frame inertial navigation equations.
395 *
396 * @param timeInterval time interval between epochs.
397 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
398 * @param oldC previous body-to-ECEF-frame coordinate transformation.
399 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
400 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
401 * resolved along body-frame axes, averaged over time interval and
402 * expressed in meters per squared second (m/s^2).
403 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
404 * resolved along body-frame axes, averaged over time interval and
405 * expressed in meters per squared second (m/s^2).
406 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
407 * resolved along body-frame axes, averaged over time interval and
408 * expressed in meters per squared second (m/s^2).
409 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
410 * resolved along body-frame axes, averaged over time interval and
411 * expressed in radians per second (rad/s).
412 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
413 * resolved along body-frame axes, averaged over time interval and
414 * expressed in radians per second (rad/s).
415 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
416 * resolved along body-frame axes, averaged over time interval and
417 * expressed in radians per second (rad/s).
418 * @param result instance where new estimated ECEF frame containing new body
419 * position, velocity and coordinate transformation matrix will be stored.
420 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
421 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
422 * body-to-ECEF-frame coordinate transformation matrix are
423 * invalid.
424 */
425 public void navigate(
426 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
427 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
428 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
429 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
430 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
431 result);
432 }
433
434 /**
435 * Runs precision ECEF-frame inertial navigation equations.
436 *
437 * @param timeInterval time interval between epochs expressed in seconds (s).
438 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
439 * frame, resolved along ECEF-frame axes and expressed in meters (m).
440 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
441 * frame, resolved along ECEF-frame axes and expressed in meters (m).
442 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
443 * frame, resolved along ECEF-frame axes and expressed in meters (m).
444 * @param oldC previous body-to-ECEF-frame coordinate transformation.
445 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
446 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
447 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
448 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
449 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
450 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
451 * @param kinematics body kinematics containing specific forces and angular rates applied to
452 * the body.
453 * @param result instance where new estimated ECEF frame containing new body
454 * position, velocity and coordinate transformation matrix will be stored.
455 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
456 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
457 * body-to-ECEF-frame coordinate transformation matrix are
458 * invalid.
459 */
460 public void navigate(
461 final double timeInterval, final double oldX, final double oldY, final double oldZ,
462 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
463 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
464 InvalidSourceAndDestinationFrameTypeException {
465 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
466 }
467
468 /**
469 * Runs precision ECEF-frame inertial navigation equations.
470 *
471 * @param timeInterval time interval between epochs.
472 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
473 * frame, resolved along ECEF-frame axes and expressed in meters (m).
474 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
475 * frame, resolved along ECEF-frame axes and expressed in meters (m).
476 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
477 * frame, resolved along ECEF-frame axes and expressed in meters (m).
478 * @param oldC previous body-to-ECEF-frame coordinate transformation.
479 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
480 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
481 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
482 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
483 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
484 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
485 * @param kinematics body kinematics containing specific forces and angular rates applied to
486 * the body.
487 * @param result instance where new estimated ECEF frame containing new body
488 * position, velocity and coordinate transformation matrix will be stored.
489 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
490 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
491 * body-to-ECEF-frame coordinate transformation matrix are
492 * invalid.
493 */
494 public void navigate(
495 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
496 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
497 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
498 InvalidSourceAndDestinationFrameTypeException {
499 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
500 }
501
502 /**
503 * Runs precision ECEF-frame inertial navigation equations.
504 *
505 * @param timeInterval time interval between epochs expressed in seconds (s).
506 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
507 * @param oldC previous body-to-ECEF-frame coordinate transformation.
508 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
509 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
510 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
511 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
512 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
513 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
514 * @param kinematics body kinematics containing specific forces and angular rates applied to
515 * the body.
516 * @param result instance where new estimated ECEF frame containing new body
517 * position, velocity and coordinate transformation matrix will be stored.
518 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
519 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
520 * body-to-ECEF-frame coordinate transformation matrix are
521 * invalid.
522 */
523 public void navigate(
524 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
525 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
526 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
527 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
528 }
529
530 /**
531 * Runs precision ECEF-frame inertial navigation equations.
532 *
533 * @param timeInterval time interval between epochs.
534 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
535 * @param oldC previous body-to-ECEF-frame coordinate transformation.
536 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
537 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
538 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
539 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
540 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
541 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
542 * @param kinematics body kinematics containing specific forces and angular rates applied to
543 * the body.
544 * @param result instance where new estimated ECEF frame containing new body
545 * position, velocity and coordinate transformation matrix will be stored.
546 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
547 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
548 * body-to-ECEF-frame coordinate transformation matrix are
549 * invalid.
550 */
551 public void navigate(
552 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
553 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
554 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
555 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
556 }
557
558 /**
559 * Runs precision ECEF-frame inertial navigation equations.
560 *
561 * @param timeInterval time interval between epochs expressed in seconds (s).
562 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
563 * frame, resolved along ECEF-frame axes and expressed in meters (m).
564 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
565 * frame, resolved along ECEF-frame axes and expressed in meters (m).
566 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
567 * frame, resolved along ECEF-frame axes and expressed in meters (m).
568 * @param oldC previous body-to-ECEF-frame coordinate transformation.
569 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
570 * @param kinematics body kinematics containing specific forces and angular rates applied to
571 * the body.
572 * @param result instance where new estimated ECEF frame containing new body
573 * position, velocity and coordinate transformation matrix will be stored.
574 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
575 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
576 * body-to-ECEF-frame coordinate transformation matrix are
577 * invalid.
578 */
579 public void navigate(
580 final double timeInterval, final double oldX, final double oldY, final double oldZ,
581 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
582 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
583 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
584 }
585
586 /**
587 * Runs precision ECEF-frame inertial navigation equations.
588 *
589 * @param timeInterval time interval between epochs.
590 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
591 * frame, resolved along ECEF-frame axes and expressed in meters (m).
592 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
593 * frame, resolved along ECEF-frame axes and expressed in meters (m).
594 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
595 * frame, resolved along ECEF-frame axes and expressed in meters (m).
596 * @param oldC previous body-to-ECEF-frame coordinate transformation.
597 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
598 * @param kinematics body kinematics containing specific forces and angular rates applied to
599 * the body.
600 * @param result instance where new estimated ECEF frame containing new body
601 * position, velocity and coordinate transformation matrix will be stored.
602 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
603 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
604 * body-to-ECEF-frame coordinate transformation matrix are
605 * invalid.
606 */
607 public void navigate(
608 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
609 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
610 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
611 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
612 }
613
614 /**
615 * Runs precision ECEF-frame inertial navigation equations.
616 *
617 * @param timeInterval time interval between epochs expressed in seconds (s).
618 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
619 * @param oldC previous body-to-ECEF-frame coordinate transformation.
620 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
621 * @param kinematics body kinematics containing specific forces and angular rates applied to
622 * the body.
623 * @param result instance where new estimated ECEF frame containing new body
624 * position, velocity and coordinate transformation matrix will be stored.
625 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
626 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
627 * body-to-ECEF-frame coordinate transformation matrix are
628 * invalid.
629 */
630 public void navigate(
631 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
632 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
633 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
634 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
635 }
636
637 /**
638 * Runs precision ECEF-frame inertial navigation equations.
639 *
640 * @param timeInterval time interval between epochs.
641 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
642 * @param oldC previous body-to-ECEF-frame coordinate transformation.
643 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
644 * @param kinematics body kinematics containing specific forces and angular rates applied to
645 * the body.
646 * @param result instance where new estimated ECEF frame containing new body
647 * position, velocity and coordinate transformation matrix will be stored.
648 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
649 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
650 * body-to-ECEF-frame coordinate transformation matrix are
651 * invalid.
652 */
653 public void navigate(
654 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
655 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
656 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
657 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
658 }
659
660 /**
661 * Runs precision ECEF-frame inertial navigation equations.
662 *
663 * @param timeInterval time interval between epochs expressed in seconds (s).
664 * @param oldPosition previous cartesian position of body frame with respect ECEF
665 * frame, resolved along ECEF-frame axes and expressed in meters (m).
666 * @param oldC previous body-to-ECEF-frame coordinate transformation.
667 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
668 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
669 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
670 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
671 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
672 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
673 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
674 * resolved along body-frame axes, averaged over time interval and
675 * expressed in meters per squared second (m/s^2).
676 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
677 * resolved along body-frame axes, averaged over time interval and
678 * expressed in meters per squared second (m/s^2).
679 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
680 * resolved along body-frame axes, averaged over time interval and
681 * expressed in meters per squared second (m/s^2).
682 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
683 * resolved along body-frame axes, averaged over time interval and
684 * expressed in radians per second (rad/s).
685 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
686 * resolved along body-frame axes, averaged over time interval and
687 * expressed in radians per second (rad/s).
688 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
689 * resolved along body-frame axes, averaged over time interval and
690 * expressed in radians per second (rad/s).
691 * @param result instance where new estimated ECEF frame containing new body
692 * position, velocity and coordinate transformation matrix will be stored.
693 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
694 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
695 * body-to-ECEF-frame coordinate transformation matrix are
696 * invalid.
697 */
698 public void navigate(
699 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
700 final double oldVx, final double oldVy, final double oldVz,
701 final double fx, final double fy, final double fz,
702 final double angularRateX, final double angularRateY, final double angularRateZ,
703 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
704 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
705 angularRateX, angularRateY, angularRateZ, result);
706 }
707
708 /**
709 * Runs precision ECEF-frame inertial navigation equations.
710 *
711 * @param timeInterval time interval between epochs.
712 * @param oldPosition previous cartesian position of body frame with respect ECEF
713 * frame, resolved along ECEF-frame axes and expressed in meters (m).
714 * @param oldC previous body-to-ECEF-frame coordinate transformation.
715 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
716 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
717 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
718 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
719 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
720 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
721 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
722 * resolved along body-frame axes, averaged over time interval and
723 * expressed in meters per squared second (m/s^2).
724 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
725 * resolved along body-frame axes, averaged over time interval and
726 * expressed in meters per squared second (m/s^2).
727 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
728 * resolved along body-frame axes, averaged over time interval and
729 * expressed in meters per squared second (m/s^2).
730 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
731 * resolved along body-frame axes, averaged over time interval and
732 * expressed in radians per second (rad/s).
733 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
734 * resolved along body-frame axes, averaged over time interval and
735 * expressed in radians per second (rad/s).
736 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
737 * resolved along body-frame axes, averaged over time interval and
738 * expressed in radians per second (rad/s).
739 * @param result instance where new estimated ECEF frame containing new body
740 * position, velocity and coordinate transformation matrix will be stored.
741 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
742 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
743 * body-to-ECEF-frame coordinate transformation matrix are
744 * invalid.
745 */
746 public void navigate(
747 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
748 final double oldVx, final double oldVy, final double oldVz,
749 final double fx, final double fy, final double fz,
750 final double angularRateX, final double angularRateY, final double angularRateZ,
751 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
752 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
753 angularRateX, angularRateY, angularRateZ, result);
754 }
755
756 /**
757 * Runs precision ECEF-frame inertial navigation equations.
758 *
759 * @param timeInterval time interval between epochs expressed in seconds (s).
760 * @param oldPosition previous cartesian position of body frame with respect ECEF
761 * frame, resolved along ECEF-frame axes and expressed in meters (m).
762 * @param oldC previous body-to-ECEF-frame coordinate transformation.
763 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
764 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
765 * resolved along body-frame axes, averaged over time interval and
766 * expressed in meters per squared second (m/s^2).
767 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
768 * resolved along body-frame axes, averaged over time interval and
769 * expressed in meters per squared second (m/s^2).
770 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
771 * resolved along body-frame axes, averaged over time interval and
772 * expressed in meters per squared second (m/s^2).
773 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
774 * resolved along body-frame axes, averaged over time interval and
775 * expressed in radians per second (rad/s).
776 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
777 * resolved along body-frame axes, averaged over time interval and
778 * expressed in radians per second (rad/s).
779 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
780 * resolved along body-frame axes, averaged over time interval and
781 * expressed in radians per second (rad/s).
782 * @param result instance where new estimated ECEF frame containing new body
783 * position, velocity and coordinate transformation matrix will be stored.
784 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
785 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
786 * body-to-ECEF-frame coordinate transformation matrix are
787 * invalid.
788 */
789 public void navigate(
790 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
791 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
792 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
793 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
794 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
795 result);
796 }
797
798 /**
799 * Runs precision ECEF-frame inertial navigation equations.
800 *
801 * @param timeInterval time interval between epochs expressed in seconds (s).
802 * @param oldPosition previous cartesian position of body frame with respect ECEF
803 * frame, resolved along ECEF-frame axes and expressed in meters (m).
804 * @param oldC previous body-to-ECEF-frame coordinate transformation.
805 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
806 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
807 * resolved along body-frame axes, averaged over time interval and
808 * expressed in meters per squared second (m/s^2).
809 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
810 * resolved along body-frame axes, averaged over time interval and
811 * expressed in meters per squared second (m/s^2).
812 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
813 * resolved along body-frame axes, averaged over time interval and
814 * expressed in meters per squared second (m/s^2).
815 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
816 * resolved along body-frame axes, averaged over time interval and
817 * expressed in radians per second (rad/s).
818 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
819 * resolved along body-frame axes, averaged over time interval and
820 * expressed in radians per second (rad/s).
821 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
822 * resolved along body-frame axes, averaged over time interval and
823 * expressed in radians per second (rad/s).
824 * @param result instance where new estimated ECEF frame containing new body
825 * position, velocity and coordinate transformation matrix will be stored.
826 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
827 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
828 * body-to-ECEF-frame coordinate transformation matrix are
829 * invalid.
830 */
831 public void navigate(
832 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
833 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
834 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
835 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
836 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
837 result);
838 }
839
840 /**
841 * Runs precision ECEF-frame inertial navigation equations.
842 *
843 * @param timeInterval time interval between epochs expressed in seconds (s).
844 * @param oldPosition previous cartesian position of body frame with respect ECEF
845 * frame, resolved along ECEF-frame axes and expressed in meters (m).
846 * @param oldC previous body-to-ECEF-frame coordinate transformation.
847 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
848 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
849 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
850 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
851 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
852 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
853 * @param kinematics body kinematics containing specific forces and angular rates applied to
854 * the body.
855 * @param result instance where new estimated ECEF frame containing new body
856 * position, velocity and coordinate transformation matrix will be stored.
857 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
858 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
859 * body-to-ECEF-frame coordinate transformation matrix are
860 * invalid.
861 */
862 public void navigate(
863 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
864 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
865 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
866 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
867 }
868
869 /**
870 * Runs precision ECEF-frame inertial navigation equations.
871 *
872 * @param timeInterval time interval between epochs.
873 * @param oldPosition previous cartesian position of body frame with respect ECEF
874 * frame, resolved along ECEF-frame axes and expressed in meters (m).
875 * @param oldC previous body-to-ECEF-frame coordinate transformation.
876 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
877 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
878 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
879 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
880 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
881 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
882 * @param kinematics body kinematics containing specific forces and angular rates applied to
883 * the body.
884 * @param result instance where new estimated ECEF frame containing new body
885 * position, velocity and coordinate transformation matrix will be stored.
886 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
887 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
888 * body-to-ECEF-frame coordinate transformation matrix are
889 * invalid.
890 */
891 public void navigate(
892 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
893 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
894 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
895 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
896 }
897
898 /**
899 * Runs precision ECEF-frame inertial navigation equations.
900 *
901 * @param timeInterval time interval between epochs expressed in seconds (s).
902 * @param oldPosition previous cartesian position of body frame with respect ECEF
903 * frame, resolved along ECEF-frame axes and expressed in meters (m).
904 * @param oldC previous body-to-ECEF-frame coordinate transformation.
905 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
906 * @param kinematics body kinematics containing specific forces and angular rates applied to
907 * the body.
908 * @param result instance where new estimated ECEF frame containing new body
909 * position, velocity and coordinate transformation matrix will be stored.
910 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
911 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
912 * body-to-ECEF-frame coordinate transformation matrix are
913 * invalid.
914 */
915 public void navigate(
916 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
917 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
918 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
919 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
920 }
921
922 /**
923 * Runs precision ECEF-frame inertial navigation equations.
924 *
925 * @param timeInterval time interval between epochs.
926 * @param oldPosition previous cartesian position of body frame with respect ECEF
927 * frame, resolved along ECEF-frame axes and expressed in meters (m).
928 * @param oldC previous body-to-ECEF-frame coordinate transformation.
929 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
930 * @param kinematics body kinematics containing specific forces and angular rates applied to
931 * the body.
932 * @param result instance where new estimated ECEF frame containing new body
933 * position, velocity and coordinate transformation matrix will be stored.
934 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
935 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
936 * body-to-ECEF-frame coordinate transformation matrix are
937 * invalid.
938 */
939 public void navigate(
940 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
941 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
942 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
943 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
944 }
945
946 /**
947 * Runs precision ECEF-frame inertial navigation equations.
948 *
949 * @param timeInterval time interval between epochs expressed in seconds (s).
950 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
951 * frame, resolved along ECEF-frame axes.
952 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
953 * frame, resolved along ECEF-frame axes.
954 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
955 * frame, resolved along ECEF-frame axes.
956 * @param oldC previous body-to-ECEF-frame coordinate transformation.
957 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
958 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
959 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
960 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
961 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
962 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
963 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
964 * resolved along body-frame axes, averaged over time interval and
965 * expressed in meters per squared second (m/s^2).
966 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
967 * resolved along body-frame axes, averaged over time interval and
968 * expressed in meters per squared second (m/s^2).
969 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
970 * resolved along body-frame axes, averaged over time interval and
971 * expressed in meters per squared second (m/s^2).
972 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
973 * resolved along body-frame axes, averaged over time interval and
974 * expressed in radians per second (rad/s).
975 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
976 * resolved along body-frame axes, averaged over time interval and
977 * expressed in radians per second (rad/s).
978 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
979 * resolved along body-frame axes, averaged over time interval and
980 * expressed in radians per second (rad/s).
981 * @param result instance where new estimated ECEF frame containing new body
982 * position, velocity and coordinate transformation matrix will be stored.
983 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
984 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
985 * body-to-ECEF-frame coordinate transformation matrix are
986 * invalid.
987 */
988 public void navigate(
989 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
990 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
991 final double fx, final double fy, final double fz,
992 final double angularRateX, final double angularRateY, final double angularRateZ,
993 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
994 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
995 angularRateX, angularRateY, angularRateZ, result);
996 }
997
998 /**
999 * Runs precision ECEF-frame inertial navigation equations.
1000 *
1001 * @param timeInterval time interval between epochs.
1002 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1003 * frame, resolved along ECEF-frame axes.
1004 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1005 * frame, resolved along ECEF-frame axes.
1006 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1007 * frame, resolved along ECEF-frame axes.
1008 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1009 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1010 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1011 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1012 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1013 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1014 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1015 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1016 * resolved along body-frame axes, averaged over time interval and
1017 * expressed in meters per squared second (m/s^2).
1018 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1019 * resolved along body-frame axes, averaged over time interval and
1020 * expressed in meters per squared second (m/s^2).
1021 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1022 * resolved along body-frame axes, averaged over time interval and
1023 * expressed in meters per squared second (m/s^2).
1024 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1025 * resolved along body-frame axes, averaged over time interval and
1026 * expressed in radians per second (rad/s).
1027 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1028 * resolved along body-frame axes, averaged over time interval and
1029 * expressed in radians per second (rad/s).
1030 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1031 * resolved along body-frame axes, averaged over time interval and
1032 * expressed in radians per second (rad/s).
1033 * @param result instance where new estimated ECEF frame containing new body
1034 * position, velocity and coordinate transformation matrix will be stored.
1035 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1036 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1037 * body-to-ECEF-frame coordinate transformation matrix are
1038 * invalid.
1039 */
1040 public void navigate(
1041 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1042 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1043 final double fx, final double fy, final double fz,
1044 final double angularRateX, final double angularRateY, final double angularRateZ,
1045 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1046 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1047 angularRateX, angularRateY, angularRateZ, result);
1048 }
1049
1050 /**
1051 * Runs precision ECEF-frame inertial navigation equations.
1052 *
1053 * @param timeInterval time interval between epochs expressed in seconds (s).
1054 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1055 * frame, resolved along ECEF-frame axes.
1056 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1057 * frame, resolved along ECEF-frame axes.
1058 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1059 * frame, resolved along ECEF-frame axes.
1060 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1061 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1062 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1063 * resolved along body-frame axes, averaged over time interval and
1064 * expressed in meters per squared second (m/s^2).
1065 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1066 * resolved along body-frame axes, averaged over time interval and
1067 * expressed in meters per squared second (m/s^2).
1068 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1069 * resolved along body-frame axes, averaged over time interval and
1070 * expressed in meters per squared second (m/s^2).
1071 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1072 * resolved along body-frame axes, averaged over time interval and
1073 * expressed in radians per second (rad/s).
1074 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1075 * resolved along body-frame axes, averaged over time interval and
1076 * expressed in radians per second (rad/s).
1077 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1078 * resolved along body-frame axes, averaged over time interval and
1079 * expressed in radians per second (rad/s).
1080 * @param result instance where new estimated ECEF frame containing new body
1081 * position, velocity and coordinate transformation matrix will be stored.
1082 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1083 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1084 * body-to-ECEF-frame coordinate transformation matrix are
1085 * invalid.
1086 */
1087 public void navigate(
1088 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1089 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
1090 final double fx, final double fy, final double fz,
1091 final double angularRateX, final double angularRateY, final double angularRateZ,
1092 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1093 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
1094 angularRateX, angularRateY, angularRateZ, result);
1095 }
1096
1097 /**
1098 * Runs precision ECEF-frame inertial navigation equations.
1099 *
1100 * @param timeInterval time interval between epochs.
1101 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1102 * frame, resolved along ECEF-frame axes.
1103 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1104 * frame, resolved along ECEF-frame axes.
1105 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1106 * frame, resolved along ECEF-frame axes.
1107 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1108 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1109 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1110 * resolved along body-frame axes, averaged over time interval and
1111 * expressed in meters per squared second (m/s^2).
1112 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1113 * resolved along body-frame axes, averaged over time interval and
1114 * expressed in meters per squared second (m/s^2).
1115 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1116 * resolved along body-frame axes, averaged over time interval and
1117 * expressed in meters per squared second (m/s^2).
1118 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1119 * resolved along body-frame axes, averaged over time interval and
1120 * expressed in radians per second (rad/s).
1121 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1122 * resolved along body-frame axes, averaged over time interval and
1123 * expressed in radians per second (rad/s).
1124 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1125 * resolved along body-frame axes, averaged over time interval and
1126 * expressed in radians per second (rad/s).
1127 * @param result instance where new estimated ECEF frame containing new body
1128 * position, velocity and coordinate transformation matrix will be stored.
1129 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1130 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1131 * body-to-ECEF-frame coordinate transformation matrix are
1132 * invalid.
1133 */
1134 public void navigate(
1135 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1136 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
1137 final double fx, final double fy, final double fz,
1138 final double angularRateX, final double angularRateY, final double angularRateZ,
1139 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1140 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
1141 angularRateX, angularRateY, angularRateZ, result);
1142 }
1143
1144 /**
1145 * Runs precision ECEF-frame inertial navigation equations.
1146 *
1147 * @param timeInterval time interval between epochs expressed in seconds (s).
1148 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1149 * frame, resolved along ECEF-frame axes.
1150 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1151 * frame, resolved along ECEF-frame axes.
1152 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1153 * frame, resolved along ECEF-frame axes.
1154 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1155 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1156 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1157 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1158 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1159 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1160 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1161 * @param kinematics body kinematics containing specific forces and angular rates applied to
1162 * the body.
1163 * @param result instance where new estimated ECEF frame containing new body
1164 * position, velocity and coordinate transformation matrix will be stored.
1165 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1166 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1167 * body-to-ECEF-frame coordinate transformation matrix are
1168 * invalid.
1169 */
1170 public void navigate(
1171 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1172 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1173 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
1174 InvalidSourceAndDestinationFrameTypeException {
1175 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
1176 }
1177
1178 /**
1179 * Runs precision ECEF-frame inertial navigation equations.
1180 *
1181 * @param timeInterval time interval between epochs.
1182 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1183 * frame, resolved along ECEF-frame axes.
1184 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1185 * frame, resolved along ECEF-frame axes.
1186 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1187 * frame, resolved along ECEF-frame axes.
1188 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1189 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1190 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1191 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1192 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1193 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1194 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1195 * @param kinematics body kinematics containing specific forces and angular rates applied to
1196 * the body.
1197 * @param result instance where new estimated ECEF frame containing new body
1198 * position, velocity and coordinate transformation matrix will be stored.
1199 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1200 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1201 * body-to-ECEF-frame coordinate transformation matrix are
1202 * invalid.
1203 */
1204 public void navigate(
1205 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1206 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1207 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
1208 InvalidSourceAndDestinationFrameTypeException {
1209 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
1210 }
1211
1212 /**
1213 * Runs precision ECEF-frame inertial navigation equations.
1214 *
1215 * @param timeInterval time interval between epochs expressed in seconds (s).
1216 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1217 * frame, resolved along ECEF-frame axes.
1218 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1219 * frame, resolved along ECEF-frame axes.
1220 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1221 * frame, resolved along ECEF-frame axes.
1222 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1223 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1224 * @param kinematics body kinematics containing specific forces and angular rates applied to
1225 * the body.
1226 * @param result instance where new estimated ECEF frame containing new body
1227 * position, velocity and coordinate transformation matrix will be stored.
1228 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1229 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1230 * body-to-ECEF-frame coordinate transformation matrix are
1231 * invalid.
1232 */
1233 public void navigate(
1234 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1235 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
1236 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1237 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
1238 }
1239
1240 /**
1241 * Runs precision ECEF-frame inertial navigation equations.
1242 *
1243 * @param timeInterval time interval between epochs.
1244 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1245 * frame, resolved along ECEF-frame axes.
1246 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1247 * frame, resolved along ECEF-frame axes.
1248 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1249 * frame, resolved along ECEF-frame axes.
1250 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1251 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1252 * @param kinematics body kinematics containing specific forces and angular rates applied to
1253 * the body.
1254 * @param result instance where new estimated ECEF frame containing new body
1255 * position, velocity and coordinate transformation matrix will be stored.
1256 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1257 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1258 * body-to-ECEF-frame coordinate transformation matrix are
1259 * invalid.
1260 */
1261 public void navigate(
1262 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
1263 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
1264 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1265 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
1266 }
1267
1268 /**
1269 * Runs precision ECEF-frame inertial navigation equations.
1270 *
1271 * @param timeInterval time interval between epochs expressed in seconds (s).
1272 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1273 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1274 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1275 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1276 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1277 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1278 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1279 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1280 * resolved along ECEF-frame axes.
1281 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1282 * resolved along ECEF-frame axes.
1283 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1284 * resolved along ECEF-frame axes.
1285 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1286 * resolved along body-frame axes, averaged over time interval and
1287 * expressed in meters per squared second (m/s^2).
1288 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1289 * resolved along body-frame axes, averaged over time interval and
1290 * expressed in meters per squared second (m/s^2).
1291 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1292 * resolved along body-frame axes, averaged over time interval and
1293 * expressed in meters per squared second (m/s^2).
1294 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1295 * resolved along body-frame axes, averaged over time interval and
1296 * expressed in radians per second (rad/s).
1297 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1298 * resolved along body-frame axes, averaged over time interval and
1299 * expressed in radians per second (rad/s).
1300 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1301 * resolved along body-frame axes, averaged over time interval and
1302 * expressed in radians per second (rad/s).
1303 * @param result instance where new estimated ECEF frame containing new body
1304 * position, velocity and coordinate transformation matrix will be stored.
1305 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1306 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1307 * body-to-ECEF-frame coordinate transformation matrix are
1308 * invalid.
1309 */
1310 public void navigate(
1311 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1312 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1313 final double fx, final double fy, final double fz,
1314 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1315 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1316 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1317 angularRateX, angularRateY, angularRateZ, result);
1318 }
1319
1320 /**
1321 * Runs precision ECEF-frame inertial navigation equations.
1322 *
1323 * @param timeInterval time interval between epochs.
1324 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1325 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1326 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1327 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1328 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1329 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1330 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1331 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1332 * resolved along ECEF-frame axes.
1333 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1334 * resolved along ECEF-frame axes.
1335 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1336 * resolved along ECEF-frame axes.
1337 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1338 * resolved along body-frame axes, averaged over time interval and
1339 * expressed in meters per squared second (m/s^2).
1340 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1341 * resolved along body-frame axes, averaged over time interval and
1342 * expressed in meters per squared second (m/s^2).
1343 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1344 * resolved along body-frame axes, averaged over time interval and
1345 * expressed in meters per squared second (m/s^2).
1346 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1347 * resolved along body-frame axes, averaged over time interval and
1348 * expressed in radians per second (rad/s).
1349 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1350 * resolved along body-frame axes, averaged over time interval and
1351 * expressed in radians per second (rad/s).
1352 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1353 * resolved along body-frame axes, averaged over time interval and
1354 * expressed in radians per second (rad/s).
1355 * @param result instance where new estimated ECEF frame containing new body
1356 * position, velocity and coordinate transformation matrix will be stored.
1357 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1358 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1359 * body-to-ECEF-frame coordinate transformation matrix are
1360 * invalid.
1361 */
1362 public void navigate(
1363 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1364 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1365 final double fx, final double fy, final double fz,
1366 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1367 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1368 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1369 angularRateX, angularRateY, angularRateZ, result);
1370 }
1371
1372 /**
1373 * Runs precision ECEF-frame inertial navigation equations.
1374 *
1375 * @param timeInterval time interval between epochs expressed in seconds (s).
1376 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1377 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1378 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1379 * resolved along ECEF-frame axes.
1380 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1381 * resolved along ECEF-frame axes.
1382 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1383 * resolved along ECEF-frame axes.
1384 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1385 * resolved along body-frame axes, averaged over time interval and
1386 * expressed in meters per squared second (m/s^2).
1387 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1388 * resolved along body-frame axes, averaged over time interval and
1389 * expressed in meters per squared second (m/s^2).
1390 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1391 * resolved along body-frame axes, averaged over time interval and
1392 * expressed in meters per squared second (m/s^2).
1393 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1394 * resolved along body-frame axes, averaged over time interval and
1395 * expressed in radians per second (rad/s).
1396 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1397 * resolved along body-frame axes, averaged over time interval and
1398 * expressed in radians per second (rad/s).
1399 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1400 * resolved along body-frame axes, averaged over time interval and
1401 * expressed in radians per second (rad/s).
1402 * @param result instance where new estimated ECEF frame containing new body
1403 * position, velocity and coordinate transformation matrix will be stored.
1404 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1405 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1406 * body-to-ECEF-frame coordinate transformation matrix are
1407 * invalid.
1408 */
1409 public void navigate(
1410 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1411 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1412 final double fx, final double fy, final double fz,
1413 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1414 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1415 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1416 angularRateX, angularRateY, angularRateZ, result);
1417 }
1418
1419 /**
1420 * Runs precision ECEF-frame inertial navigation equations.
1421 *
1422 * @param timeInterval time interval between epochs.
1423 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1424 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1425 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1426 * resolved along ECEF-frame axes.
1427 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1428 * resolved along ECEF-frame axes.
1429 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1430 * resolved along ECEF-frame axes.
1431 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1432 * resolved along body-frame axes, averaged over time interval and
1433 * expressed in meters per squared second (m/s^2).
1434 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1435 * resolved along body-frame axes, averaged over time interval and
1436 * expressed in meters per squared second (m/s^2).
1437 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1438 * resolved along body-frame axes, averaged over time interval and
1439 * expressed in meters per squared second (m/s^2).
1440 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1441 * resolved along body-frame axes, averaged over time interval and
1442 * expressed in radians per second (rad/s).
1443 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1444 * resolved along body-frame axes, averaged over time interval and
1445 * expressed in radians per second (rad/s).
1446 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1447 * resolved along body-frame axes, averaged over time interval and
1448 * expressed in radians per second (rad/s).
1449 * @param result instance where new estimated ECEF frame containing new body
1450 * position, velocity and coordinate transformation matrix will be stored.
1451 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1452 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1453 * body-to-ECEF-frame coordinate transformation matrix are
1454 * invalid.
1455 */
1456 public void navigate(
1457 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1458 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1459 final double fx, final double fy, final double fz,
1460 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1461 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1462 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
1463 angularRateX, angularRateY, angularRateZ, result);
1464 }
1465
1466 /**
1467 * Runs precision ECEF-frame inertial navigation equations.
1468 *
1469 * @param timeInterval time interval between epochs expressed in seconds (s).
1470 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1471 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1472 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1473 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1474 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1475 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1476 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1477 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1478 * resolved along ECEF-frame axes.
1479 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1480 * resolved along ECEF-frame axes.
1481 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1482 * resolved along ECEF-frame axes.
1483 * @param kinematics body kinematics containing specific forces and angular rates applied to
1484 * the body.
1485 * @param result instance where new estimated ECEF frame containing new body
1486 * position, velocity and coordinate transformation matrix will be stored.
1487 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1488 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1489 * body-to-ECEF-frame coordinate transformation matrix are
1490 * invalid.
1491 */
1492 public void navigate(
1493 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1494 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1495 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
1496 InvalidSourceAndDestinationFrameTypeException {
1497 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
1498 }
1499
1500 /**
1501 * Runs precision ECEF-frame inertial navigation equations.
1502 *
1503 * @param timeInterval time interval between epochs.
1504 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1505 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1506 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1507 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1508 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1509 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1510 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1511 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1512 * resolved along ECEF-frame axes.
1513 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1514 * resolved along ECEF-frame axes.
1515 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1516 * resolved along ECEF-frame axes.
1517 * @param kinematics body kinematics containing specific forces and angular rates applied to
1518 * the body.
1519 * @param result instance where new estimated ECEF frame containing new body
1520 * position, velocity and coordinate transformation matrix will be stored.
1521 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1522 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1523 * body-to-ECEF-frame coordinate transformation matrix are
1524 * invalid.
1525 */
1526 public void navigate(
1527 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1528 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
1529 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
1530 InvalidSourceAndDestinationFrameTypeException {
1531 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
1532 }
1533
1534 /**
1535 * Runs precision ECEF-frame inertial navigation equations.
1536 *
1537 * @param timeInterval time interval between epochs expressed in seconds (s).
1538 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1539 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1540 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1541 * resolved along ECEF-frame axes.
1542 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1543 * resolved along ECEF-frame axes.
1544 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1545 * resolved along ECEF-frame axes.
1546 * @param kinematics body kinematics containing specific forces and angular rates applied to
1547 * the body.
1548 * @param result instance where new estimated ECEF frame containing new body
1549 * position, velocity and coordinate transformation matrix will be stored.
1550 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1551 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1552 * body-to-ECEF-frame coordinate transformation matrix are
1553 * invalid.
1554 */
1555 public void navigate(
1556 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1557 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics,
1558 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1559 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
1560 }
1561
1562 /**
1563 * Runs precision ECEF-frame inertial navigation equations.
1564 *
1565 * @param timeInterval time interval between epochs.
1566 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1567 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1568 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
1569 * resolved along ECEF-frame axes.
1570 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
1571 * resolved along ECEF-frame axes.
1572 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
1573 * resolved along ECEF-frame axes.
1574 * @param kinematics body kinematics containing specific forces and angular rates applied to
1575 * the body.
1576 * @param result instance where new estimated ECEF frame containing new body
1577 * position, velocity and coordinate transformation matrix will be stored.
1578 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1579 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1580 * body-to-ECEF-frame coordinate transformation matrix are
1581 * invalid.
1582 */
1583 public void navigate(
1584 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1585 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics,
1586 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1587 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
1588 }
1589
1590 /**
1591 * Runs precision ECEF-frame inertial navigation equations.
1592 *
1593 * @param timeInterval time interval between epochs expressed in seconds (s).
1594 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1595 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1596 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1597 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1598 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1599 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1600 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1601 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1602 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1603 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1604 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1605 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1606 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1607 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1608 * resolved along body-frame axes, averaged over time interval.
1609 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1610 * resolved along body-frame axes, averaged over time interval.
1611 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1612 * resolved along body-frame axes, averaged over time interval.
1613 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1614 * resolved along body-frame axes, averaged over time interval and
1615 * expressed in radians per second (rad/s).
1616 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1617 * resolved along body-frame axes, averaged over time interval and
1618 * expressed in radians per second (rad/s).
1619 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1620 * resolved along body-frame axes, averaged over time interval and
1621 * expressed in radians per second (rad/s).
1622 * @param result instance where new estimated ECEF frame containing new body
1623 * position, velocity and coordinate transformation matrix will be stored.
1624 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1625 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1626 * body-to-ECEF-frame coordinate transformation matrix are
1627 * invalid.
1628 */
1629 public void navigate(
1630 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1631 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1632 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1633 final double angularRateX, final double angularRateY, final double angularRateZ,
1634 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1635 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1636 angularRateX, angularRateY, angularRateZ, result);
1637 }
1638
1639 /**
1640 * Runs precision ECEF-frame inertial navigation equations.
1641 *
1642 * @param timeInterval time interval between epochs.
1643 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1644 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1645 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1646 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1647 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1648 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1649 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1650 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1651 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1652 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1653 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1654 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1655 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1656 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1657 * resolved along body-frame axes, averaged over time interval.
1658 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1659 * resolved along body-frame axes, averaged over time interval.
1660 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1661 * resolved along body-frame axes, averaged over time interval.
1662 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1663 * resolved along body-frame axes, averaged over time interval and
1664 * expressed in radians per second (rad/s).
1665 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1666 * resolved along body-frame axes, averaged over time interval and
1667 * expressed in radians per second (rad/s).
1668 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1669 * resolved along body-frame axes, averaged over time interval and
1670 * expressed in radians per second (rad/s).
1671 * @param result instance where new estimated ECEF frame containing new body
1672 * position, velocity and coordinate transformation matrix will be stored.
1673 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1674 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1675 * body-to-ECEF-frame coordinate transformation matrix are
1676 * invalid.
1677 */
1678 public void navigate(
1679 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1680 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1681 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1682 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1683 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1684 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1685 angularRateX, angularRateY, angularRateZ, result);
1686 }
1687
1688 /**
1689 * Runs precision ECEF-frame inertial navigation equations.
1690 *
1691 * @param timeInterval time interval between epochs expressed in seconds (s).
1692 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1693 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1694 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1695 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1696 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1697 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1698 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1699 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1700 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1701 * resolved along body-frame axes, averaged over time interval.
1702 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1703 * resolved along body-frame axes, averaged over time interval.
1704 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1705 * resolved along body-frame axes, averaged over time interval.
1706 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1707 * resolved along body-frame axes, averaged over time interval and
1708 * expressed in radians per second (rad/s).
1709 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1710 * resolved along body-frame axes, averaged over time interval and
1711 * expressed in radians per second (rad/s).
1712 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1713 * resolved along body-frame axes, averaged over time interval and
1714 * expressed in radians per second (rad/s).
1715 * @param result instance where new estimated ECEF frame containing new body
1716 * position, velocity and coordinate transformation matrix will be stored.
1717 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1718 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1719 * body-to-ECEF-frame coordinate transformation matrix are
1720 * invalid.
1721 */
1722 public void navigate(
1723 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1724 final double oldVx, final double oldVy, final double oldVz,
1725 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1726 final double angularRateX, final double angularRateY, final double angularRateZ,
1727 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1728 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1729 angularRateX, angularRateY, angularRateZ, result);
1730 }
1731
1732 /**
1733 * Runs precision ECEF-frame inertial navigation equations.
1734 *
1735 * @param timeInterval time interval between epochs.
1736 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1737 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1738 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1739 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1740 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1741 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1742 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1743 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1744 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1745 * resolved along body-frame axes, averaged over time interval.
1746 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1747 * resolved along body-frame axes, averaged over time interval.
1748 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1749 * resolved along body-frame axes, averaged over time interval.
1750 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1751 * resolved along body-frame axes, averaged over time interval and
1752 * expressed in radians per second (rad/s).
1753 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1754 * resolved along body-frame axes, averaged over time interval and
1755 * expressed in radians per second (rad/s).
1756 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1757 * resolved along body-frame axes, averaged over time interval and
1758 * expressed in radians per second (rad/s).
1759 * @param result instance where new estimated ECEF frame containing new body
1760 * position, velocity and coordinate transformation matrix will be stored.
1761 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1762 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1763 * body-to-ECEF-frame coordinate transformation matrix are
1764 * invalid.
1765 */
1766 public void navigate(
1767 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1768 final double oldVx, final double oldVy, final double oldVz,
1769 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1770 final double angularRateX, final double angularRateY, final double angularRateZ,
1771 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1772 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1773 angularRateX, angularRateY, angularRateZ, result);
1774 }
1775
1776 /**
1777 * Runs precision ECEF-frame inertial navigation equations.
1778 *
1779 * @param timeInterval time interval between epochs expressed in seconds (s).
1780 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1781 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1782 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1783 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1784 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1785 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1786 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1787 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1788 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1789 * resolved along body-frame axes, averaged over time interval.
1790 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1791 * resolved along body-frame axes, averaged over time interval.
1792 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1793 * resolved along body-frame axes, averaged over time interval.
1794 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1795 * resolved along body-frame axes, averaged over time interval and
1796 * expressed in radians per second (rad/s).
1797 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1798 * resolved along body-frame axes, averaged over time interval and
1799 * expressed in radians per second (rad/s).
1800 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1801 * resolved along body-frame axes, averaged over time interval and
1802 * expressed in radians per second (rad/s).
1803 * @param result instance where new estimated ECEF frame containing new body
1804 * position, velocity and coordinate transformation matrix will be stored.
1805 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1806 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1807 * body-to-ECEF-frame coordinate transformation matrix are
1808 * invalid.
1809 */
1810 public void navigate(
1811 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1812 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
1813 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1814 final double angularRateX, final double angularRateY, final double angularRateZ,
1815 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1816 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
1817 angularRateX, angularRateY, angularRateZ, result);
1818 }
1819
1820 /**
1821 * Runs precision ECEF-frame inertial navigation equations.
1822 *
1823 * @param timeInterval time interval between epochs.
1824 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1825 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1826 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1827 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1828 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1829 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1830 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1831 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1832 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1833 * resolved along body-frame axes, averaged over time interval.
1834 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1835 * resolved along body-frame axes, averaged over time interval.
1836 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1837 * resolved along body-frame axes, averaged over time interval.
1838 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1839 * resolved along body-frame axes, averaged over time interval and
1840 * expressed in radians per second (rad/s).
1841 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1842 * resolved along body-frame axes, averaged over time interval and
1843 * expressed in radians per second (rad/s).
1844 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1845 * resolved along body-frame axes, averaged over time interval and
1846 * expressed in radians per second (rad/s).
1847 * @param result instance where new estimated ECEF frame containing new body
1848 * position, velocity and coordinate transformation matrix will be stored.
1849 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1850 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1851 * body-to-ECEF-frame coordinate transformation matrix are
1852 * invalid.
1853 */
1854 public void navigate(
1855 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
1856 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
1857 final Acceleration fx, final Acceleration fy, final Acceleration fz,
1858 final double angularRateX, final double angularRateY, final double angularRateZ,
1859 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1860 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
1861 angularRateX, angularRateY, angularRateZ, result);
1862 }
1863
1864 /**
1865 * Runs precision ECEF-frame inertial navigation equations.
1866 *
1867 * @param timeInterval time interval between epochs expressed in seconds (s).
1868 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1869 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1870 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1871 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1872 * resolved along body-frame axes, averaged over time interval.
1873 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1874 * resolved along body-frame axes, averaged over time interval.
1875 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1876 * resolved along body-frame axes, averaged over time interval.
1877 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1878 * resolved along body-frame axes, averaged over time interval and
1879 * expressed in radians per second (rad/s).
1880 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1881 * resolved along body-frame axes, averaged over time interval and
1882 * expressed in radians per second (rad/s).
1883 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1884 * resolved along body-frame axes, averaged over time interval and
1885 * expressed in radians per second (rad/s).
1886 * @param result instance where new estimated ECEF frame containing new body
1887 * position, velocity and coordinate transformation matrix will be stored.
1888 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1889 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1890 * body-to-ECEF-frame coordinate transformation matrix are
1891 * invalid.
1892 */
1893 public void navigate(
1894 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1895 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
1896 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1897 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1898 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
1899 result);
1900 }
1901
1902 /**
1903 * Runs precision ECEF-frame inertial navigation equations.
1904 *
1905 * @param timeInterval time interval between epochs.
1906 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
1907 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1908 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
1909 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1910 * resolved along body-frame axes, averaged over time interval.
1911 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1912 * resolved along body-frame axes, averaged over time interval.
1913 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1914 * resolved along body-frame axes, averaged over time interval.
1915 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1916 * resolved along body-frame axes, averaged over time interval and
1917 * expressed in radians per second (rad/s).
1918 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1919 * resolved along body-frame axes, averaged over time interval and
1920 * expressed in radians per second (rad/s).
1921 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1922 * resolved along body-frame axes, averaged over time interval and
1923 * expressed in radians per second (rad/s).
1924 * @param result instance where new estimated ECEF frame containing new body
1925 * position, velocity and coordinate transformation matrix will be stored.
1926 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1927 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1928 * body-to-ECEF-frame coordinate transformation matrix are
1929 * invalid.
1930 */
1931 public void navigate(
1932 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
1933 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
1934 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
1935 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1936 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
1937 result);
1938 }
1939
1940 /**
1941 * Runs precision ECEF-frame inertial navigation equations.
1942 *
1943 * @param timeInterval time interval between epochs expressed in seconds (s).
1944 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1945 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1946 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1947 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1948 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1949 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1950 * @param oldC previous body-to-ECEF-frame coordinate transformation.
1951 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
1952 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1953 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
1954 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1955 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
1956 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
1957 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
1958 * resolved along body-frame axes, averaged over time interval and
1959 * expressed in meters per squared second (m/s^2).
1960 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
1961 * resolved along body-frame axes, averaged over time interval and
1962 * expressed in meters per squared second (m/s^2).
1963 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
1964 * resolved along body-frame axes, averaged over time interval and
1965 * expressed in meters per squared second (m/s^2).
1966 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
1967 * resolved along body-frame axes, averaged over time interval.
1968 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
1969 * resolved along body-frame axes, averaged over time interval.
1970 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
1971 * resolved along body-frame axes, averaged over time interval.
1972 * @param result instance where new estimated ECEF frame containing new body
1973 * position, velocity and coordinate transformation matrix will be stored.
1974 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
1975 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
1976 * body-to-ECEF-frame coordinate transformation matrix are
1977 * invalid.
1978 */
1979 public void navigate(
1980 final double timeInterval, final double oldX, final double oldY, final double oldZ,
1981 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
1982 final double fx, final double fy, final double fz,
1983 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
1984 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
1985 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
1986 angularRateX, angularRateY, angularRateZ, result);
1987 }
1988
1989 /**
1990 * Runs precision ECEF-frame inertial navigation equations.
1991 *
1992 * @param timeInterval time interval between epochs.
1993 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
1994 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1995 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
1996 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1997 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
1998 * frame, resolved along ECEF-frame axes and expressed in meters (m).
1999 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2000 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2001 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2002 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2003 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2004 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2005 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2006 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2007 * resolved along body-frame axes, averaged over time interval and
2008 * expressed in meters per squared second (m/s^2).
2009 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2010 * resolved along body-frame axes, averaged over time interval and
2011 * expressed in meters per squared second (m/s^2).
2012 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2013 * resolved along body-frame axes, averaged over time interval and
2014 * expressed in meters per squared second (m/s^2).
2015 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2016 * resolved along body-frame axes, averaged over time interval.
2017 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2018 * resolved along body-frame axes, averaged over time interval.
2019 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2020 * resolved along body-frame axes, averaged over time interval.
2021 * @param result instance where new estimated ECEF frame containing new body
2022 * position, velocity and coordinate transformation matrix will be stored.
2023 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2024 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2025 * body-to-ECEF-frame coordinate transformation matrix are
2026 * invalid.
2027 */
2028 public void navigate(
2029 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2030 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2031 final double fx, final double fy, final double fz,
2032 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2033 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2034 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2035 angularRateX, angularRateY, angularRateZ, result);
2036 }
2037
2038 /**
2039 * Runs precision ECEF-frame inertial navigation equations.
2040 *
2041 * @param timeInterval time interval between epochs expressed in seconds (s).
2042 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2043 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2044 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2045 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2046 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2047 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2048 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2049 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2050 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2051 * resolved along body-frame axes, averaged over time interval and
2052 * expressed in meters per squared second (m/s^2).
2053 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2054 * resolved along body-frame axes, averaged over time interval and
2055 * expressed in meters per squared second (m/s^2).
2056 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2057 * resolved along body-frame axes, averaged over time interval and
2058 * expressed in meters per squared second (m/s^2).
2059 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2060 * resolved along body-frame axes, averaged over time interval.
2061 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2062 * resolved along body-frame axes, averaged over time interval.
2063 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2064 * resolved along body-frame axes, averaged over time interval.
2065 * @param result instance where new estimated ECEF frame containing new body
2066 * position, velocity and coordinate transformation matrix will be stored.
2067 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2068 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2069 * body-to-ECEF-frame coordinate transformation matrix are
2070 * invalid.
2071 */
2072 public void navigate(
2073 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2074 final double oldVx, final double oldVy, final double oldVz,
2075 final double fx, final double fy, final double fz,
2076 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2077 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2078 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
2079 oldC, oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
2080 }
2081
2082 /**
2083 * Runs precision ECEF-frame inertial navigation equations.
2084 *
2085 * @param timeInterval time interval between epochs.
2086 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2087 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2088 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2089 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2090 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2091 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2092 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2093 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2094 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2095 * resolved along body-frame axes, averaged over time interval and
2096 * expressed in meters per squared second (m/s^2).
2097 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2098 * resolved along body-frame axes, averaged over time interval and
2099 * expressed in meters per squared second (m/s^2).
2100 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2101 * resolved along body-frame axes, averaged over time interval and
2102 * expressed in meters per squared second (m/s^2).
2103 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2104 * resolved along body-frame axes, averaged over time interval.
2105 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2106 * resolved along body-frame axes, averaged over time interval.
2107 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2108 * resolved along body-frame axes, averaged over time interval.
2109 * @param result instance where new estimated ECEF frame containing new body
2110 * position, velocity and coordinate transformation matrix will be stored.
2111 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2112 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2113 * body-to-ECEF-frame coordinate transformation matrix are
2114 * invalid.
2115 */
2116 public void navigate(
2117 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2118 final double oldVx, final double oldVy, final double oldVz,
2119 final double fx, final double fy, final double fz,
2120 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2121 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2122 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
2123 oldC, oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
2124 }
2125
2126 /**
2127 * Runs precision ECEF-frame inertial navigation equations.
2128 *
2129 * @param timeInterval time interval between epochs expressed in seconds (s).
2130 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2131 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2132 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2133 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2134 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2135 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2136 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2137 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2138 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2139 * resolved along body-frame axes, averaged over time interval and
2140 * expressed in meters per squared second (m/s^2).
2141 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2142 * resolved along body-frame axes, averaged over time interval and
2143 * expressed in meters per squared second (m/s^2).
2144 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2145 * resolved along body-frame axes, averaged over time interval and
2146 * expressed in meters per squared second (m/s^2).
2147 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2148 * resolved along body-frame axes, averaged over time interval.
2149 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2150 * resolved along body-frame axes, averaged over time interval.
2151 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2152 * resolved along body-frame axes, averaged over time interval.
2153 * @param result instance where new estimated ECEF frame containing new body
2154 * position, velocity and coordinate transformation matrix will be stored.
2155 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2156 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2157 * body-to-ECEF-frame coordinate transformation matrix are
2158 * invalid.
2159 */
2160 public void navigate(
2161 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2162 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
2163 final double fx, final double fy, final double fz,
2164 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2165 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2166 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
2167 angularRateX, angularRateY, angularRateZ, result);
2168 }
2169
2170 /**
2171 * Runs precision ECEF-frame inertial navigation equations.
2172 *
2173 * @param timeInterval time interval between epochs.
2174 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2175 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2176 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2177 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2178 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2179 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2180 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2181 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2182 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2183 * resolved along body-frame axes, averaged over time interval and
2184 * expressed in meters per squared second (m/s^2).
2185 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2186 * resolved along body-frame axes, averaged over time interval and
2187 * expressed in meters per squared second (m/s^2).
2188 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2189 * resolved along body-frame axes, averaged over time interval and
2190 * expressed in meters per squared second (m/s^2).
2191 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2192 * resolved along body-frame axes, averaged over time interval.
2193 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2194 * resolved along body-frame axes, averaged over time interval.
2195 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2196 * resolved along body-frame axes, averaged over time interval.
2197 * @param result instance where new estimated ECEF frame containing new body
2198 * position, velocity and coordinate transformation matrix will be stored.
2199 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2200 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2201 * body-to-ECEF-frame coordinate transformation matrix are
2202 * invalid.
2203 */
2204 public void navigate(
2205 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2206 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
2207 final double fx, final double fy, final double fz,
2208 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2209 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2210 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
2211 angularRateX, angularRateY, angularRateZ, result);
2212 }
2213
2214 /**
2215 * Runs precision ECEF-frame inertial navigation equations.
2216 *
2217 * @param timeInterval time interval between epochs expressed in seconds (s).
2218 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2219 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2220 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2221 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2222 * resolved along body-frame axes, averaged over time interval and
2223 * expressed in meters per squared second (m/s^2).
2224 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2225 * resolved along body-frame axes, averaged over time interval and
2226 * expressed in meters per squared second (m/s^2).
2227 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2228 * resolved along body-frame axes, averaged over time interval and
2229 * expressed in meters per squared second (m/s^2).
2230 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2231 * resolved along body-frame axes, averaged over time interval.
2232 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2233 * resolved along body-frame axes, averaged over time interval.
2234 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2235 * resolved along body-frame axes, averaged over time interval.
2236 * @param result instance where new estimated ECEF frame containing new body
2237 * position, velocity and coordinate transformation matrix will be stored.
2238 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2239 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2240 * body-to-ECEF-frame coordinate transformation matrix are
2241 * invalid.
2242 */
2243 public void navigate(
2244 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2245 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
2246 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2247 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2248 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
2249 result);
2250 }
2251
2252 /**
2253 * Runs precision ECEF-frame inertial navigation equations.
2254 *
2255 * @param timeInterval time interval between epochs.
2256 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2257 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2258 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2259 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2260 * resolved along body-frame axes, averaged over time interval and
2261 * expressed in meters per squared second (m/s^2).
2262 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2263 * resolved along body-frame axes, averaged over time interval and
2264 * expressed in meters per squared second (m/s^2).
2265 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2266 * resolved along body-frame axes, averaged over time interval and
2267 * expressed in meters per squared second (m/s^2).
2268 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2269 * resolved along body-frame axes, averaged over time interval.
2270 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2271 * resolved along body-frame axes, averaged over time interval.
2272 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2273 * resolved along body-frame axes, averaged over time interval.
2274 * @param result instance where new estimated ECEF frame containing new body
2275 * position, velocity and coordinate transformation matrix will be stored.
2276 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2277 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2278 * body-to-ECEF-frame coordinate transformation matrix are
2279 * invalid.
2280 */
2281 public void navigate(
2282 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2283 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
2284 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2285 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2286 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
2287 result);
2288 }
2289
2290 /**
2291 * Runs precision ECEF-frame inertial navigation equations.
2292 *
2293 * @param timeInterval time interval between epochs expressed in seconds (s).
2294 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2295 * frame, resolved along ECEF-frame axes.
2296 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2297 * frame, resolved along ECEF-frame axes.
2298 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2299 * frame, resolved along ECEF-frame axes.
2300 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2301 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2302 * resolved along ECEF-frame axes.
2303 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2304 * resolved along ECEF-frame axes.
2305 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2306 * resolved along ECEF-frame axes.
2307 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2308 * resolved along body-frame axes, averaged over time interval and
2309 * expressed in meters per squared second (m/s^2).
2310 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2311 * resolved along body-frame axes, averaged over time interval and
2312 * expressed in meters per squared second (m/s^2).
2313 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2314 * resolved along body-frame axes, averaged over time interval and
2315 * expressed in meters per squared second (m/s^2).
2316 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2317 * resolved along body-frame axes, averaged over time interval and
2318 * expressed in radians per second (rad/s).
2319 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2320 * resolved along body-frame axes, averaged over time interval and
2321 * expressed in radians per second (rad/s).
2322 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2323 * resolved along body-frame axes, averaged over time interval and
2324 * expressed in radians per second (rad/s).
2325 * @param result instance where new estimated ECEF frame containing new body
2326 * position, velocity and coordinate transformation matrix will be stored.
2327 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2328 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2329 * body-to-ECEF-frame coordinate transformation matrix are
2330 * invalid.
2331 */
2332 public void navigate(
2333 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2334 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2335 final double fx, final double fy, final double fz,
2336 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
2337 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2338 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
2339 angularRateX, angularRateY, angularRateZ, result);
2340 }
2341
2342 /**
2343 * Runs precision ECEF-frame inertial navigation equations.
2344 *
2345 * @param timeInterval time interval between epochs.
2346 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2347 * frame, resolved along ECEF-frame axes.
2348 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2349 * frame, resolved along ECEF-frame axes.
2350 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2351 * frame, resolved along ECEF-frame axes.
2352 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2353 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2354 * resolved along ECEF-frame axes.
2355 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2356 * resolved along ECEF-frame axes.
2357 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2358 * resolved along ECEF-frame axes.
2359 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2360 * resolved along body-frame axes, averaged over time interval and
2361 * expressed in meters per squared second (m/s^2).
2362 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2363 * resolved along body-frame axes, averaged over time interval and
2364 * expressed in meters per squared second (m/s^2).
2365 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2366 * resolved along body-frame axes, averaged over time interval and
2367 * expressed in meters per squared second (m/s^2).
2368 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2369 * resolved along body-frame axes, averaged over time interval and
2370 * expressed in radians per second (rad/s).
2371 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2372 * resolved along body-frame axes, averaged over time interval and
2373 * expressed in radians per second (rad/s).
2374 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2375 * resolved along body-frame axes, averaged over time interval and
2376 * expressed in radians per second (rad/s).
2377 * @param result instance where new estimated ECEF frame containing new body
2378 * position, velocity and coordinate transformation matrix will be stored.
2379 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2380 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2381 * body-to-ECEF-frame coordinate transformation matrix are
2382 * invalid.
2383 */
2384 public void navigate(
2385 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2386 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2387 final double fx, final double fy, final double fz,
2388 final double angularRateX, final double angularRateY, final double angularRateZ,
2389 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2390 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
2391 angularRateX, angularRateY, angularRateZ, result);
2392 }
2393
2394 /**
2395 * Runs precision ECEF-frame inertial navigation equations.
2396 *
2397 * @param timeInterval time interval between epochs expressed in seconds (s).
2398 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2399 * frame, resolved along ECEF-frame axes.
2400 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2401 * frame, resolved along ECEF-frame axes.
2402 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2403 * frame, resolved along ECEF-frame axes.
2404 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2405 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2406 * resolved along ECEF-frame axes.
2407 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2408 * resolved along ECEF-frame axes.
2409 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2410 * resolved along ECEF-frame axes.
2411 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2412 * resolved along body-frame axes, averaged over time interval.
2413 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2414 * resolved along body-frame axes, averaged over time interval.
2415 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2416 * resolved along body-frame axes, averaged over time interval.
2417 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2418 * resolved along body-frame axes, averaged over time interval.
2419 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2420 * resolved along body-frame axes, averaged over time interval.
2421 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2422 * resolved along body-frame axes, averaged over time interval.
2423 * @param result instance where new estimated ECEF frame containing new body
2424 * position, velocity and coordinate transformation matrix will be stored.
2425 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2426 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2427 * body-to-ECEF-frame coordinate transformation matrix are
2428 * invalid.
2429 */
2430 public void navigate(
2431 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2432 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2433 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2434 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2435 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2436 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
2437 angularRateX, angularRateY, angularRateZ, result);
2438 }
2439
2440 /**
2441 * Runs precision ECEF-frame inertial navigation equations.
2442 *
2443 * @param timeInterval time interval between epochs.
2444 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2445 * frame, resolved along ECEF-frame axes.
2446 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2447 * frame, resolved along ECEF-frame axes.
2448 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2449 * frame, resolved along ECEF-frame axes.
2450 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2451 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2452 * resolved along ECEF-frame axes.
2453 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2454 * resolved along ECEF-frame axes.
2455 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2456 * resolved along ECEF-frame axes.
2457 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2458 * resolved along body-frame axes, averaged over time interval.
2459 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2460 * resolved along body-frame axes, averaged over time interval.
2461 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2462 * resolved along body-frame axes, averaged over time interval.
2463 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2464 * resolved along body-frame axes, averaged over time interval.
2465 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2466 * resolved along body-frame axes, averaged over time interval.
2467 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2468 * resolved along body-frame axes, averaged over time interval.
2469 * @param result instance where new estimated ECEF frame containing new body
2470 * position, velocity and coordinate transformation matrix will be stored.
2471 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2472 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2473 * body-to-ECEF-frame coordinate transformation matrix are
2474 * invalid.
2475 */
2476 public void navigate(
2477 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2478 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2479 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2480 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2481 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2482 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
2483 angularRateX, angularRateY, angularRateZ, result);
2484 }
2485
2486 /**
2487 * Runs precision ECEF-frame inertial navigation equations.
2488 *
2489 * @param timeInterval time interval between epochs expressed in seconds (s).
2490 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2491 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2492 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2493 * resolved along ECEF-frame axes.
2494 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2495 * resolved along ECEF-frame axes.
2496 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2497 * resolved along ECEF-frame axes.
2498 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2499 * resolved along body-frame axes, averaged over time interval.
2500 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2501 * resolved along body-frame axes, averaged over time interval.
2502 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2503 * resolved along body-frame axes, averaged over time interval.
2504 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2505 * resolved along body-frame axes, averaged over time interval.
2506 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2507 * resolved along body-frame axes, averaged over time interval.
2508 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2509 * resolved along body-frame axes, averaged over time interval.
2510 * @param result instance where new estimated ECEF frame containing new body
2511 * position, velocity and coordinate transformation matrix will be stored.
2512 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2513 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2514 * body-to-ECEF-frame coordinate transformation matrix are
2515 * invalid.
2516 */
2517 public void navigate(
2518 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2519 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2520 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2521 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2522 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2523 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
2524 angularRateX, angularRateY, angularRateZ, result);
2525 }
2526
2527 /**
2528 * Runs precision ECEF-frame inertial navigation equations.
2529 *
2530 * @param timeInterval time interval between epochs.
2531 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2532 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2533 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2534 * resolved along ECEF-frame axes.
2535 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2536 * resolved along ECEF-frame axes.
2537 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2538 * resolved along ECEF-frame axes.
2539 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2540 * resolved along body-frame axes, averaged over time interval.
2541 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2542 * resolved along body-frame axes, averaged over time interval.
2543 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2544 * resolved along body-frame axes, averaged over time interval.
2545 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2546 * resolved along body-frame axes, averaged over time interval.
2547 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2548 * resolved along body-frame axes, averaged over time interval.
2549 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2550 * resolved along body-frame axes, averaged over time interval.
2551 * @param result instance where new estimated ECEF frame containing new body
2552 * position, velocity and coordinate transformation matrix will be stored.
2553 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2554 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2555 * body-to-ECEF-frame coordinate transformation matrix are
2556 * invalid.
2557 */
2558 public void navigate(
2559 final Time timeInterval, final ECEFPosition oldPosition,
2560 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
2561 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2562 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2563 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2564 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
2565 angularRateX, angularRateY, angularRateZ, result);
2566 }
2567
2568 /**
2569 * Runs precision ECEF-frame inertial navigation equations.
2570 *
2571 * @param timeInterval time interval between epochs expressed in seconds (s).
2572 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2573 * frame, resolved along ECEF-frame axes.
2574 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2575 * frame, resolved along ECEF-frame axes.
2576 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2577 * frame, resolved along ECEF-frame axes.
2578 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2579 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2580 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2581 * resolved along body-frame axes, averaged over time interval.
2582 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2583 * resolved along body-frame axes, averaged over time interval.
2584 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2585 * resolved along body-frame axes, averaged over time interval.
2586 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2587 * resolved along body-frame axes, averaged over time interval.
2588 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2589 * resolved along body-frame axes, averaged over time interval.
2590 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2591 * resolved along body-frame axes, averaged over time interval.
2592 * @param result instance where new estimated ECEF frame containing new body
2593 * position, velocity and coordinate transformation matrix will be stored.
2594 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2595 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2596 * body-to-ECEF-frame coordinate transformation matrix are
2597 * invalid.
2598 */
2599 public void navigate(
2600 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2601 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
2602 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2603 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2604 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2605 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
2606 angularRateX, angularRateY, angularRateZ, result);
2607 }
2608
2609 /**
2610 * Runs precision ECEF-frame inertial navigation equations.
2611 *
2612 * @param timeInterval time interval between epochs.
2613 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2614 * frame, resolved along ECEF-frame axes.
2615 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2616 * frame, resolved along ECEF-frame axes.
2617 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2618 * frame, resolved along ECEF-frame axes.
2619 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2620 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2621 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2622 * resolved along body-frame axes, averaged over time interval.
2623 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2624 * resolved along body-frame axes, averaged over time interval.
2625 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2626 * resolved along body-frame axes, averaged over time interval.
2627 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2628 * resolved along body-frame axes, averaged over time interval.
2629 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2630 * resolved along body-frame axes, averaged over time interval.
2631 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2632 * resolved along body-frame axes, averaged over time interval.
2633 * @param result instance where new estimated ECEF frame containing new body
2634 * position, velocity and coordinate transformation matrix will be stored.
2635 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2636 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2637 * body-to-ECEF-frame coordinate transformation matrix are
2638 * invalid.
2639 */
2640 public void navigate(
2641 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
2642 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
2643 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2644 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2645 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2646 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
2647 angularRateX, angularRateY, angularRateZ, result);
2648 }
2649
2650 /**
2651 * Runs precision ECEF-frame inertial navigation equations.
2652 *
2653 * @param timeInterval time interval between epochs expressed in seconds (s).
2654 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2655 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2656 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2657 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2658 * resolved along body-frame axes, averaged over time interval.
2659 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2660 * resolved along body-frame axes, averaged over time interval.
2661 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2662 * resolved along body-frame axes, averaged over time interval.
2663 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2664 * resolved along body-frame axes, averaged over time interval.
2665 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2666 * resolved along body-frame axes, averaged over time interval.
2667 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2668 * resolved along body-frame axes, averaged over time interval.
2669 * @param result instance where new estimated ECEF frame containing new body
2670 * position, velocity and coordinate transformation matrix will be stored.
2671 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2672 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2673 * body-to-ECEF-frame coordinate transformation matrix are
2674 * invalid.
2675 */
2676 public void navigate(
2677 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2678 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
2679 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2680 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2681 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
2682 angularRateX, angularRateY, angularRateZ, result);
2683 }
2684
2685 /**
2686 * Runs precision ECEF-frame inertial navigation equations.
2687 *
2688 * @param timeInterval time interval between epochs.
2689 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2690 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2691 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2692 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2693 * resolved along body-frame axes, averaged over time interval.
2694 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2695 * resolved along body-frame axes, averaged over time interval.
2696 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2697 * resolved along body-frame axes, averaged over time interval.
2698 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2699 * resolved along body-frame axes, averaged over time interval.
2700 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2701 * resolved along body-frame axes, averaged over time interval.
2702 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2703 * resolved along body-frame axes, averaged over time interval.
2704 * @param result instance where new estimated ECEF frame containing new body
2705 * position, velocity and coordinate transformation matrix will be stored.
2706 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2707 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2708 * body-to-ECEF-frame coordinate transformation matrix are
2709 * invalid.
2710 */
2711 public void navigate(
2712 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2713 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
2714 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2715 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2716 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
2717 result);
2718 }
2719
2720 /**
2721 * Runs precision ECEF-frame inertial navigation equations.
2722 *
2723 * @param timeInterval time interval between epochs expressed in seconds (s).
2724 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2725 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2726 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2727 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2728 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2729 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2730 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2731 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2732 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2733 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2734 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2735 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2736 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2737 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2738 * resolved along body-frame axes, averaged over time interval.
2739 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2740 * resolved along body-frame axes, averaged over time interval.
2741 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2742 * resolved along body-frame axes, averaged over time interval.
2743 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2744 * resolved along body-frame axes, averaged over time interval.
2745 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2746 * resolved along body-frame axes, averaged over time interval.
2747 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2748 * resolved along body-frame axes, averaged over time interval.
2749 * @param result instance where new estimated ECEF frame containing new body
2750 * position, velocity and coordinate transformation matrix will be stored.
2751 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2752 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2753 * body-to-ECEF-frame coordinate transformation matrix are
2754 * invalid.
2755 */
2756 public void navigate(
2757 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2758 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2759 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2760 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2761 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2762 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2763 angularRateX, angularRateY, angularRateZ, result);
2764 }
2765
2766 /**
2767 * Runs precision ECEF-frame inertial navigation equations.
2768 *
2769 * @param timeInterval time interval between epochs.
2770 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2771 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2772 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2773 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2774 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2775 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2776 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2777 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2778 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2779 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2780 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2781 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2782 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2783 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2784 * resolved along body-frame axes, averaged over time interval.
2785 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2786 * resolved along body-frame axes, averaged over time interval.
2787 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2788 * resolved along body-frame axes, averaged over time interval.
2789 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2790 * resolved along body-frame axes, averaged over time interval.
2791 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2792 * resolved along body-frame axes, averaged over time interval.
2793 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2794 * resolved along body-frame axes, averaged over time interval.
2795 * @param result instance where new estimated ECEF frame containing new body
2796 * position, velocity and coordinate transformation matrix will be stored.
2797 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2798 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2799 * body-to-ECEF-frame coordinate transformation matrix are
2800 * invalid.
2801 */
2802 public void navigate(
2803 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2804 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
2805 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2806 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2807 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2808 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2809 angularRateX, angularRateY, angularRateZ, result);
2810 }
2811
2812 /**
2813 * Runs precision ECEF-frame inertial navigation equations.
2814 *
2815 * @param timeInterval time interval between epochs expressed in seconds (s).
2816 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2817 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2818 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2819 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2820 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2821 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2822 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2823 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2824 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2825 * resolved along body-frame axes, averaged over time interval.
2826 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2827 * resolved along body-frame axes, averaged over time interval.
2828 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2829 * resolved along body-frame axes, averaged over time interval.
2830 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2831 * resolved along body-frame axes, averaged over time interval.
2832 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2833 * resolved along body-frame axes, averaged over time interval.
2834 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2835 * resolved along body-frame axes, averaged over time interval.
2836 * @param result instance where new estimated ECEF frame containing new body
2837 * position, velocity and coordinate transformation matrix will be stored.
2838 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2839 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2840 * body-to-ECEF-frame coordinate transformation matrix are
2841 * invalid.
2842 */
2843 public void navigate(
2844 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2845 final double oldVx, final double oldVy, final double oldVz,
2846 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2847 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2848 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2849 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2850 angularRateX, angularRateY, angularRateZ, result);
2851 }
2852
2853 /**
2854 * Runs precision ECEF-frame inertial navigation equations.
2855 *
2856 * @param timeInterval time interval between epochs.
2857 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
2858 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2859 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
2860 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2861 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
2862 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2863 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
2864 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
2865 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2866 * resolved along body-frame axes, averaged over time interval.
2867 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2868 * resolved along body-frame axes, averaged over time interval.
2869 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2870 * resolved along body-frame axes, averaged over time interval.
2871 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2872 * resolved along body-frame axes, averaged over time interval.
2873 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2874 * resolved along body-frame axes, averaged over time interval.
2875 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2876 * resolved along body-frame axes, averaged over time interval.
2877 * @param result instance where new estimated ECEF frame containing new body
2878 * position, velocity and coordinate transformation matrix will be stored.
2879 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2880 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2881 * body-to-ECEF-frame coordinate transformation matrix are
2882 * invalid.
2883 */
2884 public void navigate(
2885 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
2886 final double oldVx, final double oldVy, final double oldVz,
2887 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2888 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2889 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2890 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
2891 angularRateX, angularRateY, angularRateZ, result);
2892 }
2893
2894 /**
2895 * Runs precision ECEF-frame inertial navigation equations.
2896 *
2897 * @param timeInterval time interval between epochs expressed in seconds (s).
2898 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2899 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2900 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2901 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2902 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2903 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2904 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2905 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2906 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2907 * resolved along body-frame axes, averaged over time interval.
2908 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2909 * resolved along body-frame axes, averaged over time interval.
2910 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2911 * resolved along body-frame axes, averaged over time interval.
2912 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2913 * resolved along body-frame axes, averaged over time interval.
2914 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2915 * resolved along body-frame axes, averaged over time interval.
2916 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2917 * resolved along body-frame axes, averaged over time interval.
2918 * @param result instance where new estimated ECEF frame containing new body
2919 * position, velocity and coordinate transformation matrix will be stored.
2920 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2921 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2922 * body-to-ECEF-frame coordinate transformation matrix are
2923 * invalid.
2924 */
2925 public void navigate(
2926 final double timeInterval, final double oldX, final double oldY, final double oldZ,
2927 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
2928 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2929 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2930 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2931 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
2932 angularRateX, angularRateY, angularRateZ, result);
2933 }
2934
2935 /**
2936 * Runs precision ECEF-frame inertial navigation equations.
2937 *
2938 * @param timeInterval time interval between epochs.
2939 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2940 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2941 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2942 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2943 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2944 * frame, resolved along ECEF-frame axes and expressed in meters (m).
2945 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2946 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
2947 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
2948 * resolved along body-frame axes, averaged over time interval.
2949 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
2950 * resolved along body-frame axes, averaged over time interval.
2951 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
2952 * resolved along body-frame axes, averaged over time interval.
2953 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
2954 * resolved along body-frame axes, averaged over time interval.
2955 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
2956 * resolved along body-frame axes, averaged over time interval.
2957 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
2958 * resolved along body-frame axes, averaged over time interval.
2959 * @param result instance where new estimated ECEF frame containing new body
2960 * position, velocity and coordinate transformation matrix will be stored.
2961 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2962 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2963 * body-to-ECEF-frame coordinate transformation matrix are
2964 * invalid.
2965 */
2966 public void navigate(
2967 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
2968 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
2969 final Acceleration fx, final Acceleration fy, final Acceleration fz,
2970 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
2971 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
2972 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
2973 angularRateX, angularRateY, angularRateZ, result);
2974 }
2975
2976 /**
2977 * Runs precision ECEF-frame inertial navigation equations.
2978 *
2979 * @param timeInterval time interval between epochs expressed in seconds (s).
2980 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
2981 * frame, resolved along ECEF-frame axes.
2982 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
2983 * frame, resolved along ECEF-frame axes.
2984 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
2985 * frame, resolved along ECEF-frame axes.
2986 * @param oldC previous body-to-ECEF-frame coordinate transformation.
2987 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
2988 * resolved along ECEF-frame axes.
2989 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
2990 * resolved along ECEF-frame axes.
2991 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
2992 * resolved along ECEF-frame axes.
2993 * @param kinematics body kinematics containing specific forces and angular rates applied to
2994 * the body.
2995 * @param result instance where new estimated ECEF frame containing new body
2996 * position, velocity and coordinate transformation matrix will be stored.
2997 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
2998 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
2999 * body-to-ECEF-frame coordinate transformation matrix are
3000 * invalid.
3001 */
3002 public void navigate(
3003 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
3004 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
3005 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
3006 InvalidSourceAndDestinationFrameTypeException {
3007 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
3008 }
3009
3010 /**
3011 * Runs precision ECEF-frame inertial navigation equations.
3012 *
3013 * @param timeInterval time interval between epochs.
3014 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3015 * frame, resolved along ECEF-frame axes.
3016 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3017 * frame, resolved along ECEF-frame axes.
3018 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3019 * frame, resolved along ECEF-frame axes.
3020 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3021 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
3022 * resolved along ECEF-frame axes.
3023 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
3024 * resolved along ECEF-frame axes.
3025 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
3026 * resolved along ECEF-frame axes.
3027 * @param kinematics body kinematics containing specific forces and angular rates applied to
3028 * the body.
3029 * @param result instance where new estimated ECEF frame containing new body
3030 * position, velocity and coordinate transformation matrix will be stored.
3031 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3032 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3033 * body-to-ECEF-frame coordinate transformation matrix are
3034 * invalid.
3035 */
3036 public void navigate(
3037 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
3038 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
3039 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
3040 InvalidSourceAndDestinationFrameTypeException {
3041 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
3042 }
3043
3044 /**
3045 * Runs precision ECEF-frame inertial navigation equations.
3046 *
3047 * @param timeInterval time interval between epochs expressed in seconds (s).
3048 * @param oldFrame previous ECEF frame containing body position, velocity and
3049 * coordinate transformation matrix.
3050 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3051 * resolved along body-frame axes, averaged over time interval and
3052 * expressed in meters per squared second (m/s^2).
3053 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3054 * resolved along body-frame axes, averaged over time interval and
3055 * expressed in meters per squared second (m/s^2).
3056 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3057 * resolved along body-frame axes, averaged over time interval and
3058 * expressed in meters per squared second (m/s^2).
3059 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3060 * resolved along body-frame axes, averaged over time interval and
3061 * expressed in radians per second (rad/s).
3062 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3063 * resolved along body-frame axes, averaged over time interval and
3064 * expressed in radians per second (rad/s).
3065 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3066 * resolved along body-frame axes, averaged over time interval and
3067 * expressed in radians per second (rad/s).
3068 * @param result instance where new estimated ECEF frame containing new body
3069 * position, velocity and coordinate transformation matrix will be stored.
3070 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3071 */
3072 public void navigate(
3073 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
3074 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
3075 throws InertialNavigatorException {
3076 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3077 }
3078
3079 /**
3080 * Runs precision ECEF-frame inertial navigation equations.
3081 *
3082 * @param timeInterval time interval between epochs.
3083 * @param oldFrame previous ECEF frame containing body position, velocity and
3084 * coordinate transformation matrix.
3085 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3086 * resolved along body-frame axes, averaged over time interval and
3087 * expressed in meters per squared second (m/s^2).
3088 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3089 * resolved along body-frame axes, averaged over time interval and
3090 * expressed in meters per squared second (m/s^2).
3091 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3092 * resolved along body-frame axes, averaged over time interval and
3093 * expressed in meters per squared second (m/s^2).
3094 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3095 * resolved along body-frame axes, averaged over time interval and
3096 * expressed in radians per second (rad/s).
3097 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3098 * resolved along body-frame axes, averaged over time interval and
3099 * expressed in radians per second (rad/s).
3100 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3101 * resolved along body-frame axes, averaged over time interval and
3102 * expressed in radians per second (rad/s).
3103 * @param result instance where new estimated ECEF frame containing new body
3104 * position, velocity and coordinate transformation matrix will be stored.
3105 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3106 */
3107 public void navigate(
3108 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
3109 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
3110 throws InertialNavigatorException {
3111 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3112 }
3113
3114 /**
3115 * Runs precision ECEF-frame inertial navigation equations.
3116 *
3117 * @param timeInterval time interval between epochs expressed in seconds (s).
3118 * @param oldFrame previous ECEF frame containing body position, velocity and
3119 * coordinate transformation matrix.
3120 * @param kinematics body kinematics containing specific forces and angular rates applied to
3121 * the body.
3122 * @param result instance where new estimated ECEF frame containing new body
3123 * position, velocity and coordinate transformation matrix will be stored.
3124 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3125 */
3126 public void navigate(
3127 final double timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics,
3128 final ECEFFrame result) throws InertialNavigatorException {
3129 navigateECEF(timeInterval, oldFrame, kinematics, result);
3130 }
3131
3132 /**
3133 * Runs precision ECEF-frame inertial navigation equations.
3134 *
3135 * @param timeInterval time interval between epochs.
3136 * @param oldFrame previous ECEF frame containing body position, velocity and
3137 * coordinate transformation matrix.
3138 * @param kinematics body kinematics containing specific forces and angular rates applied to
3139 * the body.
3140 * @param result instance where new estimated ECEF frame containing new body
3141 * position, velocity and coordinate transformation matrix will be stored.
3142 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3143 */
3144 public void navigate(
3145 final Time timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics, final ECEFFrame result)
3146 throws InertialNavigatorException {
3147 navigateECEF(timeInterval, oldFrame, kinematics, result);
3148 }
3149
3150 /**
3151 * Runs precision ECEF-frame inertial navigation equations.
3152 *
3153 * @param timeInterval time interval between epochs expressed in seconds (s).
3154 * @param oldFrame previous ECEF frame containing body position, velocity and
3155 * coordinate transformation matrix.
3156 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3157 * resolved along body-frame axes, averaged over time interval.
3158 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3159 * resolved along body-frame axes, averaged over time interval.
3160 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3161 * resolved along body-frame axes, averaged over time interval.
3162 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3163 * resolved along body-frame axes, averaged over time interval and
3164 * expressed in radians per second (rad/s).
3165 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3166 * resolved along body-frame axes, averaged over time interval and
3167 * expressed in radians per second (rad/s).
3168 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3169 * resolved along body-frame axes, averaged over time interval and
3170 * expressed in radians per second (rad/s).
3171 * @param result instance where new estimated ECEF frame containing new body
3172 * position, velocity and coordinate transformation matrix will be stored.
3173 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3174 */
3175 public void navigate(
3176 final double timeInterval, final ECEFFrame oldFrame,
3177 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3178 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
3179 throws InertialNavigatorException {
3180 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3181 }
3182
3183 /**
3184 * Runs precision ECEF-frame inertial navigation equations.
3185 *
3186 * @param timeInterval time interval between epochs.
3187 * @param oldFrame previous ECEF frame containing body position, velocity and
3188 * coordinate transformation matrix.
3189 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3190 * resolved along body-frame axes, averaged over time interval.
3191 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3192 * resolved along body-frame axes, averaged over time interval.
3193 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3194 * resolved along body-frame axes, averaged over time interval.
3195 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3196 * resolved along body-frame axes, averaged over time interval and
3197 * expressed in radians per second (rad/s).
3198 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3199 * resolved along body-frame axes, averaged over time interval and
3200 * expressed in radians per second (rad/s).
3201 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3202 * resolved along body-frame axes, averaged over time interval and
3203 * expressed in radians per second (rad/s).
3204 * @param result instance where new estimated ECEF frame containing new body
3205 * position, velocity and coordinate transformation matrix will be stored.
3206 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3207 */
3208 public void navigate(
3209 final Time timeInterval, final ECEFFrame oldFrame,
3210 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3211 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
3212 throws InertialNavigatorException {
3213 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3214 }
3215
3216 /**
3217 * Runs precision ECEF-frame inertial navigation equations.
3218 *
3219 * @param timeInterval time interval between epochs expressed in seconds (s).
3220 * @param oldFrame previous ECEF frame containing body position, velocity and
3221 * coordinate transformation matrix.
3222 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3223 * resolved along body-frame axes, averaged over time interval and
3224 * expressed in meters per squared second (m/s^2).
3225 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3226 * resolved along body-frame axes, averaged over time interval and
3227 * expressed in meters per squared second (m/s^2).
3228 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3229 * resolved along body-frame axes, averaged over time interval and
3230 * expressed in meters per squared second (m/s^2).
3231 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3232 * resolved along body-frame axes, averaged over time interval.
3233 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3234 * resolved along body-frame axes, averaged over time interval.
3235 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3236 * resolved along body-frame axes, averaged over time interval.
3237 * @param result instance where new estimated ECEF frame containing new body
3238 * position, velocity and coordinate transformation matrix will be stored.
3239 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3240 */
3241 public void navigate(
3242 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
3243 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
3244 final ECEFFrame result) throws InertialNavigatorException {
3245 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3246 }
3247
3248 /**
3249 * Runs precision ECEF-frame inertial navigation equations.
3250 *
3251 * @param timeInterval time interval between epochs.
3252 * @param oldFrame previous ECEF frame containing body position, velocity and
3253 * coordinate transformation matrix.
3254 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3255 * resolved along body-frame axes, averaged over time interval and
3256 * expressed in meters per squared second (m/s^2).
3257 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3258 * resolved along body-frame axes, averaged over time interval and
3259 * expressed in meters per squared second (m/s^2).
3260 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3261 * resolved along body-frame axes, averaged over time interval and
3262 * expressed in meters per squared second (m/s^2).
3263 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3264 * resolved along body-frame axes, averaged over time interval.
3265 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3266 * resolved along body-frame axes, averaged over time interval.
3267 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3268 * resolved along body-frame axes, averaged over time interval.
3269 * @param result instance where new estimated ECEF frame containing new body
3270 * position, velocity and coordinate transformation matrix will be stored.
3271 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3272 */
3273 public void navigate(
3274 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
3275 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
3276 final ECEFFrame result) throws InertialNavigatorException {
3277 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3278 }
3279
3280 /**
3281 * Runs precision ECEF-frame inertial navigation equations.
3282 *
3283 * @param timeInterval time interval between epochs expressed in seconds (s).
3284 * @param oldFrame previous ECEF frame containing body position, velocity and
3285 * coordinate transformation matrix.
3286 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3287 * resolved along body-frame axes, averaged over time interval.
3288 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3289 * resolved along body-frame axes, averaged over time interval.
3290 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3291 * resolved along body-frame axes, averaged over time interval.
3292 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3293 * resolved along body-frame axes, averaged over time interval.
3294 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3295 * resolved along body-frame axes, averaged over time interval.
3296 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3297 * resolved along body-frame axes, averaged over time interval.
3298 * @param result instance where new estimated ECEF frame containing new body
3299 * position, velocity and coordinate transformation matrix will be stored.
3300 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3301 */
3302 public void navigate(
3303 final double timeInterval, final ECEFFrame oldFrame,
3304 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3305 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
3306 final ECEFFrame result) throws InertialNavigatorException {
3307 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3308 }
3309
3310 /**
3311 * Runs precision ECEF-frame inertial navigation equations.
3312 *
3313 * @param timeInterval time interval between epochs.
3314 * @param oldFrame previous ECEF frame containing body position, velocity and
3315 * coordinate transformation matrix.
3316 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3317 * resolved along body-frame axes, averaged over time interval.
3318 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3319 * resolved along body-frame axes, averaged over time interval.
3320 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3321 * resolved along body-frame axes, averaged over time interval.
3322 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3323 * resolved along body-frame axes, averaged over time interval.
3324 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3325 * resolved along body-frame axes, averaged over time interval.
3326 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3327 * resolved along body-frame axes, averaged over time interval.
3328 * @param result instance where new estimated ECEF frame containing new body
3329 * position, velocity and coordinate transformation matrix will be stored.
3330 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3331 */
3332 public void navigate(
3333 final Time timeInterval, final ECEFFrame oldFrame,
3334 final Acceleration fx, final Acceleration fy, final Acceleration fz,
3335 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
3336 final ECEFFrame result) throws InertialNavigatorException {
3337 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
3338 }
3339
3340 /**
3341 * Runs precision ECEF-frame inertial navigation equations.
3342 *
3343 * @param timeInterval time interval between epochs expressed in seconds (s).
3344 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3345 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3346 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3347 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3348 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3349 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3350 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3351 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3352 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3353 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3354 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3355 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3356 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3357 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3358 * resolved along body-frame axes, averaged over time interval and
3359 * expressed in meters per squared second (m/s^2).
3360 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3361 * resolved along body-frame axes, averaged over time interval and
3362 * expressed in meters per squared second (m/s^2).
3363 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3364 * resolved along body-frame axes, averaged over time interval and
3365 * expressed in meters per squared second (m/s^2).
3366 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3367 * resolved along body-frame axes, averaged over time interval and
3368 * expressed in radians per second (rad/s).
3369 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3370 * resolved along body-frame axes, averaged over time interval and
3371 * expressed in radians per second (rad/s).
3372 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3373 * resolved along body-frame axes, averaged over time interval and
3374 * expressed in radians per second (rad/s).
3375 * @return estimated ECEF frame containing new body position, velocity and coordinate
3376 * transformation matrix.
3377 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3378 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3379 * body-to-ECEF-frame coordinate transformation matrix are
3380 * invalid.
3381 */
3382 public ECEFFrame navigateAndReturnNew(
3383 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3384 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3385 final double fx, final double fy, final double fz,
3386 final double angularRateX, final double angularRateY, final double angularRateZ)
3387 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3388 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3389 angularRateX, angularRateY, angularRateZ);
3390 }
3391
3392 /**
3393 * Runs precision ECEF-frame inertial navigation equations.
3394 *
3395 * @param timeInterval time interval between epochs.
3396 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3397 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3398 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3399 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3400 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3401 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3402 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3403 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3404 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3405 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3406 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3407 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3408 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3409 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3410 * resolved along body-frame axes, averaged over time interval and
3411 * expressed in meters per squared second (m/s^2).
3412 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3413 * resolved along body-frame axes, averaged over time interval and
3414 * expressed in meters per squared second (m/s^2).
3415 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3416 * resolved along body-frame axes, averaged over time interval and
3417 * expressed in meters per squared second (m/s^2).
3418 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3419 * resolved along body-frame axes, averaged over time interval and
3420 * expressed in radians per second (rad/s).
3421 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3422 * resolved along body-frame axes, averaged over time interval and
3423 * expressed in radians per second (rad/s).
3424 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3425 * resolved along body-frame axes, averaged over time interval and
3426 * expressed in radians per second (rad/s).
3427 * @return estimated ECEF frame containing new body position, velocity and coordinate
3428 * transformation matrix.
3429 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3430 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3431 * body-to-ECEF-frame coordinate transformation matrix are
3432 * invalid.
3433 */
3434 public ECEFFrame navigateAndReturnNew(
3435 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3436 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3437 final double fx, final double fy, final double fz,
3438 final double angularRateX, final double angularRateY, final double angularRateZ)
3439 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3440 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3441 angularRateX, angularRateY, angularRateZ);
3442 }
3443
3444 /**
3445 * Runs precision ECEF-frame inertial navigation equations.
3446 *
3447 * @param timeInterval time interval between epochs expressed in seconds (s).
3448 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3449 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3450 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3451 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3452 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3453 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3454 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3455 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3456 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3457 * resolved along body-frame axes, averaged over time interval and
3458 * expressed in meters per squared second (m/s^2).
3459 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3460 * resolved along body-frame axes, averaged over time interval and
3461 * expressed in meters per squared second (m/s^2).
3462 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3463 * resolved along body-frame axes, averaged over time interval and
3464 * expressed in meters per squared second (m/s^2).
3465 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3466 * resolved along body-frame axes, averaged over time interval and
3467 * expressed in radians per second (rad/s).
3468 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3469 * resolved along body-frame axes, averaged over time interval and
3470 * expressed in radians per second (rad/s).
3471 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3472 * resolved along body-frame axes, averaged over time interval and
3473 * expressed in radians per second (rad/s).
3474 * @return estimated ECEF frame containing new body position, velocity and coordinate
3475 * transformation matrix.
3476 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3477 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3478 * body-to-ECEF-frame coordinate transformation matrix are
3479 * invalid.
3480 */
3481 public ECEFFrame navigateAndReturnNew(
3482 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3483 final double oldVx, final double oldVy, final double oldVz,
3484 final double fx, final double fy, final double fz,
3485 final double angularRateX, final double angularRateY, final double angularRateZ)
3486 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3487 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3488 angularRateX, angularRateY, angularRateZ);
3489 }
3490
3491 /**
3492 * Runs precision ECEF-frame inertial navigation equations.
3493 *
3494 * @param timeInterval time interval between epochs.
3495 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3496 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3497 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3498 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3499 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3500 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3501 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3502 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3503 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3504 * resolved along body-frame axes, averaged over time interval and
3505 * expressed in meters per squared second (m/s^2).
3506 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3507 * resolved along body-frame axes, averaged over time interval and
3508 * expressed in meters per squared second (m/s^2).
3509 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3510 * resolved along body-frame axes, averaged over time interval and
3511 * expressed in meters per squared second (m/s^2).
3512 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3513 * resolved along body-frame axes, averaged over time interval and
3514 * expressed in radians per second (rad/s).
3515 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3516 * resolved along body-frame axes, averaged over time interval and
3517 * expressed in radians per second (rad/s).
3518 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3519 * resolved along body-frame axes, averaged over time interval and
3520 * expressed in radians per second (rad/s).
3521 * @return estimated ECEF frame containing new body position, velocity and coordinate
3522 * transformation matrix.
3523 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3524 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3525 * body-to-ECEF-frame coordinate transformation matrix are
3526 * invalid.
3527 */
3528 public ECEFFrame navigateAndReturnNew(
3529 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3530 final double oldVx, final double oldVy, final double oldVz,
3531 final double fx, final double fy, final double fz,
3532 final double angularRateX, final double angularRateY, final double angularRateZ)
3533 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3534 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3535 angularRateX, angularRateY, angularRateZ);
3536 }
3537
3538 /**
3539 * Runs precision ECEF-frame inertial navigation equations.
3540 *
3541 * @param timeInterval time interval between epochs expressed in seconds (s).
3542 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3543 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3544 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3545 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3546 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3547 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3548 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3549 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3550 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3551 * resolved along body-frame axes, averaged over time interval and
3552 * expressed in meters per squared second (m/s^2).
3553 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3554 * resolved along body-frame axes, averaged over time interval and
3555 * expressed in meters per squared second (m/s^2).
3556 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3557 * resolved along body-frame axes, averaged over time interval and
3558 * expressed in meters per squared second (m/s^2).
3559 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3560 * resolved along body-frame axes, averaged over time interval and
3561 * expressed in radians per second (rad/s).
3562 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3563 * resolved along body-frame axes, averaged over time interval and
3564 * expressed in radians per second (rad/s).
3565 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3566 * resolved along body-frame axes, averaged over time interval and
3567 * expressed in radians per second (rad/s).
3568 * @return estimated ECEF frame containing new body position, velocity and coordinate
3569 * transformation matrix.
3570 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3571 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3572 * body-to-ECEF-frame coordinate transformation matrix are
3573 * invalid.
3574 */
3575 public ECEFFrame navigateAndReturnNew(
3576 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3577 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
3578 final double fx, final double fy, final double fz,
3579 final double angularRateX, final double angularRateY, final double angularRateZ)
3580 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3581 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
3582 angularRateX, angularRateY, angularRateZ);
3583 }
3584
3585 /**
3586 * Runs precision ECEF-frame inertial navigation equations.
3587 *
3588 * @param timeInterval time interval between epochs.
3589 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3590 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3591 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3592 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3593 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3594 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3595 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3596 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3597 * @param fx specific force x-coordinate of body frame with respect ECEF 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 ECEF 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 ECEF 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 ECEF 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 ECEF 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 ECEF frame,
3613 * resolved along body-frame axes, averaged over time interval and
3614 * expressed in radians per second (rad/s).
3615 * @return estimated ECEF frame containing new body position, velocity and coordinate
3616 * transformation matrix.
3617 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3618 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3619 * body-to-ECEF-frame coordinate transformation matrix are
3620 * invalid.
3621 */
3622 public ECEFFrame navigateAndReturnNew(
3623 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3624 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
3625 final double fx, final double fy, final double fz,
3626 final double angularRateX, final double angularRateY, final double angularRateZ)
3627 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3628 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
3629 angularRateX, angularRateY, angularRateZ);
3630 }
3631
3632 /**
3633 * Runs precision ECEF-frame inertial navigation equations.
3634 *
3635 * @param timeInterval time interval between epochs expressed in seconds (s).
3636 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3637 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3638 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3639 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3640 * resolved along body-frame axes, averaged over time interval and
3641 * expressed in meters per squared second (m/s^2).
3642 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3643 * resolved along body-frame axes, averaged over time interval and
3644 * expressed in meters per squared second (m/s^2).
3645 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3646 * resolved along body-frame axes, averaged over time interval and
3647 * expressed in meters per squared second (m/s^2).
3648 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3649 * resolved along body-frame axes, averaged over time interval and
3650 * expressed in radians per second (rad/s).
3651 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3652 * resolved along body-frame axes, averaged over time interval and
3653 * expressed in radians per second (rad/s).
3654 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3655 * resolved along body-frame axes, averaged over time interval and
3656 * expressed in radians per second (rad/s).
3657 * @return estimated ECEF frame containing new body position, velocity and coordinate
3658 * transformation matrix.
3659 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3660 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3661 * body-to-ECEF-frame coordinate transformation matrix are
3662 * invalid.
3663 */
3664 public ECEFFrame navigateAndReturnNew(
3665 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3666 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
3667 final double angularRateX, final double angularRateY, final double angularRateZ)
3668 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3669 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
3670 angularRateX, angularRateY, angularRateZ);
3671 }
3672
3673 /**
3674 * Runs precision ECEF-frame inertial navigation equations.
3675 *
3676 * @param timeInterval time interval between epochs.
3677 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3678 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3679 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3680 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3681 * resolved along body-frame axes, averaged over time interval and
3682 * expressed in meters per squared second (m/s^2).
3683 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3684 * resolved along body-frame axes, averaged over time interval and
3685 * expressed in meters per squared second (m/s^2).
3686 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3687 * resolved along body-frame axes, averaged over time interval and
3688 * expressed in meters per squared second (m/s^2).
3689 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3690 * resolved along body-frame axes, averaged over time interval and
3691 * expressed in radians per second (rad/s).
3692 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3693 * resolved along body-frame axes, averaged over time interval and
3694 * expressed in radians per second (rad/s).
3695 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3696 * resolved along body-frame axes, averaged over time interval and
3697 * expressed in radians per second (rad/s).
3698 * @return estimated ECEF frame containing new body position, velocity and coordinate
3699 * transformation matrix.
3700 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3701 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3702 * body-to-ECEF-frame coordinate transformation matrix are
3703 * invalid.
3704 */
3705 public ECEFFrame navigateAndReturnNew(
3706 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3707 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
3708 final double angularRateX, final double angularRateY, final double angularRateZ)
3709 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3710 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
3711 angularRateX, angularRateY, angularRateZ);
3712 }
3713
3714 /**
3715 * Runs precision ECEF-frame inertial navigation equations.
3716 *
3717 * @param timeInterval time interval between epochs expressed in seconds (s).
3718 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3719 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3720 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3721 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3722 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3723 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3724 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3725 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3726 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3727 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3728 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3729 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3730 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3731 * @param kinematics body kinematics containing specific forces and angular rates applied to
3732 * the body.
3733 * @return estimated ECEF frame containing new body position, velocity and coordinate
3734 * transformation matrix.
3735 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3736 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3737 * body-to-ECEF-frame coordinate transformation matrix are
3738 * invalid.
3739 */
3740 public ECEFFrame navigateAndReturnNew(
3741 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3742 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3743 final BodyKinematics kinematics) throws InertialNavigatorException,
3744 InvalidSourceAndDestinationFrameTypeException {
3745 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
3746 }
3747
3748 /**
3749 * Runs precision ECEF-frame inertial navigation equations.
3750 *
3751 * @param timeInterval time interval between epochs.
3752 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3753 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3754 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3755 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3756 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3757 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3758 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3759 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3760 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3761 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3762 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3763 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3764 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3765 * @param kinematics body kinematics containing specific forces and angular rates applied to
3766 * the body.
3767 * @return estimated ECEF frame containing new body position, velocity and coordinate
3768 * transformation matrix.
3769 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3770 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3771 * body-to-ECEF-frame coordinate transformation matrix are
3772 * invalid.
3773 */
3774 public ECEFFrame navigateAndReturnNew(
3775 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3776 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
3777 final BodyKinematics kinematics) throws InertialNavigatorException,
3778 InvalidSourceAndDestinationFrameTypeException {
3779 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
3780 }
3781
3782 /**
3783 * Runs precision ECEF-frame inertial navigation equations.
3784 *
3785 * @param timeInterval time interval between epochs expressed in seconds (s).
3786 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3787 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3788 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3789 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3790 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3791 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3792 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3793 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3794 * @param kinematics body kinematics containing specific forces and angular rates applied to
3795 * the body.
3796 * @return estimated ECEF frame containing new body position, velocity and coordinate
3797 * transformation matrix.
3798 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3799 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3800 * body-to-ECEF-frame coordinate transformation matrix are
3801 * invalid.
3802 */
3803 public ECEFFrame navigateAndReturnNew(
3804 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3805 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
3806 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3807 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics);
3808 }
3809
3810 /**
3811 * Runs precision ECEF-frame inertial navigation equations.
3812 *
3813 * @param timeInterval time interval between epochs.
3814 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3815 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3816 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3817 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3818 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3819 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3820 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3821 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3822 * @param kinematics body kinematics containing specific forces and angular rates applied to
3823 * the body.
3824 * @return estimated ECEF frame containing new body position, velocity and coordinate
3825 * transformation matrix.
3826 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3827 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3828 * body-to-ECEF-frame coordinate transformation matrix are
3829 * invalid.
3830 */
3831 public ECEFFrame navigateAndReturnNew(
3832 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3833 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
3834 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3835 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics);
3836 }
3837
3838 /**
3839 * Runs precision ECEF-frame inertial navigation equations.
3840 *
3841 * @param timeInterval time interval between epochs expressed in seconds (s).
3842 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3843 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3844 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3845 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3846 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3847 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3848 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3849 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3850 * @param kinematics body kinematics containing specific forces and angular rates applied to
3851 * the body.
3852 * @return estimated ECEF frame containing new body position, velocity and coordinate
3853 * transformation matrix.
3854 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3855 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3856 * body-to-ECEF-frame coordinate transformation matrix are
3857 * invalid.
3858 */
3859 public ECEFFrame navigateAndReturnNew(
3860 final double timeInterval, final double oldX, final double oldY, final double oldZ,
3861 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
3862 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3863 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics);
3864 }
3865
3866 /**
3867 * Runs precision ECEF-frame inertial navigation equations.
3868 *
3869 * @param timeInterval time interval between epochs.
3870 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
3871 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3872 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
3873 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3874 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
3875 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3876 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3877 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3878 * @param kinematics body kinematics containing specific forces and angular rates applied to
3879 * the body.
3880 * @return estimated ECEF frame containing new body position, velocity and coordinate
3881 * transformation matrix.
3882 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3883 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3884 * body-to-ECEF-frame coordinate transformation matrix are
3885 * invalid.
3886 */
3887 public ECEFFrame navigateAndReturnNew(
3888 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
3889 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
3890 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3891 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics);
3892 }
3893
3894 /**
3895 * Runs precision ECEF-frame inertial navigation equations.
3896 *
3897 * @param timeInterval time interval between epochs expressed in seconds (s).
3898 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3899 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3900 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3901 * @param kinematics body kinematics containing specific forces and angular rates applied to
3902 * the body.
3903 * @return estimated ECEF frame containing new body position, velocity and coordinate
3904 * transformation matrix.
3905 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3906 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3907 * body-to-ECEF-frame coordinate transformation matrix are
3908 * invalid.
3909 */
3910 public ECEFFrame navigateAndReturnNew(
3911 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3912 final ECEFVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
3913 InvalidSourceAndDestinationFrameTypeException {
3914 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics);
3915 }
3916
3917 /**
3918 * Runs precision ECEF-frame inertial navigation equations.
3919 *
3920 * @param timeInterval time interval between epochs.
3921 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
3922 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3923 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
3924 * @param kinematics body kinematics containing specific forces and angular rates applied to
3925 * the body.
3926 * @return estimated ECEF frame containing new body position, velocity and coordinate
3927 * transformation matrix.
3928 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3929 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3930 * body-to-ECEF-frame coordinate transformation matrix are
3931 * invalid.
3932 */
3933 public ECEFFrame navigateAndReturnNew(
3934 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
3935 final ECEFVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
3936 InvalidSourceAndDestinationFrameTypeException {
3937 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics);
3938 }
3939
3940 /**
3941 * Runs precision ECEF-frame inertial navigation equations.
3942 *
3943 * @param timeInterval time interval between epochs expressed in seconds (s).
3944 * @param oldPosition previous cartesian position of body frame with respect ECEF
3945 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3946 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3947 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3948 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3949 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3950 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3951 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
3952 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3953 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
3954 * resolved along body-frame axes, averaged over time interval and
3955 * expressed in meters per squared second (m/s^2).
3956 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
3957 * resolved along body-frame axes, averaged over time interval and
3958 * expressed in meters per squared second (m/s^2).
3959 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
3960 * resolved along body-frame axes, averaged over time interval and
3961 * expressed in meters per squared second (m/s^2).
3962 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
3963 * resolved along body-frame axes, averaged over time interval and
3964 * expressed in radians per second (rad/s).
3965 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
3966 * resolved along body-frame axes, averaged over time interval and
3967 * expressed in radians per second (rad/s).
3968 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
3969 * resolved along body-frame axes, averaged over time interval and
3970 * expressed in radians per second (rad/s).
3971 * @return estimated ECEF frame containing new body position, velocity and coordinate
3972 * transformation matrix.
3973 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
3974 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
3975 * body-to-ECEF-frame coordinate transformation matrix are
3976 * invalid.
3977 */
3978 public ECEFFrame navigateAndReturnNew(
3979 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
3980 final double oldVx, final double oldVy, final double oldVz,
3981 final double fx, final double fy, final double fz,
3982 final double angularRateX, final double angularRateY, final double angularRateZ)
3983 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
3984 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
3985 angularRateX, angularRateY, angularRateZ);
3986 }
3987
3988 /**
3989 * Runs precision ECEF-frame inertial navigation equations.
3990 *
3991 * @param timeInterval time interval between epochs.
3992 * @param oldPosition previous cartesian position of body frame with respect ECEF
3993 * frame, resolved along ECEF-frame axes and expressed in meters (m).
3994 * @param oldC previous body-to-ECEF-frame coordinate transformation.
3995 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
3996 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3997 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
3998 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
3999 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4000 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4001 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4002 * resolved along body-frame axes, averaged over time interval and
4003 * expressed in meters per squared second (m/s^2).
4004 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4005 * resolved along body-frame axes, averaged over time interval and
4006 * expressed in meters per squared second (m/s^2).
4007 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4008 * resolved along body-frame axes, averaged over time interval and
4009 * expressed in meters per squared second (m/s^2).
4010 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4011 * resolved along body-frame axes, averaged over time interval and
4012 * expressed in radians per second (rad/s).
4013 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4014 * resolved along body-frame axes, averaged over time interval and
4015 * expressed in radians per second (rad/s).
4016 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4017 * resolved along body-frame axes, averaged over time interval and
4018 * expressed in radians per second (rad/s).
4019 * @return estimated ECEF frame containing new body position, velocity and coordinate
4020 * transformation matrix.
4021 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4022 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4023 * body-to-ECEF-frame coordinate transformation matrix are
4024 * invalid.
4025 */
4026 public ECEFFrame navigateAndReturnNew(
4027 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4028 final double oldVx, final double oldVy, final double oldVz,
4029 final double fx, final double fy, final double fz,
4030 final double angularRateX, final double angularRateY, final double angularRateZ)
4031 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4032 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4033 angularRateX, angularRateY, angularRateZ);
4034 }
4035
4036 /**
4037 * Runs precision ECEF-frame inertial navigation equations.
4038 *
4039 * @param timeInterval time interval between epochs expressed in seconds (s).
4040 * @param oldPosition previous cartesian position of body frame with respect ECEF
4041 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4042 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4043 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4044 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4045 * resolved along body-frame axes, averaged over time interval and
4046 * expressed in meters per squared second (m/s^2).
4047 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4048 * resolved along body-frame axes, averaged over time interval and
4049 * expressed in meters per squared second (m/s^2).
4050 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4051 * resolved along body-frame axes, averaged over time interval and
4052 * expressed in meters per squared second (m/s^2).
4053 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4054 * resolved along body-frame axes, averaged over time interval and
4055 * expressed in radians per second (rad/s).
4056 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4057 * resolved along body-frame axes, averaged over time interval and
4058 * expressed in radians per second (rad/s).
4059 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4060 * resolved along body-frame axes, averaged over time interval and
4061 * expressed in radians per second (rad/s).
4062 * @return estimated ECEF frame containing new body position, velocity and coordinate
4063 * transformation matrix.
4064 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4065 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4066 * body-to-ECEF-frame coordinate transformation matrix are
4067 * invalid.
4068 */
4069 public ECEFFrame navigateAndReturnNew(
4070 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4071 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
4072 final double angularRateX, final double angularRateY, final double angularRateZ)
4073 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4074 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
4075 angularRateX, angularRateY, angularRateZ);
4076 }
4077
4078 /**
4079 * Runs precision ECEF-frame inertial navigation equations.
4080 *
4081 * @param timeInterval time interval between epochs expressed in seconds (s).
4082 * @param oldPosition previous cartesian position of body frame with respect ECEF
4083 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4084 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4085 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4086 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4087 * resolved along body-frame axes, averaged over time interval and
4088 * expressed in meters per squared second (m/s^2).
4089 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4090 * resolved along body-frame axes, averaged over time interval and
4091 * expressed in meters per squared second (m/s^2).
4092 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4093 * resolved along body-frame axes, averaged over time interval and
4094 * expressed in meters per squared second (m/s^2).
4095 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4096 * resolved along body-frame axes, averaged over time interval and
4097 * expressed in radians per second (rad/s).
4098 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4099 * resolved along body-frame axes, averaged over time interval and
4100 * expressed in radians per second (rad/s).
4101 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4102 * resolved along body-frame axes, averaged over time interval and
4103 * expressed in radians per second (rad/s).
4104 * @return estimated ECEF frame containing new body position, velocity and coordinate
4105 * transformation matrix.
4106 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4107 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4108 * body-to-ECEF-frame coordinate transformation matrix are
4109 * invalid.
4110 */
4111 public ECEFFrame navigateAndReturnNew(
4112 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4113 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
4114 final double angularRateX, final double angularRateY, final double angularRateZ)
4115 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4116 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
4117 angularRateX, angularRateY, angularRateZ);
4118 }
4119
4120 /**
4121 * Runs precision ECEF-frame inertial navigation equations.
4122 *
4123 * @param timeInterval time interval between epochs expressed in seconds (s).
4124 * @param oldPosition previous cartesian position of body frame with respect ECEF
4125 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4126 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4127 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4128 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4129 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4130 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4131 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4132 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4133 * @param kinematics body kinematics containing specific forces and angular rates applied to
4134 * the body.
4135 * @return estimated ECEF frame containing new body position, velocity and coordinate
4136 * transformation matrix.
4137 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4138 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4139 * body-to-ECEF-frame coordinate transformation matrix are
4140 * invalid.
4141 */
4142 public ECEFFrame navigateAndReturnNew(
4143 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4144 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
4145 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4146 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics);
4147 }
4148
4149 /**
4150 * Runs precision ECEF-frame inertial navigation equations.
4151 *
4152 * @param timeInterval time interval between epochs.
4153 * @param oldPosition previous cartesian position of body frame with respect ECEF
4154 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4155 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4156 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4157 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4158 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4159 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4160 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4161 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4162 * @param kinematics body kinematics containing specific forces and angular rates applied to
4163 * the body.
4164 * @return estimated ECEF frame containing new body position, velocity and coordinate
4165 * transformation matrix.
4166 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4167 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4168 * body-to-ECEF-frame coordinate transformation matrix are
4169 * invalid.
4170 */
4171 public ECEFFrame navigateAndReturnNew(
4172 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4173 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
4174 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4175 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics);
4176 }
4177
4178 /**
4179 * Runs precision ECEF-frame inertial navigation equations.
4180 *
4181 * @param timeInterval time interval between epochs expressed in seconds (s).
4182 * @param oldPosition previous cartesian position of body frame with respect ECEF
4183 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4184 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4185 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4186 * @param kinematics body kinematics containing specific forces and angular rates applied to
4187 * the body.
4188 * @return estimated ECEF frame containing new body position, velocity and coordinate
4189 * transformation matrix.
4190 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4191 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4192 * body-to-ECEF-frame coordinate transformation matrix are
4193 * invalid.
4194 */
4195 public ECEFFrame navigateAndReturnNew(
4196 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4197 final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
4198 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4199 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics);
4200 }
4201
4202 /**
4203 * Runs precision ECEF-frame inertial navigation equations.
4204 *
4205 * @param timeInterval time interval between epochs.
4206 * @param oldPosition previous cartesian position of body frame with respect ECEF
4207 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4208 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4209 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4210 * @param kinematics body kinematics containing specific forces and angular rates applied to
4211 * the body.
4212 * @return estimated ECEF frame containing new body position, velocity and coordinate
4213 * transformation matrix.
4214 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4215 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4216 * body-to-ECEF-frame coordinate transformation matrix are
4217 * invalid.
4218 */
4219 public ECEFFrame navigateAndReturnNew(
4220 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
4221 final ECEFVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
4222 InvalidSourceAndDestinationFrameTypeException {
4223 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, kinematics);
4224 }
4225
4226 /**
4227 * Runs precision ECEF-frame inertial navigation equations.
4228 *
4229 * @param timeInterval time interval between epochs expressed in seconds (s).
4230 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4231 * frame, resolved along ECEF-frame axes.
4232 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4233 * frame, resolved along ECEF-frame axes.
4234 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4235 * frame, resolved along ECEF-frame axes.
4236 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4237 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4238 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4239 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4240 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4241 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4242 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4243 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4244 * resolved along body-frame axes, averaged over time interval and
4245 * expressed in meters per squared second (m/s^2).
4246 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4247 * resolved along body-frame axes, averaged over time interval and
4248 * expressed in meters per squared second (m/s^2).
4249 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4250 * resolved along body-frame axes, averaged over time interval and
4251 * expressed in meters per squared second (m/s^2).
4252 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4253 * resolved along body-frame axes, averaged over time interval and
4254 * expressed in radians per second (rad/s).
4255 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4256 * resolved along body-frame axes, averaged over time interval and
4257 * expressed in radians per second (rad/s).
4258 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4259 * resolved along body-frame axes, averaged over time interval and
4260 * expressed in radians per second (rad/s).
4261 * @return estimated ECEF frame containing new body position, velocity and coordinate
4262 * transformation matrix.
4263 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4264 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4265 * body-to-ECEF-frame coordinate transformation matrix are
4266 * invalid.
4267 */
4268 public ECEFFrame navigateAndReturnNew(
4269 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4270 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4271 final double fx, final double fy, final double fz,
4272 final double angularRateX, final double angularRateY, final double angularRateZ)
4273 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4274 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4275 angularRateX, angularRateY, angularRateZ);
4276 }
4277
4278 /**
4279 * Runs precision ECEF-frame inertial navigation equations.
4280 *
4281 * @param timeInterval time interval between epochs.
4282 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4283 * frame, resolved along ECEF-frame axes.
4284 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4285 * frame, resolved along ECEF-frame axes.
4286 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4287 * frame, resolved along ECEF-frame axes.
4288 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4289 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4290 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4291 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4292 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4293 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4294 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4295 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4296 * resolved along body-frame axes, averaged over time interval and
4297 * expressed in meters per squared second (m/s^2).
4298 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4299 * resolved along body-frame axes, averaged over time interval and
4300 * expressed in meters per squared second (m/s^2).
4301 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4302 * resolved along body-frame axes, averaged over time interval and
4303 * expressed in meters per squared second (m/s^2).
4304 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4305 * resolved along body-frame axes, averaged over time interval and
4306 * expressed in radians per second (rad/s).
4307 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4308 * resolved along body-frame axes, averaged over time interval and
4309 * expressed in radians per second (rad/s).
4310 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4311 * resolved along body-frame axes, averaged over time interval and
4312 * expressed in radians per second (rad/s).
4313 * @return estimated ECEF frame containing new body position, velocity and coordinate
4314 * transformation matrix.
4315 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4316 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4317 * body-to-ECEF-frame coordinate transformation matrix are
4318 * invalid.
4319 */
4320 public ECEFFrame navigateAndReturnNew(
4321 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4322 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4323 final double fx, final double fy, final double fz,
4324 final double angularRateX, final double angularRateY, final double angularRateZ)
4325 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4326 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4327 angularRateX, angularRateY, angularRateZ);
4328 }
4329
4330 /**
4331 * Runs precision ECEF-frame inertial navigation equations.
4332 *
4333 * @param timeInterval time interval between epochs expressed in seconds (s).
4334 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4335 * frame, resolved along ECEF-frame axes.
4336 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4337 * frame, resolved along ECEF-frame axes.
4338 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4339 * frame, resolved along ECEF-frame axes.
4340 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4341 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4342 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4343 * resolved along body-frame axes, averaged over time interval and
4344 * expressed in meters per squared second (m/s^2).
4345 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4346 * resolved along body-frame axes, averaged over time interval and
4347 * expressed in meters per squared second (m/s^2).
4348 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4349 * resolved along body-frame axes, averaged over time interval and
4350 * expressed in meters per squared second (m/s^2).
4351 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4352 * resolved along body-frame axes, averaged over time interval and
4353 * expressed in radians per second (rad/s).
4354 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4355 * resolved along body-frame axes, averaged over time interval and
4356 * expressed in radians per second (rad/s).
4357 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4358 * resolved along body-frame axes, averaged over time interval and
4359 * expressed in radians per second (rad/s).
4360 * @return estimated ECEF frame containing new body position, velocity and coordinate
4361 * transformation matrix.
4362 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4363 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4364 * body-to-ECEF-frame coordinate transformation matrix are
4365 * invalid.
4366 */
4367 public ECEFFrame navigateAndReturnNew(
4368 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4369 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
4370 final double fx, final double fy, final double fz,
4371 final double angularRateX, final double angularRateY, final double angularRateZ)
4372 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4373 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
4374 angularRateX, angularRateY, angularRateZ);
4375 }
4376
4377 /**
4378 * Runs precision ECEF-frame inertial navigation equations.
4379 *
4380 * @param timeInterval time interval between epochs.
4381 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4382 * frame, resolved along ECEF-frame axes.
4383 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4384 * frame, resolved along ECEF-frame axes.
4385 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4386 * frame, resolved along ECEF-frame axes.
4387 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4388 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4389 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4390 * resolved along body-frame axes, averaged over time interval and
4391 * expressed in meters per squared second (m/s^2).
4392 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4393 * resolved along body-frame axes, averaged over time interval and
4394 * expressed in meters per squared second (m/s^2).
4395 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4396 * resolved along body-frame axes, averaged over time interval and
4397 * expressed in meters per squared second (m/s^2).
4398 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4399 * resolved along body-frame axes, averaged over time interval and
4400 * expressed in radians per second (rad/s).
4401 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4402 * resolved along body-frame axes, averaged over time interval and
4403 * expressed in radians per second (rad/s).
4404 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4405 * resolved along body-frame axes, averaged over time interval and
4406 * expressed in radians per second (rad/s).
4407 * @return estimated ECEF frame containing new body position, velocity and coordinate
4408 * transformation matrix.
4409 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4410 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4411 * body-to-ECEF-frame coordinate transformation matrix are
4412 * invalid.
4413 */
4414 public ECEFFrame navigateAndReturnNew(
4415 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4416 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
4417 final double fx, final double fy, final double fz,
4418 final double angularRateX, final double angularRateY, final double angularRateZ)
4419 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4420 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
4421 angularRateX, angularRateY, angularRateZ);
4422 }
4423
4424 /**
4425 * Runs precision ECEF-frame inertial navigation equations.
4426 *
4427 * @param timeInterval time interval between epochs expressed in seconds (s).
4428 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4429 * frame, resolved along ECEF-frame axes.
4430 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4431 * frame, resolved along ECEF-frame axes.
4432 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4433 * frame, resolved along ECEF-frame axes.
4434 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4435 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4436 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4437 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4438 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4439 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4440 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4441 * @param kinematics body kinematics containing specific forces and angular rates applied to
4442 * the body.
4443 * @return estimated ECEF frame containing new body position, velocity and coordinate
4444 * transformation matrix.
4445 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4446 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4447 * body-to-ECEF-frame coordinate transformation matrix are
4448 * invalid.
4449 */
4450 public ECEFFrame navigateAndReturnNew(
4451 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4452 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4453 final BodyKinematics kinematics) throws InertialNavigatorException,
4454 InvalidSourceAndDestinationFrameTypeException {
4455 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
4456 }
4457
4458 /**
4459 * Runs precision ECEF-frame inertial navigation equations.
4460 *
4461 * @param timeInterval time interval between epochs.
4462 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4463 * frame, resolved along ECEF-frame axes.
4464 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4465 * frame, resolved along ECEF-frame axes.
4466 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4467 * frame, resolved along ECEF-frame axes.
4468 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4469 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4470 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4471 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4472 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4473 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4474 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4475 * @param kinematics body kinematics containing specific forces and angular rates applied to
4476 * the body.
4477 * @return estimated ECEF frame containing new body position, velocity and coordinate
4478 * transformation matrix.
4479 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4480 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4481 * body-to-ECEF-frame coordinate transformation matrix are
4482 * invalid.
4483 */
4484 public ECEFFrame navigateAndReturnNew(
4485 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4486 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4487 final BodyKinematics kinematics) throws InertialNavigatorException,
4488 InvalidSourceAndDestinationFrameTypeException {
4489 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics);
4490 }
4491
4492 /**
4493 * Runs precision ECEF-frame inertial navigation equations.
4494 *
4495 * @param timeInterval time interval between epochs expressed in seconds (s).
4496 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4497 * frame, resolved along ECEF-frame axes.
4498 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4499 * frame, resolved along ECEF-frame axes.
4500 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4501 * frame, resolved along ECEF-frame axes.
4502 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4503 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4504 * @param kinematics body kinematics containing specific forces and angular rates applied to
4505 * the body.
4506 * @return estimated ECEF frame containing new body position, velocity and coordinate
4507 * transformation matrix.
4508 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4509 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4510 * body-to-ECEF-frame coordinate transformation matrix are
4511 * invalid.
4512 */
4513 public ECEFFrame navigateAndReturnNew(
4514 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4515 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
4516 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4517 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics);
4518 }
4519
4520 /**
4521 * Runs precision ECEF-frame inertial navigation equations.
4522 *
4523 * @param timeInterval time interval between epochs.
4524 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4525 * frame, resolved along ECEF-frame axes.
4526 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4527 * frame, resolved along ECEF-frame axes.
4528 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4529 * frame, resolved along ECEF-frame axes.
4530 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4531 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
4532 * @param kinematics body kinematics containing specific forces and angular rates applied to
4533 * the body.
4534 * @return estimated ECEF frame containing new body position, velocity and coordinate
4535 * transformation matrix.
4536 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4537 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4538 * body-to-ECEF-frame coordinate transformation matrix are
4539 * invalid.
4540 */
4541 public ECEFFrame navigateAndReturnNew(
4542 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
4543 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
4544 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4545 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics);
4546 }
4547
4548 /**
4549 * Runs precision ECEF-frame inertial navigation equations.
4550 *
4551 * @param timeInterval time interval between epochs expressed in seconds (s).
4552 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4553 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4554 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4555 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4556 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4557 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4558 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4559 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4560 * resolved along ECEF-frame axes.
4561 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4562 * resolved along ECEF-frame axes.
4563 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4564 * resolved along ECEF-frame axes.
4565 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4566 * resolved along body-frame axes, averaged over time interval and
4567 * expressed in meters per squared second (m/s^2).
4568 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4569 * resolved along body-frame axes, averaged over time interval and
4570 * expressed in meters per squared second (m/s^2).
4571 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4572 * resolved along body-frame axes, averaged over time interval and
4573 * expressed in meters per squared second (m/s^2).
4574 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4575 * resolved along body-frame axes, averaged over time interval and
4576 * expressed in radians per second (rad/s).
4577 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4578 * resolved along body-frame axes, averaged over time interval and
4579 * expressed in radians per second (rad/s).
4580 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4581 * resolved along body-frame axes, averaged over time interval and
4582 * expressed in radians per second (rad/s).
4583 * @return estimated ECEF frame containing new body position, velocity and coordinate
4584 * transformation matrix.
4585 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4586 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4587 * body-to-ECEF-frame coordinate transformation matrix are
4588 * invalid.
4589 */
4590 public ECEFFrame navigateAndReturnNew(
4591 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4592 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4593 final double fx, final double fy, final double fz,
4594 final double angularRateX, final double angularRateY, final double angularRateZ)
4595 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4596 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC,
4597 oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
4598 }
4599
4600 /**
4601 * Runs precision ECEF-frame inertial navigation equations.
4602 *
4603 * @param timeInterval time interval between epochs.
4604 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4605 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4606 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4607 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4608 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4609 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4610 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4611 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4612 * resolved along ECEF-frame axes.
4613 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4614 * resolved along ECEF-frame axes.
4615 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4616 * resolved along ECEF-frame axes.
4617 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4618 * resolved along body-frame axes, averaged over time interval and
4619 * expressed in meters per squared second (m/s^2).
4620 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4621 * resolved along body-frame axes, averaged over time interval and
4622 * expressed in meters per squared second (m/s^2).
4623 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4624 * resolved along body-frame axes, averaged over time interval and
4625 * expressed in meters per squared second (m/s^2).
4626 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4627 * resolved along body-frame axes, averaged over time interval and
4628 * expressed in radians per second (rad/s).
4629 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4630 * resolved along body-frame axes, averaged over time interval and
4631 * expressed in radians per second (rad/s).
4632 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4633 * resolved along body-frame axes, averaged over time interval and
4634 * expressed in radians per second (rad/s).
4635 * @return estimated ECEF frame containing new body position, velocity and coordinate
4636 * transformation matrix.
4637 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4638 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4639 * body-to-ECEF-frame coordinate transformation matrix are
4640 * invalid.
4641 */
4642 public ECEFFrame navigateAndReturnNew(
4643 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4644 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4645 final double fx, final double fy, final double fz,
4646 final double angularRateX, final double angularRateY, final double angularRateZ)
4647 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4648 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC,
4649 oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
4650 }
4651
4652 /**
4653 * Runs precision ECEF-frame inertial navigation equations.
4654 *
4655 * @param timeInterval time interval between epochs expressed in seconds (s).
4656 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
4657 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4658 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4659 * resolved along ECEF-frame axes.
4660 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4661 * resolved along ECEF-frame axes.
4662 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4663 * resolved along ECEF-frame axes.
4664 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4665 * resolved along body-frame axes, averaged over time interval and
4666 * expressed in meters per squared second (m/s^2).
4667 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4668 * resolved along body-frame axes, averaged over time interval and
4669 * expressed in meters per squared second (m/s^2).
4670 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4671 * resolved along body-frame axes, averaged over time interval and
4672 * expressed in meters per squared second (m/s^2).
4673 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4674 * resolved along body-frame axes, averaged over time interval and
4675 * expressed in radians per second (rad/s).
4676 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4677 * resolved along body-frame axes, averaged over time interval and
4678 * expressed in radians per second (rad/s).
4679 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4680 * resolved along body-frame axes, averaged over time interval and
4681 * expressed in radians per second (rad/s).
4682 * @return estimated ECEF frame containing new body position, velocity and coordinate
4683 * transformation matrix.
4684 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4685 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4686 * body-to-ECEF-frame coordinate transformation matrix are
4687 * invalid.
4688 */
4689 public ECEFFrame navigateAndReturnNew(
4690 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
4691 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4692 final double fx, final double fy, final double fz,
4693 final double angularRateX, final double angularRateY, final double angularRateZ)
4694 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4695 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
4696 angularRateX, angularRateY, angularRateZ);
4697 }
4698
4699 /**
4700 * Runs precision ECEF-frame inertial navigation equations.
4701 *
4702 * @param timeInterval time interval between epochs.
4703 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
4704 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4705 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4706 * resolved along ECEF-frame axes.
4707 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4708 * resolved along ECEF-frame axes.
4709 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4710 * resolved along ECEF-frame axes.
4711 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4712 * resolved along body-frame axes, averaged over time interval and
4713 * expressed in meters per squared second (m/s^2).
4714 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4715 * resolved along body-frame axes, averaged over time interval and
4716 * expressed in meters per squared second (m/s^2).
4717 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4718 * resolved along body-frame axes, averaged over time interval and
4719 * expressed in meters per squared second (m/s^2).
4720 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4721 * resolved along body-frame axes, averaged over time interval and
4722 * expressed in radians per second (rad/s).
4723 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4724 * resolved along body-frame axes, averaged over time interval and
4725 * expressed in radians per second (rad/s).
4726 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4727 * resolved along body-frame axes, averaged over time interval and
4728 * expressed in radians per second (rad/s).
4729 * @return estimated ECEF frame containing new body position, velocity and coordinate
4730 * transformation matrix.
4731 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4732 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4733 * body-to-ECEF-frame coordinate transformation matrix are
4734 * invalid.
4735 */
4736 public ECEFFrame navigateAndReturnNew(
4737 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
4738 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4739 final double fx, final double fy, final double fz,
4740 final double angularRateX, final double angularRateY, final double angularRateZ)
4741 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4742 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
4743 angularRateX, angularRateY, angularRateZ);
4744 }
4745
4746 /**
4747 * Runs precision ECEF-frame inertial navigation equations.
4748 *
4749 * @param timeInterval time interval between epochs expressed in seconds (s).
4750 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4751 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4752 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4753 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4754 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4755 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4756 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4757 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4758 * resolved along ECEF-frame axes.
4759 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4760 * resolved along ECEF-frame axes.
4761 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4762 * resolved along ECEF-frame axes.
4763 * @param kinematics body kinematics containing specific forces and angular rates applied to
4764 * the body.
4765 * @return estimated ECEF frame containing new body position, velocity and coordinate
4766 * transformation matrix.
4767 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4768 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4769 * body-to-ECEF-frame coordinate transformation matrix are
4770 * invalid.
4771 */
4772 public ECEFFrame navigateAndReturnNew(
4773 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4774 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4775 final BodyKinematics kinematics) throws InertialNavigatorException,
4776 InvalidSourceAndDestinationFrameTypeException {
4777 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
4778 kinematics);
4779 }
4780
4781 /**
4782 * Runs precision ECEF-frame inertial navigation equations.
4783 *
4784 * @param timeInterval time interval between epochs.
4785 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4786 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4787 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4788 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4789 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4790 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4791 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4792 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4793 * resolved along ECEF-frame axes.
4794 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4795 * resolved along ECEF-frame axes.
4796 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4797 * resolved along ECEF-frame axes.
4798 * @param kinematics body kinematics containing specific forces and angular rates applied to
4799 * the body.
4800 * @return estimated ECEF frame containing new body position, velocity and coordinate
4801 * transformation matrix.
4802 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4803 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4804 * body-to-ECEF-frame coordinate transformation matrix are
4805 * invalid.
4806 */
4807 public ECEFFrame navigateAndReturnNew(
4808 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4809 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
4810 final BodyKinematics kinematics) throws InertialNavigatorException,
4811 InvalidSourceAndDestinationFrameTypeException {
4812 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
4813 kinematics);
4814 }
4815
4816 /**
4817 * Runs precision ECEF-frame inertial navigation equations.
4818 *
4819 * @param timeInterval time interval between epochs expressed in seconds (s).
4820 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
4821 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4822 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4823 * resolved along ECEF-frame axes.
4824 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4825 * resolved along ECEF-frame axes.
4826 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4827 * resolved along ECEF-frame axes.
4828 * @param kinematics body kinematics containing specific forces and angular rates applied to
4829 * the body.
4830 * @return estimated ECEF frame containing new body position, velocity and coordinate
4831 * transformation matrix.
4832 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4833 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4834 * body-to-ECEF-frame coordinate transformation matrix are
4835 * invalid.
4836 */
4837 public ECEFFrame navigateAndReturnNew(
4838 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
4839 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics)
4840 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4841 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics);
4842 }
4843
4844 /**
4845 * Runs precision ECEF-frame inertial navigation equations.
4846 *
4847 * @param timeInterval time interval between epochs.
4848 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
4849 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4850 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
4851 * resolved along ECEF-frame axes.
4852 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
4853 * resolved along ECEF-frame axes.
4854 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
4855 * resolved along ECEF-frame axes.
4856 * @param kinematics body kinematics containing specific forces and angular rates applied to
4857 * the body.
4858 * @return estimated ECEF frame containing new body position, velocity and coordinate
4859 * transformation matrix.
4860 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4861 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4862 * body-to-ECEF-frame coordinate transformation matrix are
4863 * invalid.
4864 */
4865 public ECEFFrame navigateAndReturnNew(
4866 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
4867 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics)
4868 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4869 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics);
4870 }
4871
4872 /**
4873 * Runs precision ECEF-frame inertial navigation equations.
4874 *
4875 * @param timeInterval time interval between epochs expressed in seconds (s).
4876 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4877 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4878 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4879 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4880 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4881 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4882 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4883 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4884 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4885 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4886 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4887 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4888 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4889 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4890 * resolved along body-frame axes, averaged over time interval.
4891 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4892 * resolved along body-frame axes, averaged over time interval.
4893 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4894 * resolved along body-frame axes, averaged over time interval.
4895 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4896 * resolved along body-frame axes, averaged over time interval and
4897 * expressed in radians per second (rad/s).
4898 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4899 * resolved along body-frame axes, averaged over time interval and
4900 * expressed in radians per second (rad/s).
4901 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4902 * resolved along body-frame axes, averaged over time interval and
4903 * expressed in radians per second (rad/s).
4904 * @return estimated ECEF frame containing new body position, velocity and coordinate
4905 * transformation matrix.
4906 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4907 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4908 * body-to-ECEF-frame coordinate transformation matrix are
4909 * invalid.
4910 */
4911 public ECEFFrame navigateAndReturnNew(
4912 final double timeInterval, final double oldX, final double oldY, final double oldZ,
4913 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4914 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4915 final double angularRateX, final double angularRateY, final double angularRateZ)
4916 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4917 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4918 angularRateX, angularRateY, angularRateZ);
4919 }
4920
4921 /**
4922 * Runs precision ECEF-frame inertial navigation equations.
4923 *
4924 * @param timeInterval time interval between epochs.
4925 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
4926 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4927 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
4928 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4929 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
4930 * frame, resolved along ECEF-frame axes and expressed in meters (m).
4931 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4932 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4933 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4934 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4935 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4936 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4937 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4938 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4939 * resolved along body-frame axes, averaged over time interval.
4940 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4941 * resolved along body-frame axes, averaged over time interval.
4942 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4943 * resolved along body-frame axes, averaged over time interval.
4944 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4945 * resolved along body-frame axes, averaged over time interval and
4946 * expressed in radians per second (rad/s).
4947 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4948 * resolved along body-frame axes, averaged over time interval and
4949 * expressed in radians per second (rad/s).
4950 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4951 * resolved along body-frame axes, averaged over time interval and
4952 * expressed in radians per second (rad/s).
4953 * @return estimated ECEF frame containing new body position, velocity and coordinate
4954 * transformation matrix.
4955 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
4956 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
4957 * body-to-ECEF-frame coordinate transformation matrix are
4958 * invalid.
4959 */
4960 public ECEFFrame navigateAndReturnNew(
4961 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
4962 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
4963 final Acceleration fx, final Acceleration fy, final Acceleration fz,
4964 final double angularRateX, final double angularRateY, final double angularRateZ)
4965 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
4966 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
4967 angularRateX, angularRateY, angularRateZ);
4968 }
4969
4970 /**
4971 * Runs precision ECEF-frame inertial navigation equations.
4972 *
4973 * @param timeInterval time interval between epochs expressed in seconds (s).
4974 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
4975 * @param oldC previous body-to-ECEF-frame coordinate transformation.
4976 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
4977 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4978 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
4979 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4980 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
4981 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
4982 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
4983 * resolved along body-frame axes, averaged over time interval.
4984 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
4985 * resolved along body-frame axes, averaged over time interval.
4986 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
4987 * resolved along body-frame axes, averaged over time interval.
4988 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
4989 * resolved along body-frame axes, averaged over time interval and
4990 * expressed in radians per second (rad/s).
4991 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
4992 * resolved along body-frame axes, averaged over time interval and
4993 * expressed in radians per second (rad/s).
4994 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
4995 * resolved along body-frame axes, averaged over time interval and
4996 * expressed in radians per second (rad/s).
4997 * @return estimated ECEF frame containing new body position, velocity and coordinate
4998 * transformation matrix.
4999 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5000 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5001 * body-to-ECEF-frame coordinate transformation matrix are
5002 * invalid.
5003 */
5004 public ECEFFrame navigateAndReturnNew(
5005 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5006 final double oldVx, final double oldVy, final double oldVz,
5007 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5008 final double angularRateX, final double angularRateY, final double angularRateZ)
5009 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5010 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5011 angularRateX, angularRateY, angularRateZ);
5012 }
5013
5014 /**
5015 * Runs precision ECEF-frame inertial navigation equations.
5016 *
5017 * @param timeInterval time interval between epochs.
5018 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5019 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5020 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
5021 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5022 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
5023 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5024 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
5025 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5026 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5027 * resolved along body-frame axes, averaged over time interval.
5028 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5029 * resolved along body-frame axes, averaged over time interval.
5030 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5031 * resolved along body-frame axes, averaged over time interval.
5032 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5033 * resolved along body-frame axes, averaged over time interval and
5034 * expressed in radians per second (rad/s).
5035 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5036 * resolved along body-frame axes, averaged over time interval and
5037 * expressed in radians per second (rad/s).
5038 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5039 * resolved along body-frame axes, averaged over time interval and
5040 * expressed in radians per second (rad/s).
5041 * @return estimated ECEF frame containing new body position, velocity and coordinate
5042 * transformation matrix.
5043 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5044 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5045 * body-to-ECEF-frame coordinate transformation matrix are
5046 * invalid.
5047 */
5048 public ECEFFrame navigateAndReturnNew(
5049 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5050 final double oldVx, final double oldVy, final double oldVz,
5051 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5052 final double angularRateX, final double angularRateY, final double angularRateZ)
5053 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5054 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5055 angularRateX, angularRateY, angularRateZ);
5056 }
5057
5058 /**
5059 * Runs precision ECEF-frame inertial navigation equations.
5060 *
5061 * @param timeInterval time interval between epochs expressed in seconds (s).
5062 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5063 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5064 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5065 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5066 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5067 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5068 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5069 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5070 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5071 * resolved along body-frame axes, averaged over time interval.
5072 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5073 * resolved along body-frame axes, averaged over time interval.
5074 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5075 * resolved along body-frame axes, averaged over time interval.
5076 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5077 * resolved along body-frame axes, averaged over time interval and
5078 * expressed in radians per second (rad/s).
5079 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5080 * resolved along body-frame axes, averaged over time interval and
5081 * expressed in radians per second (rad/s).
5082 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5083 * resolved along body-frame axes, averaged over time interval and
5084 * expressed in radians per second (rad/s).
5085 * @return estimated ECEF frame containing new body position, velocity and coordinate
5086 * transformation matrix.
5087 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5088 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5089 * body-to-ECEF-frame coordinate transformation matrix are
5090 * invalid.
5091 */
5092 public ECEFFrame navigateAndReturnNew(
5093 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5094 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
5095 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5096 final double angularRateX, final double angularRateY, final double angularRateZ)
5097 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5098 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
5099 angularRateX, angularRateY, angularRateZ);
5100 }
5101
5102 /**
5103 * Runs precision ECEF-frame inertial navigation equations.
5104 *
5105 * @param timeInterval time interval between epochs.
5106 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5107 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5108 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5109 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5110 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5111 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5112 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5113 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5114 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5115 * resolved along body-frame axes, averaged over time interval.
5116 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5117 * resolved along body-frame axes, averaged over time interval.
5118 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5119 * resolved along body-frame axes, averaged over time interval.
5120 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5121 * resolved along body-frame axes, averaged over time interval and
5122 * expressed in radians per second (rad/s).
5123 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5124 * resolved along body-frame axes, averaged over time interval and
5125 * expressed in radians per second (rad/s).
5126 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5127 * resolved along body-frame axes, averaged over time interval and
5128 * expressed in radians per second (rad/s).
5129 * @return estimated ECEF frame containing new body position, velocity and coordinate
5130 * transformation matrix.
5131 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5132 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5133 * body-to-ECEF-frame coordinate transformation matrix are
5134 * invalid.
5135 */
5136 public ECEFFrame navigateAndReturnNew(
5137 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5138 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
5139 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5140 final double angularRateX, final double angularRateY, final double angularRateZ)
5141 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5142 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
5143 angularRateX, angularRateY, angularRateZ);
5144 }
5145
5146 /**
5147 * Runs precision ECEF-frame inertial navigation equations.
5148 *
5149 * @param timeInterval time interval between epochs expressed in seconds (s).
5150 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5151 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5152 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5153 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5154 * resolved along body-frame axes, averaged over time interval.
5155 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5156 * resolved along body-frame axes, averaged over time interval.
5157 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5158 * resolved along body-frame axes, averaged over time interval.
5159 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5160 * resolved along body-frame axes, averaged over time interval and
5161 * expressed in radians per second (rad/s).
5162 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5163 * resolved along body-frame axes, averaged over time interval and
5164 * expressed in radians per second (rad/s).
5165 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5166 * resolved along body-frame axes, averaged over time interval and
5167 * expressed in radians per second (rad/s).
5168 * @return estimated ECEF frame containing new body position, velocity and coordinate
5169 * transformation matrix.
5170 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5171 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5172 * body-to-ECEF-frame coordinate transformation matrix are
5173 * invalid.
5174 */
5175 public ECEFFrame navigateAndReturnNew(
5176 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5177 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
5178 final double angularRateX, final double angularRateY, final double angularRateZ)
5179 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5180 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
5181 angularRateX, angularRateY, angularRateZ);
5182 }
5183
5184 /**
5185 * Runs precision ECEF-frame inertial navigation equations.
5186 *
5187 * @param timeInterval time interval between epochs.
5188 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5189 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5190 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5191 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5192 * resolved along body-frame axes, averaged over time interval.
5193 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5194 * resolved along body-frame axes, averaged over time interval.
5195 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5196 * resolved along body-frame axes, averaged over time interval.
5197 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5198 * resolved along body-frame axes, averaged over time interval and
5199 * expressed in radians per second (rad/s).
5200 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5201 * resolved along body-frame axes, averaged over time interval and
5202 * expressed in radians per second (rad/s).
5203 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5204 * resolved along body-frame axes, averaged over time interval and
5205 * expressed in radians per second (rad/s).
5206 * @return estimated ECEF frame containing new body position, velocity and coordinate
5207 * transformation matrix.
5208 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5209 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5210 * body-to-ECEF-frame coordinate transformation matrix are
5211 * invalid.
5212 */
5213 public ECEFFrame navigateAndReturnNew(
5214 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5215 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
5216 final double angularRateX, final double angularRateY, final double angularRateZ)
5217 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5218 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
5219 angularRateX, angularRateY, angularRateZ);
5220 }
5221
5222 /**
5223 * Runs precision ECEF-frame inertial navigation equations.
5224 *
5225 * @param timeInterval time interval between epochs expressed in seconds (s).
5226 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5227 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5228 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5229 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5230 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5231 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5232 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5233 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
5234 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5235 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
5236 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5237 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
5238 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5239 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5240 * resolved along body-frame axes, averaged over time interval and
5241 * expressed in meters per squared second (m/s^2).
5242 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5243 * resolved along body-frame axes, averaged over time interval and
5244 * expressed in meters per squared second (m/s^2).
5245 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5246 * resolved along body-frame axes, averaged over time interval and
5247 * expressed in meters per squared second (m/s^2).
5248 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5249 * resolved along body-frame axes, averaged over time interval.
5250 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5251 * resolved along body-frame axes, averaged over time interval.
5252 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5253 * resolved along body-frame axes, averaged over time interval.
5254 * @return estimated ECEF frame containing new body position, velocity and coordinate
5255 * transformation matrix.
5256 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5257 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5258 * body-to-ECEF-frame coordinate transformation matrix are
5259 * invalid.
5260 */
5261 public ECEFFrame navigateAndReturnNew(
5262 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5263 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5264 final double fx, final double fy, final double fz,
5265 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5266 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5267 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5268 angularRateX, angularRateY, angularRateZ);
5269 }
5270
5271 /**
5272 * Runs precision ECEF-frame inertial navigation equations.
5273 *
5274 * @param timeInterval time interval between epochs.
5275 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5276 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5277 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5278 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5279 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5280 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5281 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5282 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
5283 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5284 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
5285 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5286 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
5287 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5288 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5289 * resolved along body-frame axes, averaged over time interval and
5290 * expressed in meters per squared second (m/s^2).
5291 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5292 * resolved along body-frame axes, averaged over time interval and
5293 * expressed in meters per squared second (m/s^2).
5294 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5295 * resolved along body-frame axes, averaged over time interval and
5296 * expressed in meters per squared second (m/s^2).
5297 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5298 * resolved along body-frame axes, averaged over time interval.
5299 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5300 * resolved along body-frame axes, averaged over time interval.
5301 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5302 * resolved along body-frame axes, averaged over time interval.
5303 * @return estimated ECEF frame containing new body position, velocity and coordinate
5304 * transformation matrix.
5305 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5306 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5307 * body-to-ECEF-frame coordinate transformation matrix are
5308 * invalid.
5309 */
5310 public ECEFFrame navigateAndReturnNew(
5311 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5312 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
5313 final double fx, final double fy, final double fz,
5314 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5315 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5316 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5317 angularRateX, angularRateY, angularRateZ);
5318 }
5319
5320 /**
5321 * Runs precision ECEF-frame inertial navigation equations.
5322 *
5323 * @param timeInterval time interval between epochs expressed in seconds (s).
5324 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5325 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5326 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
5327 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5328 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
5329 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5330 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
5331 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5332 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5333 * resolved along body-frame axes, averaged over time interval and
5334 * expressed in meters per squared second (m/s^2).
5335 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5336 * resolved along body-frame axes, averaged over time interval and
5337 * expressed in meters per squared second (m/s^2).
5338 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5339 * resolved along body-frame axes, averaged over time interval and
5340 * expressed in meters per squared second (m/s^2).
5341 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5342 * resolved along body-frame axes, averaged over time interval.
5343 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5344 * resolved along body-frame axes, averaged over time interval.
5345 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5346 * resolved along body-frame axes, averaged over time interval.
5347 * @return estimated ECEF frame containing new body position, velocity and coordinate
5348 * transformation matrix.
5349 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5350 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5351 * body-to-ECEF-frame coordinate transformation matrix are
5352 * invalid.
5353 */
5354 public ECEFFrame navigateAndReturnNew(
5355 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5356 final double oldVx, final double oldVy, final double oldVz,
5357 final double fx, final double fy, final double fz,
5358 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5359 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5360 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5361 angularRateX, angularRateY, angularRateZ);
5362 }
5363
5364 /**
5365 * Runs precision ECEF-frame inertial navigation equations.
5366 *
5367 * @param timeInterval time interval between epochs.
5368 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5369 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5370 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
5371 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5372 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
5373 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5374 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
5375 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
5376 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5377 * resolved along body-frame axes, averaged over time interval and
5378 * expressed in meters per squared second (m/s^2).
5379 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5380 * resolved along body-frame axes, averaged over time interval and
5381 * expressed in meters per squared second (m/s^2).
5382 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5383 * resolved along body-frame axes, averaged over time interval and
5384 * expressed in meters per squared second (m/s^2).
5385 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5386 * resolved along body-frame axes, averaged over time interval.
5387 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5388 * resolved along body-frame axes, averaged over time interval.
5389 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5390 * resolved along body-frame axes, averaged over time interval.
5391 * @return estimated ECEF frame containing new body position, velocity and coordinate
5392 * transformation matrix.
5393 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5394 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5395 * body-to-ECEF-frame coordinate transformation matrix are
5396 * invalid.
5397 */
5398 public ECEFFrame navigateAndReturnNew(
5399 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5400 final double oldVx, final double oldVy, final double oldVz,
5401 final double fx, final double fy, final double fz,
5402 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5403 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5404 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
5405 angularRateX, angularRateY, angularRateZ);
5406 }
5407
5408 /**
5409 * Runs precision ECEF-frame inertial navigation equations.
5410 *
5411 * @param timeInterval time interval between epochs expressed in seconds (s).
5412 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5413 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5414 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5415 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5416 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5417 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5418 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5419 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5420 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5421 * resolved along body-frame axes, averaged over time interval and
5422 * expressed in meters per squared second (m/s^2).
5423 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5424 * resolved along body-frame axes, averaged over time interval and
5425 * expressed in meters per squared second (m/s^2).
5426 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5427 * resolved along body-frame axes, averaged over time interval and
5428 * expressed in meters per squared second (m/s^2).
5429 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5430 * resolved along body-frame axes, averaged over time interval.
5431 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5432 * resolved along body-frame axes, averaged over time interval.
5433 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5434 * resolved along body-frame axes, averaged over time interval.
5435 * @return estimated ECEF frame containing new body position, velocity and coordinate
5436 * transformation matrix.
5437 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5438 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5439 * body-to-ECEF-frame coordinate transformation matrix are
5440 * invalid.
5441 */
5442 public ECEFFrame navigateAndReturnNew(
5443 final double timeInterval, final double oldX, final double oldY, final double oldZ,
5444 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
5445 final double fx, final double fy, final double fz,
5446 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5447 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5448 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
5449 angularRateX, angularRateY, angularRateZ);
5450 }
5451
5452 /**
5453 * Runs precision ECEF-frame inertial navigation equations.
5454 *
5455 * @param timeInterval time interval between epochs.
5456 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5457 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5458 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5459 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5460 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5461 * frame, resolved along ECEF-frame axes and expressed in meters (m).
5462 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5463 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5464 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5465 * resolved along body-frame axes, averaged over time interval and
5466 * expressed in meters per squared second (m/s^2).
5467 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5468 * resolved along body-frame axes, averaged over time interval and
5469 * expressed in meters per squared second (m/s^2).
5470 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5471 * resolved along body-frame axes, averaged over time interval and
5472 * expressed in meters per squared second (m/s^2).
5473 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5474 * resolved along body-frame axes, averaged over time interval.
5475 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5476 * resolved along body-frame axes, averaged over time interval.
5477 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5478 * resolved along body-frame axes, averaged over time interval.
5479 * @return estimated ECEF frame containing new body position, velocity and coordinate
5480 * transformation matrix.
5481 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5482 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5483 * body-to-ECEF-frame coordinate transformation matrix are
5484 * invalid.
5485 */
5486 public ECEFFrame navigateAndReturnNew(
5487 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
5488 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
5489 final double fx, final double fy, final double fz,
5490 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5491 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5492 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
5493 angularRateX, angularRateY, angularRateZ);
5494 }
5495
5496 /**
5497 * Runs precision ECEF-frame inertial navigation equations.
5498 *
5499 * @param timeInterval time interval between epochs expressed in seconds (s).
5500 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5501 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5502 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5503 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5504 * resolved along body-frame axes, averaged over time interval and
5505 * expressed in meters per squared second (m/s^2).
5506 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5507 * resolved along body-frame axes, averaged over time interval and
5508 * expressed in meters per squared second (m/s^2).
5509 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5510 * resolved along body-frame axes, averaged over time interval and
5511 * expressed in meters per squared second (m/s^2).
5512 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5513 * resolved along body-frame axes, averaged over time interval.
5514 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5515 * resolved along body-frame axes, averaged over time interval.
5516 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5517 * resolved along body-frame axes, averaged over time interval.
5518 * @return estimated ECEF frame containing new body position, velocity and coordinate
5519 * transformation matrix.
5520 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5521 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5522 * body-to-ECEF-frame coordinate transformation matrix are
5523 * invalid.
5524 */
5525 public ECEFFrame navigateAndReturnNew(
5526 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5527 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
5528 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5529 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5530 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
5531 angularRateX, angularRateY, angularRateZ);
5532 }
5533
5534 /**
5535 * Runs precision ECEF-frame inertial navigation equations.
5536 *
5537 * @param timeInterval time interval between epochs expressed in seconds (s).
5538 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5539 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5540 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5541 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5542 * resolved along body-frame axes, averaged over time interval and
5543 * expressed in meters per squared second (m/s^2).
5544 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5545 * resolved along body-frame axes, averaged over time interval and
5546 * expressed in meters per squared second (m/s^2).
5547 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5548 * resolved along body-frame axes, averaged over time interval and
5549 * expressed in meters per squared second (m/s^2).
5550 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5551 * resolved along body-frame axes, averaged over time interval.
5552 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5553 * resolved along body-frame axes, averaged over time interval.
5554 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5555 * resolved along body-frame axes, averaged over time interval.
5556 * @return estimated ECEF frame containing new body position, velocity and coordinate
5557 * transformation matrix.
5558 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5559 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5560 * body-to-ECEF-frame coordinate transformation matrix are
5561 * invalid.
5562 */
5563 public ECEFFrame navigateAndReturnNew(
5564 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5565 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
5566 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5567 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5568 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
5569 angularRateX, angularRateY, angularRateZ);
5570 }
5571
5572 /**
5573 * Runs precision ECEF-frame inertial navigation equations.
5574 *
5575 * @param timeInterval time interval between epochs expressed in seconds (s).
5576 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5577 * frame, resolved along ECEF-frame axes.
5578 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5579 * frame, resolved along ECEF-frame axes.
5580 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5581 * frame, resolved along ECEF-frame axes.
5582 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5583 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
5584 * resolved along ECEF-frame axes.
5585 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
5586 * resolved along ECEF-frame axes.
5587 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
5588 * resolved along ECEF-frame axes.
5589 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5590 * resolved along body-frame axes, averaged over time interval and
5591 * expressed in meters per squared second (m/s^2).
5592 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5593 * resolved along body-frame axes, averaged over time interval and
5594 * expressed in meters per squared second (m/s^2).
5595 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5596 * resolved along body-frame axes, averaged over time interval and
5597 * expressed in meters per squared second (m/s^2).
5598 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5599 * resolved along body-frame axes, averaged over time interval and
5600 * expressed in radians per second (rad/s).
5601 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5602 * resolved along body-frame axes, averaged over time interval and
5603 * expressed in radians per second (rad/s).
5604 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5605 * resolved along body-frame axes, averaged over time interval and
5606 * expressed in radians per second (rad/s).
5607 * @return estimated ECEF frame containing new body position, velocity and coordinate
5608 * transformation matrix.
5609 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5610 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5611 * body-to-ECEF-frame coordinate transformation matrix are
5612 * invalid.
5613 */
5614 public ECEFFrame navigateAndReturnNew(
5615 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5616 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5617 final double fx, final double fy, final double fz,
5618 final double angularRateX, final double angularRateY, final double angularRateZ)
5619 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5620 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
5621 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
5622 }
5623
5624 /**
5625 * Runs precision ECEF-frame inertial navigation equations.
5626 *
5627 * @param timeInterval time interval between epochs.
5628 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5629 * frame, resolved along ECEF-frame axes.
5630 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5631 * frame, resolved along ECEF-frame axes.
5632 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5633 * frame, resolved along ECEF-frame axes.
5634 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5635 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
5636 * resolved along ECEF-frame axes.
5637 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
5638 * resolved along ECEF-frame axes.
5639 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
5640 * resolved along ECEF-frame axes.
5641 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5642 * resolved along body-frame axes, averaged over time interval and
5643 * expressed in meters per squared second (m/s^2).
5644 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5645 * resolved along body-frame axes, averaged over time interval and
5646 * expressed in meters per squared second (m/s^2).
5647 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5648 * resolved along body-frame axes, averaged over time interval and
5649 * expressed in meters per squared second (m/s^2).
5650 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5651 * resolved along body-frame axes, averaged over time interval and
5652 * expressed in radians per second (rad/s).
5653 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5654 * resolved along body-frame axes, averaged over time interval and
5655 * expressed in radians per second (rad/s).
5656 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5657 * resolved along body-frame axes, averaged over time interval and
5658 * expressed in radians per second (rad/s).
5659 * @return estimated ECEF frame containing new body position, velocity and coordinate
5660 * transformation matrix.
5661 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5662 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5663 * body-to-ECEF-frame coordinate transformation matrix are
5664 * invalid.
5665 */
5666 public ECEFFrame navigateAndReturnNew(
5667 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5668 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5669 final double fx, final double fy, final double fz,
5670 final double angularRateX, final double angularRateY, final double angularRateZ)
5671 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5672 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
5673 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
5674 }
5675
5676 /**
5677 * Runs precision ECEF-frame inertial navigation equations.
5678 *
5679 * @param timeInterval time interval between epochs expressed in seconds (s).
5680 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5681 * frame, resolved along ECEF-frame axes.
5682 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5683 * frame, resolved along ECEF-frame axes.
5684 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5685 * frame, resolved along ECEF-frame axes.
5686 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5687 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
5688 * resolved along ECEF-frame axes.
5689 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
5690 * resolved along ECEF-frame axes.
5691 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
5692 * resolved along ECEF-frame axes.
5693 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5694 * resolved along body-frame axes, averaged over time interval.
5695 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5696 * resolved along body-frame axes, averaged over time interval.
5697 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5698 * resolved along body-frame axes, averaged over time interval.
5699 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5700 * resolved along body-frame axes, averaged over time interval.
5701 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5702 * resolved along body-frame axes, averaged over time interval.
5703 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5704 * resolved along body-frame axes, averaged over time interval.
5705 * @return estimated ECEF frame containing new body position, velocity and coordinate
5706 * transformation matrix.
5707 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5708 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5709 * body-to-ECEF-frame coordinate transformation matrix are
5710 * invalid.
5711 */
5712 public ECEFFrame navigateAndReturnNew(
5713 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5714 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5715 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5716 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5717 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5718 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC,
5719 oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
5720 }
5721
5722 /**
5723 * Runs precision ECEF-frame inertial navigation equations.
5724 *
5725 * @param timeInterval time interval between epochs.
5726 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5727 * frame, resolved along ECEF-frame axes.
5728 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5729 * frame, resolved along ECEF-frame axes.
5730 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5731 * frame, resolved along ECEF-frame axes.
5732 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5733 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
5734 * resolved along ECEF-frame axes.
5735 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
5736 * resolved along ECEF-frame axes.
5737 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
5738 * resolved along ECEF-frame axes.
5739 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5740 * resolved along body-frame axes, averaged over time interval.
5741 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5742 * resolved along body-frame axes, averaged over time interval.
5743 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5744 * resolved along body-frame axes, averaged over time interval.
5745 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5746 * resolved along body-frame axes, averaged over time interval.
5747 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5748 * resolved along body-frame axes, averaged over time interval.
5749 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5750 * resolved along body-frame axes, averaged over time interval.
5751 * @return estimated ECEF frame containing new body position, velocity and coordinate
5752 * transformation matrix.
5753 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5754 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5755 * body-to-ECEF-frame coordinate transformation matrix are
5756 * invalid.
5757 */
5758 public ECEFFrame navigateAndReturnNew(
5759 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5760 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5761 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5762 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5763 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5764 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
5765 fx, fy, fz, angularRateX, angularRateY, angularRateZ);
5766 }
5767
5768 /**
5769 * Runs precision ECEF-frame inertial navigation equations.
5770 *
5771 * @param timeInterval time interval between epochs expressed in seconds (s).
5772 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5773 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5774 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
5775 * resolved along ECEF-frame axes.
5776 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
5777 * resolved along ECEF-frame axes.
5778 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
5779 * resolved along ECEF-frame axes.
5780 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5781 * resolved along body-frame axes, averaged over time interval.
5782 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5783 * resolved along body-frame axes, averaged over time interval.
5784 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5785 * resolved along body-frame axes, averaged over time interval.
5786 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5787 * resolved along body-frame axes, averaged over time interval.
5788 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5789 * resolved along body-frame axes, averaged over time interval.
5790 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5791 * resolved along body-frame axes, averaged over time interval.
5792 * @return estimated ECEF frame containing new body position, velocity and coordinate
5793 * transformation matrix.
5794 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5795 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5796 * body-to-ECEF-frame coordinate transformation matrix are
5797 * invalid.
5798 */
5799 public ECEFFrame navigateAndReturnNew(
5800 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5801 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5802 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5803 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5804 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5805 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5806 angularRateX, angularRateY, angularRateZ);
5807 }
5808
5809 /**
5810 * Runs precision ECEF-frame inertial navigation equations.
5811 *
5812 * @param timeInterval time interval between epochs.
5813 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5814 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5815 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
5816 * resolved along ECEF-frame axes.
5817 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
5818 * resolved along ECEF-frame axes.
5819 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
5820 * resolved along ECEF-frame axes.
5821 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5822 * resolved along body-frame axes, averaged over time interval.
5823 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5824 * resolved along body-frame axes, averaged over time interval.
5825 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5826 * resolved along body-frame axes, averaged over time interval.
5827 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5828 * resolved along body-frame axes, averaged over time interval.
5829 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5830 * resolved along body-frame axes, averaged over time interval.
5831 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5832 * resolved along body-frame axes, averaged over time interval.
5833 * @return estimated ECEF frame containing new body position, velocity and coordinate
5834 * transformation matrix.
5835 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5836 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5837 * body-to-ECEF-frame coordinate transformation matrix are
5838 * invalid.
5839 */
5840 public ECEFFrame navigateAndReturnNew(
5841 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5842 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
5843 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5844 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5845 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5846 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
5847 angularRateX, angularRateY, angularRateZ);
5848 }
5849
5850 /**
5851 * Runs precision ECEF-frame inertial navigation equations.
5852 *
5853 * @param timeInterval time interval between epochs expressed in seconds (s).
5854 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5855 * frame, resolved along ECEF-frame axes.
5856 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5857 * frame, resolved along ECEF-frame axes.
5858 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5859 * frame, resolved along ECEF-frame axes.
5860 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5861 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5862 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5863 * resolved along body-frame axes, averaged over time interval.
5864 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5865 * resolved along body-frame axes, averaged over time interval.
5866 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5867 * resolved along body-frame axes, averaged over time interval.
5868 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5869 * resolved along body-frame axes, averaged over time interval.
5870 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5871 * resolved along body-frame axes, averaged over time interval.
5872 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5873 * resolved along body-frame axes, averaged over time interval.
5874 * @return estimated ECEF frame containing new body position, velocity and coordinate
5875 * transformation matrix.
5876 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5877 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5878 * body-to-ECEF-frame coordinate transformation matrix are
5879 * invalid.
5880 */
5881 public ECEFFrame navigateAndReturnNew(
5882 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5883 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
5884 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5885 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5886 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5887 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
5888 angularRateX, angularRateY, angularRateZ);
5889 }
5890
5891 /**
5892 * Runs precision ECEF-frame inertial navigation equations.
5893 *
5894 * @param timeInterval time interval between epochs.
5895 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
5896 * frame, resolved along ECEF-frame axes.
5897 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
5898 * frame, resolved along ECEF-frame axes.
5899 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
5900 * frame, resolved along ECEF-frame axes.
5901 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5902 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5903 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5904 * resolved along body-frame axes, averaged over time interval.
5905 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5906 * resolved along body-frame axes, averaged over time interval.
5907 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5908 * resolved along body-frame axes, averaged over time interval.
5909 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5910 * resolved along body-frame axes, averaged over time interval.
5911 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5912 * resolved along body-frame axes, averaged over time interval.
5913 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5914 * resolved along body-frame axes, averaged over time interval.
5915 * @return estimated ECEF frame containing new body position, velocity and coordinate
5916 * transformation matrix.
5917 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5918 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5919 * body-to-ECEF-frame coordinate transformation matrix are
5920 * invalid.
5921 */
5922 public ECEFFrame navigateAndReturnNew(
5923 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
5924 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
5925 final Acceleration fx, final Acceleration fy, final Acceleration fz,
5926 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5927 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5928 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
5929 angularRateX, angularRateY, angularRateZ);
5930 }
5931
5932 /**
5933 * Runs precision ECEF-frame inertial navigation equations.
5934 *
5935 * @param timeInterval time interval between epochs expressed in seconds (s).
5936 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5937 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5938 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5939 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5940 * resolved along body-frame axes, averaged over time interval.
5941 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5942 * resolved along body-frame axes, averaged over time interval.
5943 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5944 * resolved along body-frame axes, averaged over time interval.
5945 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5946 * resolved along body-frame axes, averaged over time interval.
5947 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5948 * resolved along body-frame axes, averaged over time interval.
5949 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5950 * resolved along body-frame axes, averaged over time interval.
5951 * @return estimated ECEF frame containing new body position, velocity and coordinate
5952 * transformation matrix.
5953 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5954 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5955 * body-to-ECEF-frame coordinate transformation matrix are
5956 * invalid.
5957 */
5958 public ECEFFrame navigateAndReturnNew(
5959 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5960 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
5961 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5962 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5963 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
5964 angularRateX, angularRateY, angularRateZ);
5965 }
5966
5967 /**
5968 * Runs precision ECEF-frame inertial navigation equations.
5969 *
5970 * @param timeInterval time interval between epochs.
5971 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
5972 * @param oldC previous body-to-ECEF-frame coordinate transformation.
5973 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
5974 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
5975 * resolved along body-frame axes, averaged over time interval.
5976 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
5977 * resolved along body-frame axes, averaged over time interval.
5978 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
5979 * resolved along body-frame axes, averaged over time interval.
5980 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
5981 * resolved along body-frame axes, averaged over time interval.
5982 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
5983 * resolved along body-frame axes, averaged over time interval.
5984 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
5985 * resolved along body-frame axes, averaged over time interval.
5986 * @return estimated ECEF frame containing new body position, velocity and coordinate
5987 * transformation matrix.
5988 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
5989 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
5990 * body-to-ECEF-frame coordinate transformation matrix are
5991 * invalid.
5992 */
5993 public ECEFFrame navigateAndReturnNew(
5994 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
5995 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
5996 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
5997 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
5998 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
5999 angularRateX, angularRateY, angularRateZ);
6000 }
6001
6002 /**
6003 * Runs precision ECEF-frame inertial navigation equations.
6004 *
6005 * @param timeInterval time interval between epochs expressed in seconds (s).
6006 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6007 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6008 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6009 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6010 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6011 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6012 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6013 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6014 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6015 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6016 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6017 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6018 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6019 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6020 * resolved along body-frame axes, averaged over time interval.
6021 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6022 * resolved along body-frame axes, averaged over time interval.
6023 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6024 * resolved along body-frame axes, averaged over time interval.
6025 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6026 * resolved along body-frame axes, averaged over time interval.
6027 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6028 * resolved along body-frame axes, averaged over time interval.
6029 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6030 * resolved along body-frame axes, averaged over time interval.
6031 * @return estimated ECEF frame containing new body position, velocity and coordinate
6032 * transformation matrix.
6033 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6034 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6035 * body-to-ECEF-frame coordinate transformation matrix are
6036 * invalid.
6037 */
6038 public ECEFFrame navigateAndReturnNew(
6039 final double timeInterval, final double oldX, final double oldY, final double oldZ,
6040 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
6041 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6042 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6043 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6044 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
6045 angularRateX, angularRateY, angularRateZ);
6046 }
6047
6048 /**
6049 * Runs precision ECEF-frame inertial navigation equations.
6050 *
6051 * @param timeInterval time interval between epochs.
6052 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6053 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6054 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6055 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6056 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6057 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6058 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6059 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6060 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6061 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6062 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6063 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6064 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6065 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6066 * resolved along body-frame axes, averaged over time interval.
6067 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6068 * resolved along body-frame axes, averaged over time interval.
6069 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6070 * resolved along body-frame axes, averaged over time interval.
6071 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6072 * resolved along body-frame axes, averaged over time interval.
6073 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6074 * resolved along body-frame axes, averaged over time interval.
6075 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6076 * resolved along body-frame axes, averaged over time interval.
6077 * @return estimated ECEF frame containing new body position, velocity and coordinate
6078 * transformation matrix.
6079 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6080 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6081 * body-to-ECEF-frame coordinate transformation matrix are
6082 * invalid.
6083 */
6084 public ECEFFrame navigateAndReturnNew(
6085 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
6086 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
6087 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6088 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6089 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6090 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
6091 angularRateX, angularRateY, angularRateZ);
6092 }
6093
6094 /**
6095 * Runs precision ECEF-frame inertial navigation equations.
6096 *
6097 * @param timeInterval time interval between epochs expressed in seconds (s).
6098 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
6099 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6100 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6101 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6102 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6103 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6104 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6105 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6106 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6107 * resolved along body-frame axes, averaged over time interval.
6108 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6109 * resolved along body-frame axes, averaged over time interval.
6110 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6111 * resolved along body-frame axes, averaged over time interval.
6112 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6113 * resolved along body-frame axes, averaged over time interval.
6114 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6115 * resolved along body-frame axes, averaged over time interval.
6116 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6117 * resolved along body-frame axes, averaged over time interval.
6118 * @return estimated ECEF frame containing new body position, velocity and coordinate
6119 * transformation matrix.
6120 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6121 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6122 * body-to-ECEF-frame coordinate transformation matrix are
6123 * invalid.
6124 */
6125 public ECEFFrame navigateAndReturnNew(
6126 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
6127 final double oldVx, final double oldVy, final double oldVz,
6128 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6129 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6130 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6131 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
6132 angularRateX, angularRateY, angularRateZ);
6133 }
6134
6135 /**
6136 * Runs precision ECEF-frame inertial navigation equations.
6137 *
6138 * @param timeInterval time interval between epochs.
6139 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
6140 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6141 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6142 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6143 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6144 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6145 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6146 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6147 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6148 * resolved along body-frame axes, averaged over time interval.
6149 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6150 * resolved along body-frame axes, averaged over time interval.
6151 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6152 * resolved along body-frame axes, averaged over time interval.
6153 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6154 * resolved along body-frame axes, averaged over time interval.
6155 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6156 * resolved along body-frame axes, averaged over time interval.
6157 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6158 * resolved along body-frame axes, averaged over time interval.
6159 * @return estimated ECEF frame containing new body position, velocity and coordinate
6160 * transformation matrix.
6161 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6162 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6163 * body-to-ECEF-frame coordinate transformation matrix are
6164 * invalid.
6165 */
6166 public ECEFFrame navigateAndReturnNew(
6167 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
6168 final double oldVx, final double oldVy, final double oldVz,
6169 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6170 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6171 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6172 return navigateECEFAndReturnNew(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
6173 angularRateX, angularRateY, angularRateZ);
6174 }
6175
6176 /**
6177 * Runs precision ECEF-frame inertial navigation equations.
6178 *
6179 * @param timeInterval time interval between epochs expressed in seconds (s).
6180 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6181 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6182 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6183 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6184 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6185 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6186 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6187 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
6188 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6189 * resolved along body-frame axes, averaged over time interval.
6190 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6191 * resolved along body-frame axes, averaged over time interval.
6192 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6193 * resolved along body-frame axes, averaged over time interval.
6194 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6195 * resolved along body-frame axes, averaged over time interval.
6196 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6197 * resolved along body-frame axes, averaged over time interval.
6198 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6199 * resolved along body-frame axes, averaged over time interval.
6200 * @return estimated ECEF frame containing new body position, velocity and coordinate
6201 * transformation matrix.
6202 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6203 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6204 * body-to-ECEF-frame coordinate transformation matrix are
6205 * invalid.
6206 */
6207 public ECEFFrame navigateAndReturnNew(
6208 final double timeInterval, final double oldX, final double oldY, final double oldZ,
6209 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
6210 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6211 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6212 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6213 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
6214 angularRateX, angularRateY, angularRateZ);
6215 }
6216
6217 /**
6218 * Runs precision ECEF-frame inertial navigation equations.
6219 *
6220 * @param timeInterval time interval between epochs.
6221 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6222 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6223 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6224 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6225 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6226 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6227 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6228 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
6229 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6230 * resolved along body-frame axes, averaged over time interval.
6231 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6232 * resolved along body-frame axes, averaged over time interval.
6233 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6234 * resolved along body-frame axes, averaged over time interval.
6235 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6236 * resolved along body-frame axes, averaged over time interval.
6237 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6238 * resolved along body-frame axes, averaged over time interval.
6239 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6240 * resolved along body-frame axes, averaged over time interval.
6241 * @return estimated ECEF frame containing new body position, velocity and coordinate
6242 * transformation matrix.
6243 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6244 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6245 * body-to-ECEF-frame coordinate transformation matrix are
6246 * invalid.
6247 */
6248 public ECEFFrame navigateAndReturnNew(
6249 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
6250 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
6251 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6252 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6253 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6254 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
6255 angularRateX, angularRateY, angularRateZ);
6256 }
6257
6258 /**
6259 * Runs precision ECEF-frame inertial navigation equations.
6260 *
6261 * @param timeInterval time interval between epochs expressed in seconds (s).
6262 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6263 * frame, resolved along ECEF-frame axes.
6264 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6265 * frame, resolved along ECEF-frame axes.
6266 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6267 * frame, resolved along ECEF-frame axes.
6268 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6269 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
6270 * resolved along ECEF-frame axes.
6271 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
6272 * resolved along ECEF-frame axes.
6273 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
6274 * resolved along ECEF-frame axes.
6275 * @param kinematics body kinematics containing specific forces and angular rates applied to
6276 * the body.
6277 * @return estimated ECEF frame containing new body position, velocity and coordinate
6278 * transformation matrix.
6279 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6280 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6281 * body-to-ECEF-frame coordinate transformation matrix are
6282 * invalid.
6283 */
6284 public ECEFFrame navigateAndReturnNew(
6285 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
6286 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
6287 final BodyKinematics kinematics) throws InertialNavigatorException,
6288 InvalidSourceAndDestinationFrameTypeException {
6289 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
6290 kinematics);
6291 }
6292
6293 /**
6294 * Runs precision ECEF-frame inertial navigation equations.
6295 *
6296 * @param timeInterval time interval between epochs.
6297 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6298 * frame, resolved along ECEF-frame axes.
6299 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6300 * frame, resolved along ECEF-frame axes.
6301 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6302 * frame, resolved along ECEF-frame axes.
6303 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6304 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
6305 * resolved along ECEF-frame axes.
6306 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
6307 * resolved along ECEF-frame axes.
6308 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
6309 * resolved along ECEF-frame axes.
6310 * @param kinematics body kinematics containing specific forces and angular rates applied to
6311 * the body.
6312 * @return estimated ECEF frame containing new body position, velocity and coordinate
6313 * transformation matrix.
6314 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6315 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6316 * body-to-ECEF-frame coordinate transformation matrix are
6317 * invalid.
6318 */
6319 public ECEFFrame navigateAndReturnNew(
6320 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
6321 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
6322 final BodyKinematics kinematics) throws InertialNavigatorException,
6323 InvalidSourceAndDestinationFrameTypeException {
6324 return navigateECEFAndReturnNew(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
6325 kinematics);
6326 }
6327
6328 /**
6329 * Runs precision ECEF-frame inertial navigation equations.
6330 *
6331 * @param timeInterval time interval between epochs expressed in seconds (s).
6332 * @param oldFrame previous ECEF frame containing body position, velocity and
6333 * coordinate transformation matrix.
6334 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6335 * resolved along body-frame axes, averaged over time interval and
6336 * expressed in meters per squared second (m/s^2).
6337 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6338 * resolved along body-frame axes, averaged over time interval and
6339 * expressed in meters per squared second (m/s^2).
6340 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6341 * resolved along body-frame axes, averaged over time interval and
6342 * expressed in meters per squared second (m/s^2).
6343 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6344 * resolved along body-frame axes, averaged over time interval and
6345 * expressed in radians per second (rad/s).
6346 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6347 * resolved along body-frame axes, averaged over time interval and
6348 * expressed in radians per second (rad/s).
6349 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6350 * resolved along body-frame axes, averaged over time interval and
6351 * expressed in radians per second (rad/s).
6352 * @return estimated ECEF frame containing new body position, velocity and coordinate
6353 * transformation matrix.
6354 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6355 */
6356 public ECEFFrame navigateAndReturnNew(
6357 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
6358 final double angularRateX, final double angularRateY, final double angularRateZ)
6359 throws InertialNavigatorException {
6360 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6361 }
6362
6363 /**
6364 * Runs precision ECEF-frame inertial navigation equations.
6365 *
6366 * @param timeInterval time interval between epochs.
6367 * @param oldFrame previous ECEF frame containing body position, velocity and
6368 * coordinate transformation matrix.
6369 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6370 * resolved along body-frame axes, averaged over time interval and
6371 * expressed in meters per squared second (m/s^2).
6372 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6373 * resolved along body-frame axes, averaged over time interval and
6374 * expressed in meters per squared second (m/s^2).
6375 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6376 * resolved along body-frame axes, averaged over time interval and
6377 * expressed in meters per squared second (m/s^2).
6378 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6379 * resolved along body-frame axes, averaged over time interval and
6380 * expressed in radians per second (rad/s).
6381 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6382 * resolved along body-frame axes, averaged over time interval and
6383 * expressed in radians per second (rad/s).
6384 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6385 * resolved along body-frame axes, averaged over time interval and
6386 * expressed in radians per second (rad/s).
6387 * @return estimated ECEF frame containing new body position, velocity and coordinate
6388 * transformation matrix.
6389 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6390 */
6391 public ECEFFrame navigateAndReturnNew(
6392 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
6393 final double angularRateX, final double angularRateY, final double angularRateZ)
6394 throws InertialNavigatorException {
6395 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6396 }
6397
6398 /**
6399 * Runs precision ECEF-frame inertial navigation equations.
6400 *
6401 * @param timeInterval time interval between epochs expressed in seconds (s).
6402 * @param oldFrame previous ECEF frame containing body position, velocity and
6403 * coordinate transformation matrix.
6404 * @param kinematics body kinematics containing specific forces and angular rates applied to
6405 * the body.
6406 * @return estimated ECEF frame containing new body position, velocity and coordinate
6407 * transformation matrix.
6408 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6409 */
6410 public ECEFFrame navigateAndReturnNew(
6411 final double timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics)
6412 throws InertialNavigatorException {
6413 return navigateECEFAndReturnNew(timeInterval, oldFrame, kinematics);
6414 }
6415
6416 /**
6417 * Runs precision ECEF-frame inertial navigation equations.
6418 *
6419 * @param timeInterval time interval between epochs.
6420 * @param oldFrame previous ECEF frame containing body position, velocity and
6421 * coordinate transformation matrix.
6422 * @param kinematics body kinematics containing specific forces and angular rates applied to
6423 * the body.
6424 * @return estimated ECEF frame containing new body position, velocity and coordinate
6425 * transformation matrix.
6426 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6427 */
6428 public ECEFFrame navigateAndReturnNew(
6429 final Time timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics)
6430 throws InertialNavigatorException {
6431 return navigateECEFAndReturnNew(timeInterval, oldFrame, kinematics);
6432 }
6433
6434 /**
6435 * Runs precision ECEF-frame inertial navigation equations.
6436 *
6437 * @param timeInterval time interval between epochs expressed in seconds (s).
6438 * @param oldFrame previous ECEF frame containing body position, velocity and
6439 * coordinate transformation matrix.
6440 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6441 * resolved along body-frame axes, averaged over time interval.
6442 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6443 * resolved along body-frame axes, averaged over time interval.
6444 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6445 * resolved along body-frame axes, averaged over time interval.
6446 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6447 * resolved along body-frame axes, averaged over time interval and
6448 * expressed in radians per second (rad/s).
6449 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6450 * resolved along body-frame axes, averaged over time interval and
6451 * expressed in radians per second (rad/s).
6452 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6453 * resolved along body-frame axes, averaged over time interval and
6454 * expressed in radians per second (rad/s).
6455 * @return estimated ECEF frame containing new body position, velocity and coordinate
6456 * transformation matrix.
6457 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6458 */
6459 public ECEFFrame navigateAndReturnNew(
6460 final double timeInterval, final ECEFFrame oldFrame,
6461 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6462 final double angularRateX, final double angularRateY, final double angularRateZ)
6463 throws InertialNavigatorException {
6464 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6465 }
6466
6467 /**
6468 * Runs precision ECEF-frame inertial navigation equations.
6469 *
6470 * @param timeInterval time interval between epochs.
6471 * @param oldFrame previous ECEF frame containing body position, velocity and
6472 * coordinate transformation matrix.
6473 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6474 * resolved along body-frame axes, averaged over time interval.
6475 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6476 * resolved along body-frame axes, averaged over time interval.
6477 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6478 * resolved along body-frame axes, averaged over time interval.
6479 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6480 * resolved along body-frame axes, averaged over time interval and
6481 * expressed in radians per second (rad/s).
6482 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6483 * resolved along body-frame axes, averaged over time interval and
6484 * expressed in radians per second (rad/s).
6485 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6486 * resolved along body-frame axes, averaged over time interval and
6487 * expressed in radians per second (rad/s).
6488 * @return estimated ECEF frame containing new body position, velocity and coordinate
6489 * transformation matrix.
6490 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6491 */
6492 public ECEFFrame navigateAndReturnNew(
6493 final Time timeInterval, final ECEFFrame oldFrame,
6494 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6495 final double angularRateX, final double angularRateY, final double angularRateZ)
6496 throws InertialNavigatorException {
6497 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6498 }
6499
6500 /**
6501 * Runs precision ECEF-frame inertial navigation equations.
6502 *
6503 * @param timeInterval time interval between epochs expressed in seconds (s).
6504 * @param oldFrame previous ECEF frame containing body position, velocity and
6505 * coordinate transformation matrix.
6506 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6507 * resolved along body-frame axes, averaged over time interval and
6508 * expressed in meters per squared second (m/s^2).
6509 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6510 * resolved along body-frame axes, averaged over time interval and
6511 * expressed in meters per squared second (m/s^2).
6512 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6513 * resolved along body-frame axes, averaged over time interval and
6514 * expressed in meters per squared second (m/s^2).
6515 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6516 * resolved along body-frame axes, averaged over time interval.
6517 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6518 * resolved along body-frame axes, averaged over time interval.
6519 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6520 * resolved along body-frame axes, averaged over time interval.
6521 * @return estimated ECEF frame containing new body position, velocity and coordinate
6522 * transformation matrix.
6523 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6524 */
6525 public ECEFFrame navigateAndReturnNew(
6526 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
6527 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6528 throws InertialNavigatorException {
6529 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6530 }
6531
6532 /**
6533 * Runs precision ECEF-frame inertial navigation equations.
6534 *
6535 * @param timeInterval time interval between epochs.
6536 * @param oldFrame previous ECEF frame containing body position, velocity and
6537 * coordinate transformation matrix.
6538 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6539 * resolved along body-frame axes, averaged over time interval and
6540 * expressed in meters per squared second (m/s^2).
6541 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6542 * resolved along body-frame axes, averaged over time interval and
6543 * expressed in meters per squared second (m/s^2).
6544 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6545 * resolved along body-frame axes, averaged over time interval and
6546 * expressed in meters per squared second (m/s^2).
6547 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6548 * resolved along body-frame axes, averaged over time interval.
6549 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6550 * resolved along body-frame axes, averaged over time interval.
6551 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6552 * resolved along body-frame axes, averaged over time interval.
6553 * @return estimated ECEF frame containing new body position, velocity and coordinate
6554 * transformation matrix.
6555 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6556 */
6557 public ECEFFrame navigateAndReturnNew(
6558 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
6559 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6560 throws InertialNavigatorException {
6561 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6562 }
6563
6564 /**
6565 * Runs precision ECEF-frame inertial navigation equations.
6566 *
6567 * @param timeInterval time interval between epochs expressed in seconds (s).
6568 * @param oldFrame previous ECEF frame containing body position, velocity and
6569 * coordinate transformation matrix.
6570 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6571 * resolved along body-frame axes, averaged over time interval.
6572 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6573 * resolved along body-frame axes, averaged over time interval.
6574 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6575 * resolved along body-frame axes, averaged over time interval.
6576 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6577 * resolved along body-frame axes, averaged over time interval.
6578 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6579 * resolved along body-frame axes, averaged over time interval.
6580 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6581 * resolved along body-frame axes, averaged over time interval.
6582 * @return estimated ECEF frame containing new body position, velocity and coordinate
6583 * transformation matrix.
6584 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6585 */
6586 public ECEFFrame navigateAndReturnNew(
6587 final double timeInterval, final ECEFFrame oldFrame,
6588 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6589 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6590 throws InertialNavigatorException {
6591 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6592 }
6593
6594 /**
6595 * Runs precision ECEF-frame inertial navigation equations.
6596 *
6597 * @param timeInterval time interval between epochs.
6598 * @param oldFrame previous ECEF frame containing body position, velocity and
6599 * coordinate transformation matrix.
6600 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6601 * resolved along body-frame axes, averaged over time interval.
6602 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6603 * resolved along body-frame axes, averaged over time interval.
6604 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6605 * resolved along body-frame axes, averaged over time interval.
6606 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6607 * resolved along body-frame axes, averaged over time interval.
6608 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6609 * resolved along body-frame axes, averaged over time interval.
6610 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6611 * resolved along body-frame axes, averaged over time interval.
6612 * @return estimated ECEF frame containing new body position, velocity and coordinate
6613 * transformation matrix.
6614 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6615 */
6616 public ECEFFrame navigateAndReturnNew(
6617 final Time timeInterval, final ECEFFrame oldFrame,
6618 final Acceleration fx, final Acceleration fy, final Acceleration fz,
6619 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
6620 throws InertialNavigatorException {
6621 return navigateECEFAndReturnNew(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ);
6622 }
6623
6624 /**
6625 * Runs precision ECEF-frame inertial navigation equations.
6626 *
6627 * @param timeInterval time interval between epochs expressed in seconds (s).
6628 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6629 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6630 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6631 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6632 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6633 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6634 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6635 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6636 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6637 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6638 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6639 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6640 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6641 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6642 * resolved along body-frame axes, averaged over time interval and
6643 * expressed in meters per squared second (m/s^2).
6644 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6645 * resolved along body-frame axes, averaged over time interval and
6646 * expressed in meters per squared second (m/s^2).
6647 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6648 * resolved along body-frame axes, averaged over time interval and
6649 * expressed in meters per squared second (m/s^2).
6650 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6651 * resolved along body-frame axes, averaged over time interval and
6652 * expressed in radians per second (rad/s).
6653 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6654 * resolved along body-frame axes, averaged over time interval and
6655 * expressed in radians per second (rad/s).
6656 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6657 * resolved along body-frame axes, averaged over time interval and
6658 * expressed in radians per second (rad/s).
6659 * @param result instance where new estimated ECEF frame containing new body
6660 * position, velocity and coordinate transformation matrix will be stored.
6661 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6662 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6663 * body-to-ECEF-frame coordinate transformation matrix are
6664 * invalid.
6665 */
6666 public static void navigateECEF(
6667 final double timeInterval, final double oldX, final double oldY, final double oldZ,
6668 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
6669 final double fx, final double fy, final double fz,
6670 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
6671 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6672
6673 if (!isValidBodyToEcefCoordinateTransformationMatrix(oldC)) {
6674 throw new InvalidSourceAndDestinationFrameTypeException();
6675 }
6676
6677 try {
6678 // Attitude update
6679 // From (2.145) determine the Earth rotation over the update interval
6680 final var alpha = EARTH_ROTATION_RATE * timeInterval;
6681 final var cEarth = CoordinateTransformation.eciToEcefMatrixFromAngle(alpha);
6682
6683 // Calculate attitude increment, magnitude, and skew-symmetric matrix
6684 final var alphaX = angularRateX * timeInterval;
6685 final var alphaY = angularRateY * timeInterval;
6686 final var alphaZ = angularRateZ * timeInterval;
6687
6688 final var alphaNorm = Math.sqrt(alphaX * alphaX + alphaY * alphaY + alphaZ * alphaZ);
6689 final var alphaSkew1 = Utils.skewMatrix(new double[]{alphaX, alphaY, alphaZ});
6690
6691 // Obtain coordinate transformation matrix from the new attitude with
6692 // respect an inertial frame to the old using Rodrigues' formula, (5.73)
6693 final var cNewOld = Matrix.identity(ROWS, ROWS);
6694 if (alphaNorm > ALPHA_THRESHOLD) {
6695 final var alphaNorm2 = alphaNorm * alphaNorm;
6696 final var value1 = Math.sin(alphaNorm) / alphaNorm;
6697 final var value2 = (1.0 - Math.cos(alphaNorm)) / alphaNorm2;
6698 final var tmp1 = alphaSkew1.multiplyByScalarAndReturnNew(value1);
6699 final var tmp2 = alphaSkew1.multiplyByScalarAndReturnNew(value2);
6700 tmp2.multiply(alphaSkew1);
6701
6702 cNewOld.add(tmp1);
6703 cNewOld.add(tmp2);
6704 } else {
6705 cNewOld.add(alphaSkew1);
6706 }
6707
6708 // Update attitude using (5.75)
6709 final var oldCbe = oldC.getMatrix();
6710 cEarth.multiply(oldCbe);
6711 // cbe = cEarth * oldCbe * cNewOld
6712 cEarth.multiply(cNewOld);
6713
6714 // Specific force frame transformation
6715 // Calculate the average body-to-ECEF-frame coordinate transformation
6716 // matrix over the update interval using (5.84) and (5.85).
6717 final var alphaSkew2 = Utils.skewMatrix(new double[]{0.0, 0.0, alpha});
6718 alphaSkew2.multiplyByScalar(0.5);
6719 // 0.5 * alphaSkew2 * oldCbe
6720 alphaSkew2.multiply(oldCbe);
6721
6722 if (alphaNorm > ALPHA_THRESHOLD) {
6723 final var alphaNorm2 = alphaNorm * alphaNorm;
6724 final var value1 = (1.0 - Math.cos(alphaNorm)) / alphaNorm2;
6725 final var value2 = (1.0 - Math.sin(alphaNorm) / alphaNorm) / alphaNorm2;
6726 final var tmp1 = alphaSkew1.multiplyByScalarAndReturnNew(value1);
6727 final var tmp2 = alphaSkew1.multiplyByScalarAndReturnNew(value2);
6728 tmp2.multiply(alphaSkew1);
6729
6730 final var tmp3 = Matrix.identity(ROWS, ROWS);
6731 tmp3.add(tmp1);
6732 tmp3.add(tmp2);
6733
6734 oldCbe.multiply(tmp3);
6735 }
6736
6737 // oldCbe - 0.5 * alphaSkew2 * oldCbe
6738 oldCbe.subtract(alphaSkew2);
6739 // oldCbe now contains the average body-to-ECEF-frame coordinate transformation
6740
6741 // Transform specific force to ECEF-frame resolving axes using (5.85)
6742 final var fibb = new Matrix(ROWS, 1);
6743 fibb.setElementAtIndex(0, fx);
6744 fibb.setElementAtIndex(1, fy);
6745 fibb.setElementAtIndex(2, fz);
6746
6747 // fibe = aveCbe * fibb
6748 oldCbe.multiply(fibb);
6749
6750 // Update velocity
6751 // From (5.36)
6752 final var gravity = ECEFGravityEstimator.estimateGravityAndReturnNew(oldX, oldY, oldZ);
6753 final var g = gravity.asMatrix();
6754
6755 final var oldVebe = new Matrix(ROWS, 1);
6756 oldVebe.setElementAtIndex(0, oldVx);
6757 oldVebe.setElementAtIndex(1, oldVy);
6758 oldVebe.setElementAtIndex(2, oldVz);
6759
6760 final var skew3 = Utils.skewMatrix(new double[]{0.0, 0.0, EARTH_ROTATION_RATE});
6761 // 2.0 * omegaSkew
6762 skew3.multiplyByScalar(2.0);
6763 // 2.0 * omegaSkew * oldVebe
6764 skew3.multiply(oldVebe);
6765
6766 // fibe + g
6767 oldCbe.add(g);
6768 // fibe + g - 2.0 * omegaSkew * oldVebe
6769 oldCbe.subtract(skew3);
6770
6771 // timeInterval * (fibe + g - 2.0 * omegaSkew * oldVebe)
6772 oldCbe.multiplyByScalar(timeInterval);
6773
6774 // oldVebe + timeInterval * (fibe + g - 2.0 * omegaSkew * oldVebe)
6775 oldVebe.add(oldCbe);
6776
6777 final var newVx = oldVebe.getElementAtIndex(0);
6778 final var newVy = oldVebe.getElementAtIndex(1);
6779 final var newVz = oldVebe.getElementAtIndex(2);
6780
6781 // Update cartesian position
6782 // From (5.38)
6783 final var newX = oldX + (newVx + oldVx) * 0.5 * timeInterval;
6784 final var newY = oldY + (newVy + oldVy) * 0.5 * timeInterval;
6785 final var newZ = oldZ + (newVz + oldVz) * 0.5 * timeInterval;
6786
6787 final var newC = new CoordinateTransformation(FrameType.BODY_FRAME,
6788 FrameType.EARTH_CENTERED_EARTH_FIXED_FRAME);
6789 // cEarth contains cBe
6790 newC.setMatrix(cEarth);
6791
6792 result.setCoordinateTransformation(newC);
6793 result.setVelocityCoordinates(newVx, newVy, newVz);
6794 result.setCoordinates(newX, newY, newZ);
6795
6796 } catch (final AlgebraException | FrameException | InvalidRotationMatrixException e) {
6797 throw new InertialNavigatorException(e);
6798 }
6799 }
6800
6801 /**
6802 * Runs precision ECEF-frame inertial navigation equations.
6803 *
6804 * @param timeInterval time interval between epochs.
6805 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6806 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6807 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6808 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6809 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6810 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6811 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6812 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6813 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6814 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6815 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6816 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6817 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6818 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6819 * resolved along body-frame axes, averaged over time interval and
6820 * expressed in meters per squared second (m/s^2).
6821 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6822 * resolved along body-frame axes, averaged over time interval and
6823 * expressed in meters per squared second (m/s^2).
6824 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6825 * resolved along body-frame axes, averaged over time interval and
6826 * expressed in meters per squared second (m/s^2).
6827 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6828 * resolved along body-frame axes, averaged over time interval and
6829 * expressed in radians per second (rad/s).
6830 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6831 * resolved along body-frame axes, averaged over time interval and
6832 * expressed in radians per second (rad/s).
6833 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6834 * resolved along body-frame axes, averaged over time interval and
6835 * expressed in radians per second (rad/s).
6836 * @param result instance where new estimated ECEF frame containing new body
6837 * position, velocity and coordinate transformation matrix will be stored.
6838 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6839 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6840 * body-to-ECEF-frame coordinate transformation matrix are
6841 * invalid.
6842 */
6843 public static void navigateECEF(
6844 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
6845 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
6846 final double fx, final double fy, final double fz,
6847 final double angularRateX, final double angularRateY, final double angularRateZ,
6848 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6849 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
6850 angularRateX, angularRateY, angularRateZ, result);
6851 }
6852
6853 /**
6854 * Runs precision ECEF-frame inertial navigation equations.
6855 *
6856 * @param timeInterval time interval between epochs expressed in seconds (s).
6857 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
6858 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6859 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6860 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6861 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6862 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6863 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6864 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6865 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6866 * resolved along body-frame axes, averaged over time interval and
6867 * expressed in meters per squared second (m/s^2).
6868 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6869 * resolved along body-frame axes, averaged over time interval and
6870 * expressed in meters per squared second (m/s^2).
6871 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6872 * resolved along body-frame axes, averaged over time interval and
6873 * expressed in meters per squared second (m/s^2).
6874 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6875 * resolved along body-frame axes, averaged over time interval and
6876 * expressed in radians per second (rad/s).
6877 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6878 * resolved along body-frame axes, averaged over time interval and
6879 * expressed in radians per second (rad/s).
6880 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6881 * resolved along body-frame axes, averaged over time interval and
6882 * expressed in radians per second (rad/s).
6883 * @param result instance where new estimated ECEF frame containing new body
6884 * position, velocity and coordinate transformation matrix will be stored.
6885 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6886 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6887 * body-to-ECEF-frame coordinate transformation matrix are
6888 * invalid.
6889 */
6890 public static void navigateECEF(
6891 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
6892 final double oldVx, final double oldVy, final double oldVz,
6893 final double fx, final double fy, final double fz,
6894 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
6895 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6896 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
6897 oldC, oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6898 }
6899
6900 /**
6901 * Runs precision ECEF-frame inertial navigation equations.
6902 *
6903 * @param timeInterval time interval between epochs.
6904 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
6905 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6906 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
6907 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6908 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
6909 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6910 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
6911 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
6912 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6913 * resolved along body-frame axes, averaged over time interval and
6914 * expressed in meters per squared second (m/s^2).
6915 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6916 * resolved along body-frame axes, averaged over time interval and
6917 * expressed in meters per squared second (m/s^2).
6918 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6919 * resolved along body-frame axes, averaged over time interval and
6920 * expressed in meters per squared second (m/s^2).
6921 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6922 * resolved along body-frame axes, averaged over time interval and
6923 * expressed in radians per second (rad/s).
6924 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6925 * resolved along body-frame axes, averaged over time interval and
6926 * expressed in radians per second (rad/s).
6927 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6928 * resolved along body-frame axes, averaged over time interval and
6929 * expressed in radians per second (rad/s).
6930 * @param result instance where new estimated ECEF frame containing new body
6931 * position, velocity and coordinate transformation matrix will be stored.
6932 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6933 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6934 * body-to-ECEF-frame coordinate transformation matrix are
6935 * invalid.
6936 */
6937 public static void navigateECEF(
6938 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
6939 final double oldVx, final double oldVy, final double oldVz,
6940 final double fx, final double fy, final double fz,
6941 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
6942 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6943 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
6944 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
6945 }
6946
6947 /**
6948 * Runs precision ECEF-frame inertial navigation equations.
6949 *
6950 * @param timeInterval time interval between epochs expressed in seconds (s).
6951 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
6952 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6953 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
6954 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6955 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
6956 * frame, resolved along ECEF-frame axes and expressed in meters (m).
6957 * @param oldC previous body-to-ECEF-frame coordinate transformation.
6958 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
6959 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
6960 * resolved along body-frame axes, averaged over time interval and
6961 * expressed in meters per squared second (m/s^2).
6962 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
6963 * resolved along body-frame axes, averaged over time interval and
6964 * expressed in meters per squared second (m/s^2).
6965 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
6966 * resolved along body-frame axes, averaged over time interval and
6967 * expressed in meters per squared second (m/s^2).
6968 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
6969 * resolved along body-frame axes, averaged over time interval and
6970 * expressed in radians per second (rad/s).
6971 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
6972 * resolved along body-frame axes, averaged over time interval and
6973 * expressed in radians per second (rad/s).
6974 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
6975 * resolved along body-frame axes, averaged over time interval and
6976 * expressed in radians per second (rad/s).
6977 * @param result instance where new estimated ECEF frame containing new body
6978 * position, velocity and coordinate transformation matrix will be stored.
6979 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
6980 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
6981 * body-to-ECEF-frame coordinate transformation matrix are
6982 * invalid.
6983 */
6984 public static void navigateECEF(
6985 final double timeInterval, final double oldX, final double oldY, final double oldZ,
6986 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
6987 final double fx, final double fy, final double fz,
6988 final double angularRateX, final double angularRateY, final double angularRateZ,
6989 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
6990 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
6991 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
6992 angularRateX, angularRateY, angularRateZ, result);
6993 }
6994
6995 /**
6996 * Runs precision ECEF-frame inertial navigation equations.
6997 *
6998 * @param timeInterval time interval between epochs.
6999 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7000 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7001 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7002 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7003 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7004 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7005 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7006 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7007 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7008 * resolved along body-frame axes, averaged over time interval and
7009 * expressed in meters per squared second (m/s^2).
7010 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7011 * resolved along body-frame axes, averaged over time interval and
7012 * expressed in meters per squared second (m/s^2).
7013 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7014 * resolved along body-frame axes, averaged over time interval and
7015 * expressed in meters per squared second (m/s^2).
7016 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7017 * resolved along body-frame axes, averaged over time interval and
7018 * expressed in radians per second (rad/s).
7019 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7020 * resolved along body-frame axes, averaged over time interval and
7021 * expressed in radians per second (rad/s).
7022 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7023 * resolved along body-frame axes, averaged over time interval and
7024 * expressed in radians per second (rad/s).
7025 * @param result instance where new estimated ECEF frame containing new body
7026 * position, velocity and coordinate transformation matrix will be stored.
7027 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7028 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7029 * body-to-ECEF-frame coordinate transformation matrix are
7030 * invalid.
7031 */
7032 public static void navigateECEF(
7033 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
7034 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
7035 final double fx, final double fy, final double fz,
7036 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
7037 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7038 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7039 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
7040 angularRateX, angularRateY, angularRateZ, result);
7041 }
7042
7043 /**
7044 * Runs precision ECEF-frame inertial navigation equations.
7045 *
7046 * @param timeInterval time interval between epochs expressed in seconds (s).
7047 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
7048 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7049 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7050 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7051 * resolved along body-frame axes, averaged over time interval and
7052 * expressed in meters per squared second (m/s^2).
7053 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7054 * resolved along body-frame axes, averaged over time interval and
7055 * expressed in meters per squared second (m/s^2).
7056 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7057 * resolved along body-frame axes, averaged over time interval and
7058 * expressed in meters per squared second (m/s^2).
7059 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7060 * resolved along body-frame axes, averaged over time interval and
7061 * expressed in radians per second (rad/s).
7062 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7063 * resolved along body-frame axes, averaged over time interval and
7064 * expressed in radians per second (rad/s).
7065 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7066 * resolved along body-frame axes, averaged over time interval and
7067 * expressed in radians per second (rad/s).
7068 * @param result instance where new estimated ECEF frame containing new body
7069 * position, velocity and coordinate transformation matrix will be stored.
7070 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7071 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7072 * body-to-ECEF-frame coordinate transformation matrix are
7073 * invalid.
7074 */
7075 public static void navigateECEF(
7076 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
7077 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
7078 final double angularRateX, final double angularRateY, final double angularRateZ,
7079 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7080 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
7081 oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7082 }
7083
7084 /**
7085 * Runs precision ECEF-frame inertial navigation equations.
7086 *
7087 * @param timeInterval time interval between epochs.
7088 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
7089 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7090 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7091 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7092 * resolved along body-frame axes, averaged over time interval and
7093 * expressed in meters per squared second (m/s^2).
7094 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7095 * resolved along body-frame axes, averaged over time interval and
7096 * expressed in meters per squared second (m/s^2).
7097 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7098 * resolved along body-frame axes, averaged over time interval and
7099 * expressed in meters per squared second (m/s^2).
7100 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7101 * resolved along body-frame axes, averaged over time interval and
7102 * expressed in radians per second (rad/s).
7103 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7104 * resolved along body-frame axes, averaged over time interval and
7105 * expressed in radians per second (rad/s).
7106 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7107 * resolved along body-frame axes, averaged over time interval and
7108 * expressed in radians per second (rad/s).
7109 * @param result instance where new estimated ECEF frame containing new body
7110 * position, velocity and coordinate transformation matrix will be stored.
7111 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7112 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7113 * body-to-ECEF-frame coordinate transformation matrix are
7114 * invalid.
7115 */
7116 public static void navigateECEF(
7117 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
7118 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
7119 final double angularRateX, final double angularRateY, final double angularRateZ,
7120 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7121 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC, oldVelocity,
7122 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7123 }
7124
7125 /**
7126 * Runs precision ECEF-frame inertial navigation equations.
7127 *
7128 * @param timeInterval time interval between epochs expressed in seconds (s).
7129 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7130 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7131 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7132 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7133 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7134 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7135 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7136 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7137 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7138 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7139 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7140 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7141 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7142 * @param kinematics body kinematics containing specific forces and angular rates applied to
7143 * the body.
7144 * @param result instance where new estimated ECEF frame containing new body
7145 * position, velocity and coordinate transformation matrix will be stored.
7146 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7147 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7148 * body-to-ECEF-frame coordinate transformation matrix are
7149 * invalid.
7150 */
7151 public static void navigateECEF(
7152 final double timeInterval, final double oldX, final double oldY, final double oldZ,
7153 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
7154 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
7155 InvalidSourceAndDestinationFrameTypeException {
7156 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
7157 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
7158 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
7159 }
7160
7161 /**
7162 * Runs precision ECEF-frame inertial navigation equations.
7163 *
7164 * @param timeInterval time interval between epochs.
7165 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7166 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7167 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7168 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7169 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7170 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7171 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7172 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7173 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7174 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7175 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7176 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7177 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7178 * @param kinematics body kinematics containing specific forces and angular rates applied to
7179 * the body.
7180 * @param result instance where new estimated ECEF frame containing new body
7181 * position, velocity and coordinate transformation matrix will be stored.
7182 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7183 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7184 * body-to-ECEF-frame coordinate transformation matrix are
7185 * invalid.
7186 */
7187 public static void navigateECEF(
7188 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
7189 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
7190 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
7191 InvalidSourceAndDestinationFrameTypeException {
7192 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics,
7193 result);
7194 }
7195
7196 /**
7197 * Runs precision ECEF-frame inertial navigation equations.
7198 *
7199 * @param timeInterval time interval between epochs expressed in seconds (s).
7200 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
7201 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7202 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7203 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7204 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7205 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7206 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7207 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7208 * @param kinematics body kinematics containing specific forces and angular rates applied to
7209 * the body.
7210 * @param result instance where new estimated ECEF frame containing new body
7211 * position, velocity and coordinate transformation matrix will be stored.
7212 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7213 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7214 * body-to-ECEF-frame coordinate transformation matrix are
7215 * invalid.
7216 */
7217 public static void navigateECEF(
7218 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
7219 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
7220 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7221 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
7222 oldVx, oldVy, oldVz, kinematics, result);
7223 }
7224
7225 /**
7226 * Runs precision ECEF-frame inertial navigation equations.
7227 *
7228 * @param timeInterval time interval between epochs.
7229 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
7230 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7231 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7232 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7233 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7234 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7235 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7236 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7237 * @param kinematics body kinematics containing specific forces and angular rates applied to
7238 * the body.
7239 * @param result instance where new estimated ECEF frame containing new body
7240 * position, velocity and coordinate transformation matrix will be stored.
7241 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7242 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7243 * body-to-ECEF-frame coordinate transformation matrix are
7244 * invalid.
7245 */
7246 public static void navigateECEF(
7247 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
7248 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
7249 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7250 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
7251 oldVx, oldVy, oldVz, kinematics, result);
7252 }
7253
7254 /**
7255 * Runs precision ECEF-frame inertial navigation equations.
7256 *
7257 * @param timeInterval time interval between epochs expressed in seconds (s).
7258 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7259 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7260 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7261 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7262 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7263 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7264 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7265 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7266 * @param kinematics body kinematics containing specific forces and angular rates applied to
7267 * the body.
7268 * @param result instance where new estimated ECEF frame containing new body
7269 * position, velocity and coordinate transformation matrix will be stored.
7270 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7271 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7272 * body-to-ECEF-frame coordinate transformation matrix are
7273 * invalid.
7274 */
7275 public static void navigateECEF(
7276 final double timeInterval, final double oldX, final double oldY, final double oldZ,
7277 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
7278 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7279 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7280 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
7281 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
7282 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
7283 }
7284
7285 /**
7286 * Runs precision ECEF-frame inertial navigation equations.
7287 *
7288 * @param timeInterval time interval between epochs.
7289 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7290 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7291 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7292 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7293 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7294 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7295 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7296 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7297 * @param kinematics body kinematics containing specific forces and angular rates applied to
7298 * the body.
7299 * @param result instance where new estimated ECEF frame containing new body
7300 * position, velocity and coordinate transformation matrix will be stored.
7301 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7302 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7303 * body-to-ECEF-frame coordinate transformation matrix are
7304 * invalid.
7305 */
7306 public static void navigateECEF(
7307 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
7308 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
7309 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7310 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7311 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
7312 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
7313 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
7314 }
7315
7316 /**
7317 * Runs precision ECEF-frame inertial navigation equations.
7318 *
7319 * @param timeInterval time interval between epochs expressed in seconds (s).
7320 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
7321 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7322 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7323 * @param kinematics body kinematics containing specific forces and angular rates applied to
7324 * the body.
7325 * @param result instance where new estimated ECEF frame containing new body
7326 * position, velocity and coordinate transformation matrix will be stored.
7327 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7328 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7329 * body-to-ECEF-frame coordinate transformation matrix are
7330 * invalid.
7331 */
7332 public static void navigateECEF(
7333 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
7334 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
7335 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7336 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC, oldVelocity,
7337 kinematics, result);
7338 }
7339
7340 /**
7341 * Runs precision ECEF-frame inertial navigation equations.
7342 *
7343 * @param timeInterval time interval between epochs.
7344 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
7345 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7346 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7347 * @param kinematics body kinematics containing specific forces and angular rates applied to
7348 * the body.
7349 * @param result instance where new estimated ECEF frame containing new body
7350 * position, velocity and coordinate transformation matrix will be stored.
7351 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7352 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7353 * body-to-ECEF-frame coordinate transformation matrix are
7354 * invalid.
7355 */
7356 public static void navigateECEF(
7357 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
7358 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
7359 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7360 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC, oldVelocity,
7361 kinematics, result);
7362 }
7363
7364 /**
7365 * Runs precision ECEF-frame inertial navigation equations.
7366 *
7367 * @param timeInterval time interval between epochs expressed in seconds (s).
7368 * @param oldPosition previous cartesian position of body frame with respect ECEF
7369 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7370 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7371 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7372 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7373 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7374 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7375 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7376 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7377 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7378 * resolved along body-frame axes, averaged over time interval and
7379 * expressed in meters per squared second (m/s^2).
7380 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7381 * resolved along body-frame axes, averaged over time interval and
7382 * expressed in meters per squared second (m/s^2).
7383 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7384 * resolved along body-frame axes, averaged over time interval and
7385 * expressed in meters per squared second (m/s^2).
7386 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7387 * resolved along body-frame axes, averaged over time interval and
7388 * expressed in radians per second (rad/s).
7389 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7390 * resolved along body-frame axes, averaged over time interval and
7391 * expressed in radians per second (rad/s).
7392 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7393 * resolved along body-frame axes, averaged over time interval and
7394 * expressed in radians per second (rad/s).
7395 * @param result instance where new estimated ECEF frame containing new body
7396 * position, velocity and coordinate transformation matrix will be stored.
7397 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7398 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7399 * body-to-ECEF-frame coordinate transformation matrix are
7400 * invalid.
7401 */
7402 public static void navigateECEF(
7403 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7404 final double oldVx, final double oldVy, final double oldVz,
7405 final double fx, final double fy, final double fz,
7406 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
7407 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7408 navigateECEF(timeInterval, oldPosition.getInhomX(), oldPosition.getInhomY(), oldPosition.getInhomZ(),
7409 oldC, oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7410 }
7411
7412 /**
7413 * Runs precision ECEF-frame inertial navigation equations.
7414 *
7415 * @param timeInterval time interval between epochs.
7416 * @param oldPosition previous cartesian position of body frame with respect ECEF
7417 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7418 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7419 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7420 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7421 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7422 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7423 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7424 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7425 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7426 * resolved along body-frame axes, averaged over time interval and
7427 * expressed in meters per squared second (m/s^2).
7428 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7429 * resolved along body-frame axes, averaged over time interval and
7430 * expressed in meters per squared second (m/s^2).
7431 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7432 * resolved along body-frame axes, averaged over time interval and
7433 * expressed in meters per squared second (m/s^2).
7434 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7435 * resolved along body-frame axes, averaged over time interval and
7436 * expressed in radians per second (rad/s).
7437 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7438 * resolved along body-frame axes, averaged over time interval and
7439 * expressed in radians per second (rad/s).
7440 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7441 * resolved along body-frame axes, averaged over time interval and
7442 * expressed in radians per second (rad/s).
7443 * @param result instance where new estimated ECEF frame containing new body
7444 * position, velocity and coordinate transformation matrix will be stored.
7445 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7446 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7447 * body-to-ECEF-frame coordinate transformation matrix are
7448 * invalid.
7449 */
7450 public static void navigateECEF(
7451 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7452 final double oldVx, final double oldVy, final double oldVz,
7453 final double fx, final double fy, final double fz,
7454 final double angularRateX, final double angularRateY, final double angularRateZ,
7455 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7456 navigateECEF(timeInterval, oldPosition.getInhomX(), oldPosition.getInhomY(), oldPosition.getInhomZ(),
7457 oldC, oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7458 }
7459
7460 /**
7461 * Runs precision ECEF-frame inertial navigation equations.
7462 *
7463 * @param timeInterval time interval between epochs expressed in seconds (s).
7464 * @param oldPosition previous cartesian position of body frame with respect ECEF
7465 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7466 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7467 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7468 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7469 * resolved along body-frame axes, averaged over time interval and
7470 * expressed in meters per squared second (m/s^2).
7471 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7472 * resolved along body-frame axes, averaged over time interval and
7473 * expressed in meters per squared second (m/s^2).
7474 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7475 * resolved along body-frame axes, averaged over time interval and
7476 * expressed in meters per squared second (m/s^2).
7477 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7478 * resolved along body-frame axes, averaged over time interval and
7479 * expressed in radians per second (rad/s).
7480 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7481 * resolved along body-frame axes, averaged over time interval and
7482 * expressed in radians per second (rad/s).
7483 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7484 * resolved along body-frame axes, averaged over time interval and
7485 * expressed in radians per second (rad/s).
7486 * @param result instance where new estimated ECEF frame containing new body
7487 * position, velocity and coordinate transformation matrix will be stored.
7488 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7489 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7490 * body-to-ECEF-frame coordinate transformation matrix are
7491 * invalid.
7492 */
7493 public static void navigateECEF(
7494 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7495 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
7496 final double angularRateX, final double angularRateY, final double angularRateZ,
7497 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7498 navigateECEF(timeInterval, oldPosition.getInhomX(), oldPosition.getInhomY(), oldPosition.getInhomZ(),
7499 oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7500 }
7501
7502 /**
7503 * Runs precision ECEF-frame inertial navigation equations.
7504 *
7505 * @param timeInterval time interval between epochs expressed in seconds (s).
7506 * @param oldPosition previous cartesian position of body frame with respect ECEF
7507 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7508 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7509 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7510 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7511 * resolved along body-frame axes, averaged over time interval and
7512 * expressed in meters per squared second (m/s^2).
7513 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7514 * resolved along body-frame axes, averaged over time interval and
7515 * expressed in meters per squared second (m/s^2).
7516 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7517 * resolved along body-frame axes, averaged over time interval and
7518 * expressed in meters per squared second (m/s^2).
7519 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7520 * resolved along body-frame axes, averaged over time interval and
7521 * expressed in radians per second (rad/s).
7522 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7523 * resolved along body-frame axes, averaged over time interval and
7524 * expressed in radians per second (rad/s).
7525 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7526 * resolved along body-frame axes, averaged over time interval and
7527 * expressed in radians per second (rad/s).
7528 * @param result instance where new estimated ECEF frame containing new body
7529 * position, velocity and coordinate transformation matrix will be stored.
7530 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7531 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7532 * body-to-ECEF-frame coordinate transformation matrix are
7533 * invalid.
7534 */
7535 public static void navigateECEF(
7536 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7537 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
7538 final double angularRateX, final double angularRateY, final double angularRateZ,
7539 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7540 navigateECEF(timeInterval, oldPosition.getInhomX(), oldPosition.getInhomY(), oldPosition.getInhomZ(),
7541 oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7542 }
7543
7544 /**
7545 * Runs precision ECEF-frame inertial navigation equations.
7546 *
7547 * @param timeInterval time interval between epochs expressed in seconds (s).
7548 * @param oldPosition previous cartesian position of body frame with respect ECEF
7549 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7550 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7551 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7552 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7553 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7554 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7555 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7556 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7557 * @param kinematics body kinematics containing specific forces and angular rates applied to
7558 * the body.
7559 * @param result instance where new estimated ECEF frame containing new body
7560 * position, velocity and coordinate transformation matrix will be stored.
7561 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7562 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7563 * body-to-ECEF-frame coordinate transformation matrix are
7564 * invalid.
7565 */
7566 public static void navigateECEF(
7567 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7568 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
7569 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7570 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz,
7571 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
7572 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
7573 }
7574
7575 /**
7576 * Runs precision ECEF-frame inertial navigation equations.
7577 *
7578 * @param timeInterval time interval between epochs.
7579 * @param oldPosition previous cartesian position of body frame with respect ECEF
7580 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7581 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7582 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7583 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7584 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7585 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7586 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7587 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7588 * @param kinematics body kinematics containing specific forces and angular rates applied to
7589 * the body.
7590 * @param result instance where new estimated ECEF frame containing new body
7591 * position, velocity and coordinate transformation matrix will be stored.
7592 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7593 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7594 * body-to-ECEF-frame coordinate transformation matrix are
7595 * invalid.
7596 */
7597 public static void navigateECEF(
7598 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7599 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics,
7600 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7601 navigateECEF(convertTimeToDouble(timeInterval), oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
7602 }
7603
7604 /**
7605 * Runs precision ECEF-frame inertial navigation equations.
7606 *
7607 * @param timeInterval time interval between epochs expressed in seconds (s).
7608 * @param oldPosition previous cartesian position of body frame with respect ECEF
7609 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7610 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7611 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7612 * @param kinematics body kinematics containing specific forces and angular rates applied to
7613 * the body.
7614 * @param result instance where new estimated ECEF frame containing new body
7615 * position, velocity and coordinate transformation matrix will be stored.
7616 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7617 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7618 * body-to-ECEF-frame coordinate transformation matrix are
7619 * invalid.
7620 */
7621 public static void navigateECEF(
7622 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7623 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
7624 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7625 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
7626 kinematics, result);
7627 }
7628
7629 /**
7630 * Runs precision ECEF-frame inertial navigation equations.
7631 *
7632 * @param timeInterval time interval between epochs.
7633 * @param oldPosition previous cartesian position of body frame with respect ECEF
7634 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7635 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7636 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7637 * @param kinematics body kinematics containing specific forces and angular rates applied to
7638 * the body.
7639 * @param result instance where new estimated ECEF frame containing new body
7640 * position, velocity and coordinate transformation matrix will be stored.
7641 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7642 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7643 * body-to-ECEF-frame coordinate transformation matrix are
7644 * invalid.
7645 */
7646 public static void navigateECEF(
7647 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
7648 final ECEFVelocity oldVelocity, final BodyKinematics kinematics, final ECEFFrame result)
7649 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7650 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
7651 kinematics, result);
7652 }
7653
7654 /**
7655 * Runs precision ECEF-frame inertial navigation equations.
7656 *
7657 * @param timeInterval time interval between epochs expressed in seconds (s).
7658 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7659 * frame, resolved along ECEF-frame axes.
7660 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7661 * frame, resolved along ECEF-frame axes.
7662 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7663 * frame, resolved along ECEF-frame axes.
7664 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7665 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7666 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7667 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7668 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7669 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7670 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7671 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7672 * resolved along body-frame axes, averaged over time interval and
7673 * expressed in meters per squared second (m/s^2).
7674 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7675 * resolved along body-frame axes, averaged over time interval and
7676 * expressed in meters per squared second (m/s^2).
7677 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7678 * resolved along body-frame axes, averaged over time interval and
7679 * expressed in meters per squared second (m/s^2).
7680 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7681 * resolved along body-frame axes, averaged over time interval and
7682 * expressed in radians per second (rad/s).
7683 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7684 * resolved along body-frame axes, averaged over time interval and
7685 * expressed in radians per second (rad/s).
7686 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7687 * resolved along body-frame axes, averaged over time interval and
7688 * expressed in radians per second (rad/s).
7689 * @param result instance where new estimated ECEF frame containing new body
7690 * position, velocity and coordinate transformation matrix will be stored.
7691 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7692 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7693 * body-to-ECEF-frame coordinate transformation matrix are
7694 * invalid.
7695 */
7696 public static void navigateECEF(
7697 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7698 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
7699 final double fx, final double fy, final double fz,
7700 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
7701 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7702 navigateECEF(timeInterval,
7703 convertDistanceToDouble(oldX), convertDistanceToDouble(oldY), convertDistanceToDouble(oldZ), oldC,
7704 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
7705 }
7706
7707 /**
7708 * Runs precision ECEF-frame inertial navigation equations.
7709 *
7710 * @param timeInterval time interval between epochs.
7711 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7712 * frame, resolved along ECEF-frame axes.
7713 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7714 * frame, resolved along ECEF-frame axes.
7715 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7716 * frame, resolved along ECEF-frame axes.
7717 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7718 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7719 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7720 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7721 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7722 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7723 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7724 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7725 * resolved along body-frame axes, averaged over time interval and
7726 * expressed in meters per squared second (m/s^2).
7727 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7728 * resolved along body-frame axes, averaged over time interval and
7729 * expressed in meters per squared second (m/s^2).
7730 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7731 * resolved along body-frame axes, averaged over time interval and
7732 * expressed in meters per squared second (m/s^2).
7733 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7734 * resolved along body-frame axes, averaged over time interval and
7735 * expressed in radians per second (rad/s).
7736 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7737 * resolved along body-frame axes, averaged over time interval and
7738 * expressed in radians per second (rad/s).
7739 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7740 * resolved along body-frame axes, averaged over time interval and
7741 * expressed in radians per second (rad/s).
7742 * @param result instance where new estimated ECEF frame containing new body
7743 * position, velocity and coordinate transformation matrix will be stored.
7744 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7745 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7746 * body-to-ECEF-frame coordinate transformation matrix are
7747 * invalid.
7748 */
7749 public static void navigateECEF(
7750 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7751 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
7752 final double fx, final double fy, final double fz,
7753 final double angularRateX, final double angularRateY, final double angularRateZ,
7754 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7755 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
7756 angularRateX, angularRateY, angularRateZ, result);
7757 }
7758
7759 /**
7760 * Runs precision ECEF-frame inertial navigation equations.
7761 *
7762 * @param timeInterval time interval between epochs expressed in seconds (s).
7763 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7764 * frame, resolved along ECEF-frame axes.
7765 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7766 * frame, resolved along ECEF-frame axes.
7767 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7768 * frame, resolved along ECEF-frame axes.
7769 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7770 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7771 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7772 * resolved along body-frame axes, averaged over time interval and
7773 * expressed in meters per squared second (m/s^2).
7774 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7775 * resolved along body-frame axes, averaged over time interval and
7776 * expressed in meters per squared second (m/s^2).
7777 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7778 * resolved along body-frame axes, averaged over time interval and
7779 * expressed in meters per squared second (m/s^2).
7780 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7781 * resolved along body-frame axes, averaged over time interval and
7782 * expressed in radians per second (rad/s).
7783 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7784 * resolved along body-frame axes, averaged over time interval and
7785 * expressed in radians per second (rad/s).
7786 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7787 * resolved along body-frame axes, averaged over time interval and
7788 * expressed in radians per second (rad/s).
7789 * @param result instance where new estimated ECEF frame containing new body
7790 * position, velocity and coordinate transformation matrix will be stored.
7791 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7792 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7793 * body-to-ECEF-frame coordinate transformation matrix are
7794 * invalid.
7795 */
7796 public static void navigateECEF(
7797 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7798 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
7799 final double fx, final double fy, final double fz,
7800 final double angularRateX, final double angularRateY, final double angularRateZ,
7801 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7802 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7803 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
7804 angularRateX, angularRateY, angularRateZ, result);
7805 }
7806
7807 /**
7808 * Runs precision ECEF-frame inertial navigation equations.
7809 *
7810 * @param timeInterval time interval between epochs.
7811 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7812 * frame, resolved along ECEF-frame axes.
7813 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7814 * frame, resolved along ECEF-frame axes.
7815 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7816 * frame, resolved along ECEF-frame axes.
7817 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7818 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7819 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
7820 * resolved along body-frame axes, averaged over time interval and
7821 * expressed in meters per squared second (m/s^2).
7822 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
7823 * resolved along body-frame axes, averaged over time interval and
7824 * expressed in meters per squared second (m/s^2).
7825 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
7826 * resolved along body-frame axes, averaged over time interval and
7827 * expressed in meters per squared second (m/s^2).
7828 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
7829 * resolved along body-frame axes, averaged over time interval and
7830 * expressed in radians per second (rad/s).
7831 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
7832 * resolved along body-frame axes, averaged over time interval and
7833 * expressed in radians per second (rad/s).
7834 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
7835 * resolved along body-frame axes, averaged over time interval and
7836 * expressed in radians per second (rad/s).
7837 * @param result instance where new estimated ECEF frame containing new body
7838 * position, velocity and coordinate transformation matrix will be stored.
7839 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7840 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7841 * body-to-ECEF-frame coordinate transformation matrix are
7842 * invalid.
7843 */
7844 public static void navigateECEF(
7845 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7846 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
7847 final double fx, final double fy, final double fz,
7848 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
7849 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7850 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7851 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
7852 angularRateX, angularRateY, angularRateZ, result);
7853 }
7854
7855 /**
7856 * Runs precision ECEF-frame inertial navigation equations.
7857 *
7858 * @param timeInterval time interval between epochs expressed in seconds (s).
7859 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7860 * frame, resolved along ECEF-frame axes.
7861 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7862 * frame, resolved along ECEF-frame axes.
7863 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7864 * frame, resolved along ECEF-frame axes.
7865 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7866 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7867 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7868 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7869 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7870 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7871 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7872 * @param kinematics body kinematics containing specific forces and angular rates applied to
7873 * the body.
7874 * @param result instance where new estimated ECEF frame containing new body
7875 * position, velocity and coordinate transformation matrix will be stored.
7876 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7877 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7878 * body-to-ECEF-frame coordinate transformation matrix are
7879 * invalid.
7880 */
7881 public static void navigateECEF(
7882 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7883 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
7884 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
7885 InvalidSourceAndDestinationFrameTypeException {
7886 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
7887 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
7888 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
7889 }
7890
7891 /**
7892 * Runs precision ECEF-frame inertial navigation equations.
7893 *
7894 * @param timeInterval time interval between epochs.
7895 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7896 * frame, resolved along ECEF-frame axes.
7897 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7898 * frame, resolved along ECEF-frame axes.
7899 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7900 * frame, resolved along ECEF-frame axes.
7901 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7902 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
7903 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7904 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
7905 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7906 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
7907 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
7908 * @param kinematics body kinematics containing specific forces and angular rates applied to
7909 * the body.
7910 * @param result instance where new estimated ECEF frame containing new body
7911 * position, velocity and coordinate transformation matrix will be stored.
7912 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7913 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7914 * body-to-ECEF-frame coordinate transformation matrix are
7915 * invalid.
7916 */
7917 public static void navigateECEF(
7918 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7919 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
7920 final BodyKinematics kinematics, final ECEFFrame result)
7921 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7922 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
7923 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
7924 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
7925 }
7926
7927 /**
7928 * Runs precision ECEF-frame inertial navigation equations.
7929 *
7930 * @param timeInterval time interval between epochs expressed in seconds (s).
7931 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7932 * frame, resolved along ECEF-frame axes.
7933 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7934 * frame, resolved along ECEF-frame axes.
7935 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7936 * frame, resolved along ECEF-frame axes.
7937 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7938 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7939 * @param kinematics body kinematics containing specific forces and angular rates applied to
7940 * the body.
7941 * @param result instance where new estimated ECEF frame containing new body
7942 * position, velocity and coordinate transformation matrix will be stored.
7943 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7944 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7945 * body-to-ECEF-frame coordinate transformation matrix are
7946 * invalid.
7947 */
7948 public static void navigateECEF(
7949 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7950 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
7951 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7952 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7953 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), kinematics, result);
7954 }
7955
7956 /**
7957 * Runs precision ECEF-frame inertial navigation equations.
7958 *
7959 * @param timeInterval time interval between epochs.
7960 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7961 * frame, resolved along ECEF-frame axes.
7962 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7963 * frame, resolved along ECEF-frame axes.
7964 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7965 * frame, resolved along ECEF-frame axes.
7966 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7967 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
7968 * @param kinematics body kinematics containing specific forces and angular rates applied to
7969 * the body.
7970 * @param result instance where new estimated ECEF frame containing new body
7971 * position, velocity and coordinate transformation matrix will be stored.
7972 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
7973 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
7974 * body-to-ECEF-frame coordinate transformation matrix are
7975 * invalid.
7976 */
7977 public static void navigateECEF(
7978 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
7979 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics,
7980 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
7981 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
7982 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), kinematics, result);
7983 }
7984
7985 /**
7986 * Runs precision ECEF-frame inertial navigation equations.
7987 *
7988 * @param timeInterval time interval between epochs expressed in seconds (s).
7989 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
7990 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7991 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
7992 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7993 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
7994 * frame, resolved along ECEF-frame axes and expressed in meters (m).
7995 * @param oldC previous body-to-ECEF-frame coordinate transformation.
7996 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
7997 * resolved along ECEF-frame axes.
7998 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
7999 * resolved along ECEF-frame axes.
8000 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8001 * resolved along ECEF-frame axes.
8002 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8003 * resolved along body-frame axes, averaged over time interval and
8004 * expressed in meters per squared second (m/s^2).
8005 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8006 * resolved along body-frame axes, averaged over time interval and
8007 * expressed in meters per squared second (m/s^2).
8008 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8009 * resolved along body-frame axes, averaged over time interval and
8010 * expressed in meters per squared second (m/s^2).
8011 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8012 * resolved along body-frame axes, averaged over time interval and
8013 * expressed in radians per second (rad/s).
8014 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8015 * resolved along body-frame axes, averaged over time interval and
8016 * expressed in radians per second (rad/s).
8017 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8018 * resolved along body-frame axes, averaged over time interval and
8019 * expressed in radians per second (rad/s).
8020 * @param result instance where new estimated ECEF frame containing new body
8021 * position, velocity and coordinate transformation matrix will be stored.
8022 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8023 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8024 * body-to-ECEF-frame coordinate transformation matrix are
8025 * invalid.
8026 */
8027 public static void navigateECEF(
8028 final double timeInterval, final double oldX, final double oldY, final double oldZ,
8029 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
8030 final double fx, final double fy, final double fz,
8031 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8032 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8033 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
8034 convertSpeedToDouble(oldSpeedX), convertSpeedToDouble(oldSpeedY), convertSpeedToDouble(oldSpeedZ),
8035 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8036 }
8037
8038 /**
8039 * Runs precision ECEF-frame inertial navigation equations.
8040 *
8041 * @param timeInterval time interval between epochs.
8042 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8043 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8044 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8045 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8046 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8047 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8048 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8049 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8050 * resolved along ECEF-frame axes.
8051 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8052 * resolved along ECEF-frame axes.
8053 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8054 * resolved along ECEF-frame axes.
8055 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8056 * resolved along body-frame axes, averaged over time interval and
8057 * expressed in meters per squared second (m/s^2).
8058 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8059 * resolved along body-frame axes, averaged over time interval and
8060 * expressed in meters per squared second (m/s^2).
8061 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8062 * resolved along body-frame axes, averaged over time interval and
8063 * expressed in meters per squared second (m/s^2).
8064 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8065 * resolved along body-frame axes, averaged over time interval and
8066 * expressed in radians per second (rad/s).
8067 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8068 * resolved along body-frame axes, averaged over time interval and
8069 * expressed in radians per second (rad/s).
8070 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8071 * resolved along body-frame axes, averaged over time interval and
8072 * expressed in radians per second (rad/s).
8073 * @param result instance where new estimated ECEF frame containing new body
8074 * position, velocity and coordinate transformation matrix will be stored.
8075 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8076 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8077 * body-to-ECEF-frame coordinate transformation matrix are
8078 * invalid.
8079 */
8080 public static void navigateECEF(
8081 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
8082 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
8083 final double fx, final double fy, final double fz,
8084 final double angularRateX, final double angularRateY, final double angularRateZ,
8085 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8086 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC,
8087 oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8088 }
8089
8090 /**
8091 * Runs precision ECEF-frame inertial navigation equations.
8092 *
8093 * @param timeInterval time interval between epochs expressed in seconds (s).
8094 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8095 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8096 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8097 * resolved along ECEF-frame axes.
8098 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8099 * resolved along ECEF-frame axes.
8100 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8101 * resolved along ECEF-frame axes.
8102 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8103 * resolved along body-frame axes, averaged over time interval and
8104 * expressed in meters per squared second (m/s^2).
8105 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8106 * resolved along body-frame axes, averaged over time interval and
8107 * expressed in meters per squared second (m/s^2).
8108 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8109 * resolved along body-frame axes, averaged over time interval and
8110 * expressed in meters per squared second (m/s^2).
8111 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8112 * resolved along body-frame axes, averaged over time interval and
8113 * expressed in radians per second (rad/s).
8114 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8115 * resolved along body-frame axes, averaged over time interval and
8116 * expressed in radians per second (rad/s).
8117 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8118 * resolved along body-frame axes, averaged over time interval and
8119 * expressed in radians per second (rad/s).
8120 * @param result instance where new estimated ECEF frame containing new body
8121 * position, velocity and coordinate transformation matrix will be stored.
8122 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8123 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8124 * body-to-ECEF-frame coordinate transformation matrix are
8125 * invalid.
8126 */
8127 public static void navigateECEF(
8128 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8129 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
8130 final double fx, final double fy, final double fz,
8131 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8132 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8133 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
8134 oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8135 }
8136
8137 /**
8138 * Runs precision ECEF-frame inertial navigation equations.
8139 *
8140 * @param timeInterval time interval between epochs.
8141 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8142 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8143 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8144 * resolved along ECEF-frame axes.
8145 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8146 * resolved along ECEF-frame axes.
8147 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8148 * resolved along ECEF-frame axes.
8149 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8150 * resolved along body-frame axes, averaged over time interval and
8151 * expressed in meters per squared second (m/s^2).
8152 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8153 * resolved along body-frame axes, averaged over time interval and
8154 * expressed in meters per squared second (m/s^2).
8155 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8156 * resolved along body-frame axes, averaged over time interval and
8157 * expressed in meters per squared second (m/s^2).
8158 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8159 * resolved along body-frame axes, averaged over time interval and
8160 * expressed in radians per second (rad/s).
8161 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8162 * resolved along body-frame axes, averaged over time interval and
8163 * expressed in radians per second (rad/s).
8164 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8165 * resolved along body-frame axes, averaged over time interval and
8166 * expressed in radians per second (rad/s).
8167 * @param result instance where new estimated ECEF frame containing new body
8168 * position, velocity and coordinate transformation matrix will be stored.
8169 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8170 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8171 * body-to-ECEF-frame coordinate transformation matrix are
8172 * invalid.
8173 */
8174 public static void navigateECEF(
8175 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8176 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
8177 final double fx, final double fy, final double fz,
8178 final double angularRateX, final double angularRateY, final double angularRateZ,
8179 final ECEFFrame result) throws InertialNavigatorException,
8180 InvalidSourceAndDestinationFrameTypeException {
8181 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8182 oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8183 }
8184
8185 /**
8186 * Runs precision ECEF-frame inertial navigation equations.
8187 *
8188 * @param timeInterval time interval between epochs expressed in seconds (s).
8189 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8190 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8191 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8192 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8193 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8194 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8195 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8196 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8197 * resolved along ECEF-frame axes.
8198 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8199 * resolved along ECEF-frame axes.
8200 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8201 * resolved along ECEF-frame axes.
8202 * @param kinematics body kinematics containing specific forces and angular rates applied to
8203 * the body.
8204 * @param result instance where new estimated ECEF frame containing new body
8205 * position, velocity and coordinate transformation matrix will be stored.
8206 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8207 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8208 * body-to-ECEF-frame coordinate transformation matrix are
8209 * invalid.
8210 */
8211 public static void navigateECEF(
8212 final double timeInterval, final double oldX, final double oldY, final double oldZ,
8213 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
8214 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
8215 InvalidSourceAndDestinationFrameTypeException {
8216 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
8217 kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
8218 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
8219 }
8220
8221 /**
8222 * Runs precision ECEF-frame inertial navigation equations.
8223 *
8224 * @param timeInterval time interval between epochs.
8225 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8226 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8227 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8228 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8229 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8230 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8231 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8232 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8233 * resolved along ECEF-frame axes.
8234 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8235 * resolved along ECEF-frame axes.
8236 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8237 * resolved along ECEF-frame axes.
8238 * @param kinematics body kinematics containing specific forces and angular rates applied to
8239 * the body.
8240 * @param result instance where new estimated ECEF frame containing new body
8241 * position, velocity and coordinate transformation matrix will be stored.
8242 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8243 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8244 * body-to-ECEF-frame coordinate transformation matrix are
8245 * invalid.
8246 */
8247 public static void navigateECEF(
8248 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
8249 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
8250 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
8251 InvalidSourceAndDestinationFrameTypeException {
8252 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
8253 kinematics, result);
8254 }
8255
8256 /**
8257 * Runs precision ECEF-frame inertial navigation equations.
8258 *
8259 * @param timeInterval time interval between epochs expressed in seconds (s).
8260 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8261 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8262 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8263 * resolved along ECEF-frame axes.
8264 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8265 * resolved along ECEF-frame axes.
8266 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8267 * resolved along ECEF-frame axes.
8268 * @param kinematics body kinematics containing specific forces and angular rates applied to
8269 * the body.
8270 * @param result instance where new estimated ECEF frame containing new body
8271 * position, velocity and coordinate transformation matrix will be stored.
8272 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8273 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8274 * body-to-ECEF-frame coordinate transformation matrix are
8275 * invalid.
8276 */
8277 public static void navigateECEF(
8278 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8279 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics,
8280 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8281 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8282 oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
8283 }
8284
8285 /**
8286 * Runs precision ECEF-frame inertial navigation equations.
8287 *
8288 * @param timeInterval time interval between epochs.
8289 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8290 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8291 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
8292 * resolved along ECEF-frame axes.
8293 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
8294 * resolved along ECEF-frame axes.
8295 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
8296 * resolved along ECEF-frame axes.
8297 * @param kinematics body kinematics containing specific forces and angular rates applied to
8298 * the body.
8299 * @param result instance where new estimated ECEF frame containing new body
8300 * position, velocity and coordinate transformation matrix will be stored.
8301 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8302 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8303 * body-to-ECEF-frame coordinate transformation matrix are
8304 * invalid.
8305 */
8306 public static void navigateECEF(
8307 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8308 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics,
8309 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8310 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8311 oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
8312 }
8313
8314 /**
8315 * Runs precision ECEF-frame inertial navigation equations.
8316 *
8317 * @param timeInterval time interval between epochs expressed in seconds (s).
8318 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8319 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8320 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8321 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8322 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8323 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8324 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8325 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8326 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8327 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8328 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8329 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8330 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8331 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8332 * resolved along body-frame axes, averaged over time interval.
8333 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8334 * resolved along body-frame axes, averaged over time interval.
8335 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8336 * resolved along body-frame axes, averaged over time interval.
8337 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8338 * resolved along body-frame axes, averaged over time interval and
8339 * expressed in radians per second (rad/s).
8340 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8341 * resolved along body-frame axes, averaged over time interval and
8342 * expressed in radians per second (rad/s).
8343 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8344 * resolved along body-frame axes, averaged over time interval and
8345 * expressed in radians per second (rad/s).
8346 * @param result instance where new estimated ECEF frame containing new body
8347 * position, velocity and coordinate transformation matrix will be stored.
8348 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8349 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8350 * body-to-ECEF-frame coordinate transformation matrix are
8351 * invalid.
8352 */
8353 public static void navigateECEF(
8354 final double timeInterval, final double oldX, final double oldY, final double oldZ,
8355 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
8356 final Acceleration fx, final Acceleration fy, final Acceleration fz,
8357 final double angularRateX, final double angularRateY, final double angularRateZ,
8358 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8359 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
8360 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
8361 angularRateX, angularRateY, angularRateZ, result);
8362 }
8363
8364 /**
8365 * Runs precision ECEF-frame inertial navigation equations.
8366 *
8367 * @param timeInterval time interval between epochs.
8368 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8369 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8370 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8371 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8372 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8373 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8374 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8375 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8376 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8377 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8378 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8379 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8380 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8381 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8382 * resolved along body-frame axes, averaged over time interval.
8383 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8384 * resolved along body-frame axes, averaged over time interval.
8385 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8386 * resolved along body-frame axes, averaged over time interval.
8387 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8388 * resolved along body-frame axes, averaged over time interval and
8389 * expressed in radians per second (rad/s).
8390 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8391 * resolved along body-frame axes, averaged over time interval and
8392 * expressed in radians per second (rad/s).
8393 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8394 * resolved along body-frame axes, averaged over time interval and
8395 * expressed in radians per second (rad/s).
8396 * @param result instance where new estimated ECEF frame containing new body
8397 * position, velocity and coordinate transformation matrix will be stored.
8398 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8399 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8400 * body-to-ECEF-frame coordinate transformation matrix are
8401 * invalid.
8402 */
8403 public static void navigateECEF(
8404 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
8405 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
8406 final Acceleration fx, final Acceleration fy, final Acceleration fz,
8407 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8408 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8409 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
8410 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
8411 angularRateX, angularRateY, angularRateZ, result);
8412 }
8413
8414 /**
8415 * Runs precision ECEF-frame inertial navigation equations.
8416 *
8417 * @param timeInterval time interval between epochs expressed in seconds (s).
8418 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8419 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8420 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8421 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8422 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8423 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8424 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8425 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8426 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8427 * resolved along body-frame axes, averaged over time interval.
8428 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8429 * resolved along body-frame axes, averaged over time interval.
8430 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8431 * resolved along body-frame axes, averaged over time interval.
8432 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8433 * resolved along body-frame axes, averaged over time interval and
8434 * expressed in radians per second (rad/s).
8435 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8436 * resolved along body-frame axes, averaged over time interval and
8437 * expressed in radians per second (rad/s).
8438 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8439 * resolved along body-frame axes, averaged over time interval and
8440 * expressed in radians per second (rad/s).
8441 * @param result instance where new estimated ECEF frame containing new body
8442 * position, velocity and coordinate transformation matrix will be stored.
8443 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8444 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8445 * body-to-ECEF-frame coordinate transformation matrix are
8446 * invalid.
8447 */
8448 public static void navigateECEF(
8449 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8450 final double oldVx, final double oldVy, final double oldVz,
8451 final Acceleration fx, final Acceleration fy, final Acceleration fz,
8452 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8453 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8454 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8455 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8456 }
8457
8458 /**
8459 * Runs precision ECEF-frame inertial navigation equations.
8460 *
8461 * @param timeInterval time interval between epochs.
8462 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8463 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8464 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8465 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8466 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8467 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8468 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8469 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8470 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8471 * resolved along body-frame axes, averaged over time interval.
8472 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8473 * resolved along body-frame axes, averaged over time interval.
8474 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8475 * resolved along body-frame axes, averaged over time interval.
8476 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8477 * resolved along body-frame axes, averaged over time interval and
8478 * expressed in radians per second (rad/s).
8479 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8480 * resolved along body-frame axes, averaged over time interval and
8481 * expressed in radians per second (rad/s).
8482 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8483 * resolved along body-frame axes, averaged over time interval and
8484 * expressed in radians per second (rad/s).
8485 * @param result instance where new estimated ECEF frame containing new body
8486 * position, velocity and coordinate transformation matrix will be stored.
8487 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8488 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8489 * body-to-ECEF-frame coordinate transformation matrix are
8490 * invalid.
8491 */
8492 public static void navigateECEF(
8493 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8494 final double oldVx, final double oldVy, final double oldVz,
8495 final Acceleration fx, final Acceleration fy, final Acceleration fz,
8496 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8497 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8498 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8499 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8500 }
8501
8502 /**
8503 * Runs precision ECEF-frame inertial navigation equations.
8504 *
8505 * @param timeInterval time interval between epochs expressed in seconds (s).
8506 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8507 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8508 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8509 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8510 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8511 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8512 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8513 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8514 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8515 * resolved along body-frame axes, averaged over time interval.
8516 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8517 * resolved along body-frame axes, averaged over time interval.
8518 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8519 * resolved along body-frame axes, averaged over time interval.
8520 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8521 * resolved along body-frame axes, averaged over time interval and
8522 * expressed in radians per second (rad/s).
8523 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8524 * resolved along body-frame axes, averaged over time interval and
8525 * expressed in radians per second (rad/s).
8526 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8527 * resolved along body-frame axes, averaged over time interval and
8528 * expressed in radians per second (rad/s).
8529 * @param result instance where new estimated ECEF frame containing new body
8530 * position, velocity and coordinate transformation matrix will be stored.
8531 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8532 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8533 * body-to-ECEF-frame coordinate transformation matrix are
8534 * invalid.
8535 */
8536 public static void navigateECEF(
8537 final double timeInterval, final double oldX, final double oldY, final double oldZ,
8538 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
8539 final Acceleration fx, final Acceleration fy, final Acceleration fz,
8540 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8541 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8542 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
8543 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
8544 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
8545 angularRateX, angularRateY, angularRateZ, result);
8546 }
8547
8548 /**
8549 * Runs precision ECEF-frame inertial navigation equations.
8550 *
8551 * @param timeInterval time interval between epochs.
8552 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8553 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8554 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8555 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8556 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8557 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8558 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8559 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8560 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8561 * resolved along body-frame axes, averaged over time interval.
8562 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8563 * resolved along body-frame axes, averaged over time interval.
8564 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8565 * resolved along body-frame axes, averaged over time interval.
8566 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8567 * resolved along body-frame axes, averaged over time interval and
8568 * expressed in radians per second (rad/s).
8569 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8570 * resolved along body-frame axes, averaged over time interval and
8571 * expressed in radians per second (rad/s).
8572 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8573 * resolved along body-frame axes, averaged over time interval and
8574 * expressed in radians per second (rad/s).
8575 * @param result instance where new estimated ECEF frame containing new body
8576 * position, velocity and coordinate transformation matrix will be stored.
8577 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8578 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8579 * body-to-ECEF-frame coordinate transformation matrix are
8580 * invalid.
8581 */
8582 public static void navigateECEF(
8583 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
8584 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
8585 final Acceleration fx, final Acceleration fy, final Acceleration fz,
8586 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8587 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8588 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
8589 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
8590 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
8591 angularRateX, angularRateY, angularRateZ, result);
8592 }
8593
8594 /**
8595 * Runs precision ECEF-frame inertial navigation equations.
8596 *
8597 * @param timeInterval time interval between epochs expressed in seconds (s).
8598 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8599 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8600 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8601 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8602 * resolved along body-frame axes, averaged over time interval.
8603 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8604 * resolved along body-frame axes, averaged over time interval.
8605 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8606 * resolved along body-frame axes, averaged over time interval.
8607 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8608 * resolved along body-frame axes, averaged over time interval and
8609 * expressed in radians per second (rad/s).
8610 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8611 * resolved along body-frame axes, averaged over time interval and
8612 * expressed in radians per second (rad/s).
8613 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8614 * resolved along body-frame axes, averaged over time interval and
8615 * expressed in radians per second (rad/s).
8616 * @param result instance where new estimated ECEF frame containing new body
8617 * position, velocity and coordinate transformation matrix will be stored.
8618 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8619 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8620 * body-to-ECEF-frame coordinate transformation matrix are
8621 * invalid.
8622 */
8623 public static void navigateECEF(
8624 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8625 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
8626 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8627 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8628 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC, oldVelocity,
8629 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8630 }
8631
8632 /**
8633 * Runs precision ECEF-frame inertial navigation equations.
8634 *
8635 * @param timeInterval time interval between epochs.
8636 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8637 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8638 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8639 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8640 * resolved along body-frame axes, averaged over time interval.
8641 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8642 * resolved along body-frame axes, averaged over time interval.
8643 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8644 * resolved along body-frame axes, averaged over time interval.
8645 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8646 * resolved along body-frame axes, averaged over time interval and
8647 * expressed in radians per second (rad/s).
8648 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8649 * resolved along body-frame axes, averaged over time interval and
8650 * expressed in radians per second (rad/s).
8651 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8652 * resolved along body-frame axes, averaged over time interval and
8653 * expressed in radians per second (rad/s).
8654 * @param result instance where new estimated ECEF frame containing new body
8655 * position, velocity and coordinate transformation matrix will be stored.
8656 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8657 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8658 * body-to-ECEF-frame coordinate transformation matrix are
8659 * invalid.
8660 */
8661 public static void navigateECEF(
8662 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8663 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
8664 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
8665 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8666 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
8667 oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8668 }
8669
8670 /**
8671 * Runs precision ECEF-frame inertial navigation equations.
8672 *
8673 * @param timeInterval time interval between epochs expressed in seconds (s).
8674 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8675 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8676 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8677 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8678 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8679 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8680 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8681 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8682 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8683 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8684 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8685 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8686 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8687 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8688 * resolved along body-frame axes, averaged over time interval and
8689 * expressed in meters per squared second (m/s^2).
8690 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8691 * resolved along body-frame axes, averaged over time interval and
8692 * expressed in meters per squared second (m/s^2).
8693 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8694 * resolved along body-frame axes, averaged over time interval and
8695 * expressed in meters per squared second (m/s^2).
8696 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8697 * resolved along body-frame axes, averaged over time interval.
8698 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8699 * resolved along body-frame axes, averaged over time interval.
8700 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8701 * resolved along body-frame axes, averaged over time interval.
8702 * @param result instance where new estimated ECEF frame containing new body
8703 * position, velocity and coordinate transformation matrix will be stored.
8704 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8705 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8706 * body-to-ECEF-frame coordinate transformation matrix are
8707 * invalid.
8708 */
8709 public static void navigateECEF(
8710 final double timeInterval, final double oldX, final double oldY, final double oldZ,
8711 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
8712 final double fx, final double fy, final double fz,
8713 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8714 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8715 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
8716 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
8717 convertAngularSpeedToDouble(angularRateZ), result);
8718 }
8719
8720 /**
8721 * Runs precision ECEF-frame inertial navigation equations.
8722 *
8723 * @param timeInterval time interval between epochs.
8724 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8725 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8726 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8727 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8728 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8729 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8730 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8731 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8732 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8733 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8734 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8735 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8736 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8737 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8738 * resolved along body-frame axes, averaged over time interval and
8739 * expressed in meters per squared second (m/s^2).
8740 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8741 * resolved along body-frame axes, averaged over time interval and
8742 * expressed in meters per squared second (m/s^2).
8743 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8744 * resolved along body-frame axes, averaged over time interval and
8745 * expressed in meters per squared second (m/s^2).
8746 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8747 * resolved along body-frame axes, averaged over time interval.
8748 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8749 * resolved along body-frame axes, averaged over time interval.
8750 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8751 * resolved along body-frame axes, averaged over time interval.
8752 * @param result instance where new estimated ECEF frame containing new body
8753 * position, velocity and coordinate transformation matrix will be stored.
8754 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8755 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8756 * body-to-ECEF-frame coordinate transformation matrix are
8757 * invalid.
8758 */
8759 public static void navigateECEF(
8760 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
8761 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
8762 final double fx, final double fy, final double fz,
8763 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8764 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8765 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
8766 angularRateX, angularRateY, angularRateZ, result);
8767 }
8768
8769 /**
8770 * Runs precision ECEF-frame inertial navigation equations.
8771 *
8772 * @param timeInterval time interval between epochs expressed in seconds (s).
8773 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8774 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8775 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8776 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8777 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8778 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8779 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8780 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8781 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8782 * resolved along body-frame axes, averaged over time interval and
8783 * expressed in meters per squared second (m/s^2).
8784 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8785 * resolved along body-frame axes, averaged over time interval and
8786 * expressed in meters per squared second (m/s^2).
8787 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8788 * resolved along body-frame axes, averaged over time interval and
8789 * expressed in meters per squared second (m/s^2).
8790 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8791 * resolved along body-frame axes, averaged over time interval.
8792 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8793 * resolved along body-frame axes, averaged over time interval.
8794 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8795 * resolved along body-frame axes, averaged over time interval.
8796 * @param result instance where new estimated ECEF frame containing new body
8797 * position, velocity and coordinate transformation matrix will be stored.
8798 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8799 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8800 * body-to-ECEF-frame coordinate transformation matrix are
8801 * invalid.
8802 */
8803 public static void navigateECEF(
8804 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8805 final double oldVx, final double oldVy, final double oldVz,
8806 final double fx, final double fy, final double fz,
8807 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8808 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8809 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8810 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8811 }
8812
8813 /**
8814 * Runs precision ECEF-frame inertial navigation equations.
8815 *
8816 * @param timeInterval time interval between epochs.
8817 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8818 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8819 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
8820 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8821 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
8822 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8823 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
8824 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
8825 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8826 * resolved along body-frame axes, averaged over time interval and
8827 * expressed in meters per squared second (m/s^2).
8828 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8829 * resolved along body-frame axes, averaged over time interval and
8830 * expressed in meters per squared second (m/s^2).
8831 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8832 * resolved along body-frame axes, averaged over time interval and
8833 * expressed in meters per squared second (m/s^2).
8834 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8835 * resolved along body-frame axes, averaged over time interval.
8836 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8837 * resolved along body-frame axes, averaged over time interval.
8838 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8839 * resolved along body-frame axes, averaged over time interval.
8840 * @param result instance where new estimated ECEF frame containing new body
8841 * position, velocity and coordinate transformation matrix will be stored.
8842 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8843 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8844 * body-to-ECEF-frame coordinate transformation matrix are
8845 * invalid.
8846 */
8847 public static void navigateECEF(
8848 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8849 final double oldVx, final double oldVy, final double oldVz,
8850 final double fx, final double fy, final double fz,
8851 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8852 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8853 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8854 oldVx, oldVy, oldVz, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
8855 }
8856
8857 /**
8858 * Runs precision ECEF-frame inertial navigation equations.
8859 *
8860 * @param timeInterval time interval between epochs expressed in seconds (s).
8861 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8862 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8863 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8864 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8865 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8866 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8867 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8868 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8869 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8870 * resolved along body-frame axes, averaged over time interval and
8871 * expressed in meters per squared second (m/s^2).
8872 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8873 * resolved along body-frame axes, averaged over time interval and
8874 * expressed in meters per squared second (m/s^2).
8875 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8876 * resolved along body-frame axes, averaged over time interval and
8877 * expressed in meters per squared second (m/s^2).
8878 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8879 * resolved along body-frame axes, averaged over time interval.
8880 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8881 * resolved along body-frame axes, averaged over time interval.
8882 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8883 * resolved along body-frame axes, averaged over time interval.
8884 * @param result instance where new estimated ECEF frame containing new body
8885 * position, velocity and coordinate transformation matrix will be stored.
8886 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8887 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8888 * body-to-ECEF-frame coordinate transformation matrix are
8889 * invalid.
8890 */
8891 public static void navigateECEF(
8892 final double timeInterval, final double oldX, final double oldY, final double oldZ,
8893 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
8894 final double fx, final double fy, final double fz,
8895 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8896 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8897 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
8898 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
8899 convertAngularSpeedToDouble(angularRateX),
8900 convertAngularSpeedToDouble(angularRateY),
8901 convertAngularSpeedToDouble(angularRateZ), result);
8902 }
8903
8904 /**
8905 * Runs precision ECEF-frame inertial navigation equations.
8906 *
8907 * @param timeInterval time interval between epochs.
8908 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
8909 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8910 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
8911 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8912 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
8913 * frame, resolved along ECEF-frame axes and expressed in meters (m).
8914 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8915 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8916 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8917 * resolved along body-frame axes, averaged over time interval and
8918 * expressed in meters per squared second (m/s^2).
8919 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8920 * resolved along body-frame axes, averaged over time interval and
8921 * expressed in meters per squared second (m/s^2).
8922 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8923 * resolved along body-frame axes, averaged over time interval and
8924 * expressed in meters per squared second (m/s^2).
8925 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8926 * resolved along body-frame axes, averaged over time interval.
8927 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8928 * resolved along body-frame axes, averaged over time interval.
8929 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8930 * resolved along body-frame axes, averaged over time interval.
8931 * @param result instance where new estimated ECEF frame containing new body
8932 * position, velocity and coordinate transformation matrix will be stored.
8933 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8934 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8935 * body-to-ECEF-frame coordinate transformation matrix are
8936 * invalid.
8937 */
8938 public static void navigateECEF(
8939 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
8940 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
8941 final double fx, final double fy, final double fz,
8942 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8943 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8944 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
8945 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
8946 convertAngularSpeedToDouble(angularRateX),
8947 convertAngularSpeedToDouble(angularRateY),
8948 convertAngularSpeedToDouble(angularRateZ), result);
8949 }
8950
8951 /**
8952 * Runs precision ECEF-frame inertial navigation equations.
8953 *
8954 * @param timeInterval time interval between epochs expressed in seconds (s).
8955 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8956 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8957 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8958 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
8959 * resolved along body-frame axes, averaged over time interval and
8960 * expressed in meters per squared second (m/s^2).
8961 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
8962 * resolved along body-frame axes, averaged over time interval and
8963 * expressed in meters per squared second (m/s^2).
8964 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
8965 * resolved along body-frame axes, averaged over time interval and
8966 * expressed in meters per squared second (m/s^2).
8967 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
8968 * resolved along body-frame axes, averaged over time interval.
8969 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
8970 * resolved along body-frame axes, averaged over time interval.
8971 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
8972 * resolved along body-frame axes, averaged over time interval.
8973 * @param result instance where new estimated ECEF frame containing new body
8974 * position, velocity and coordinate transformation matrix will be stored.
8975 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
8976 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
8977 * body-to-ECEF-frame coordinate transformation matrix are
8978 * invalid.
8979 */
8980 public static void navigateECEF(
8981 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
8982 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
8983 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
8984 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
8985 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
8986 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
8987 convertAngularSpeedToDouble(angularRateX),
8988 convertAngularSpeedToDouble(angularRateY),
8989 convertAngularSpeedToDouble(angularRateZ), result);
8990 }
8991
8992 /**
8993 * Runs precision ECEF-frame inertial navigation equations.
8994 *
8995 * @param timeInterval time interval between epochs.
8996 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
8997 * @param oldC previous body-to-ECEF-frame coordinate transformation.
8998 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
8999 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9000 * resolved along body-frame axes, averaged over time interval and
9001 * expressed in meters per squared second (m/s^2).
9002 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9003 * resolved along body-frame axes, averaged over time interval and
9004 * expressed in meters per squared second (m/s^2).
9005 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9006 * resolved along body-frame axes, averaged over time interval and
9007 * expressed in meters per squared second (m/s^2).
9008 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9009 * resolved along body-frame axes, averaged over time interval.
9010 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9011 * resolved along body-frame axes, averaged over time interval.
9012 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9013 * resolved along body-frame axes, averaged over time interval.
9014 * @param result instance where new estimated ECEF frame containing new body
9015 * position, velocity and coordinate transformation matrix will be stored.
9016 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9017 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9018 * body-to-ECEF-frame coordinate transformation matrix are
9019 * invalid.
9020 */
9021 public static void navigateECEF(
9022 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9023 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
9024 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9025 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9026 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
9027 oldC, oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(), fx, fy, fz,
9028 convertAngularSpeedToDouble(angularRateX),
9029 convertAngularSpeedToDouble(angularRateY),
9030 convertAngularSpeedToDouble(angularRateZ), result);
9031 }
9032
9033 /**
9034 * Runs precision ECEF-frame inertial navigation equations.
9035 *
9036 * @param timeInterval time interval between epochs expressed in seconds (s).
9037 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9038 * frame, resolved along ECEF-frame axes.
9039 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9040 * frame, resolved along ECEF-frame axes.
9041 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9042 * frame, resolved along ECEF-frame axes.
9043 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9044 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9045 * resolved along ECEF-frame axes.
9046 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9047 * resolved along ECEF-frame axes.
9048 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9049 * resolved along ECEF-frame axes.
9050 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9051 * resolved along body-frame axes, averaged over time interval and
9052 * expressed in meters per squared second (m/s^2).
9053 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9054 * resolved along body-frame axes, averaged over time interval and
9055 * expressed in meters per squared second (m/s^2).
9056 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9057 * resolved along body-frame axes, averaged over time interval and
9058 * expressed in meters per squared second (m/s^2).
9059 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9060 * resolved along body-frame axes, averaged over time interval and
9061 * expressed in radians per second (rad/s).
9062 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9063 * resolved along body-frame axes, averaged over time interval and
9064 * expressed in radians per second (rad/s).
9065 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9066 * resolved along body-frame axes, averaged over time interval and
9067 * expressed in radians per second (rad/s).
9068 * @param result instance where new estimated ECEF frame containing new body
9069 * position, velocity and coordinate transformation matrix will be stored.
9070 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9071 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9072 * body-to-ECEF-frame coordinate transformation matrix are
9073 * invalid.
9074 */
9075 public static void navigateECEF(
9076 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9077 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9078 final double fx, final double fy, final double fz,
9079 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
9080 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9081 navigateECEF(timeInterval, convertDistanceToDouble(oldX), convertDistanceToDouble(oldY),
9082 convertDistanceToDouble(oldZ), oldC, convertSpeedToDouble(oldSpeedX), convertSpeedToDouble(oldSpeedY),
9083 convertSpeedToDouble(oldSpeedZ), fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
9084 }
9085
9086 /**
9087 * Runs precision ECEF-frame inertial navigation equations.
9088 *
9089 * @param timeInterval time interval between epochs.
9090 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9091 * frame, resolved along ECEF-frame axes.
9092 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9093 * frame, resolved along ECEF-frame axes.
9094 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9095 * frame, resolved along ECEF-frame axes.
9096 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9097 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9098 * resolved along ECEF-frame axes.
9099 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9100 * resolved along ECEF-frame axes.
9101 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9102 * resolved along ECEF-frame axes.
9103 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9104 * resolved along body-frame axes, averaged over time interval and
9105 * expressed in meters per squared second (m/s^2).
9106 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9107 * resolved along body-frame axes, averaged over time interval and
9108 * expressed in meters per squared second (m/s^2).
9109 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9110 * resolved along body-frame axes, averaged over time interval and
9111 * expressed in meters per squared second (m/s^2).
9112 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9113 * resolved along body-frame axes, averaged over time interval and
9114 * expressed in radians per second (rad/s).
9115 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9116 * resolved along body-frame axes, averaged over time interval and
9117 * expressed in radians per second (rad/s).
9118 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9119 * resolved along body-frame axes, averaged over time interval and
9120 * expressed in radians per second (rad/s).
9121 * @param result instance where new estimated ECEF frame containing new body
9122 * position, velocity and coordinate transformation matrix will be stored.
9123 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9124 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9125 * body-to-ECEF-frame coordinate transformation matrix are
9126 * invalid.
9127 */
9128 public static void navigateECEF(
9129 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9130 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9131 final double fx, final double fy, final double fz,
9132 final double angularRateX, final double angularRateY, final double angularRateZ,
9133 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9134 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
9135 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
9136 }
9137
9138 /**
9139 * Runs precision ECEF-frame inertial navigation equations.
9140 *
9141 * @param timeInterval time interval between epochs expressed in seconds (s).
9142 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9143 * frame, resolved along ECEF-frame axes.
9144 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9145 * frame, resolved along ECEF-frame axes.
9146 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9147 * frame, resolved along ECEF-frame axes.
9148 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9149 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9150 * resolved along ECEF-frame axes.
9151 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9152 * resolved along ECEF-frame axes.
9153 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9154 * resolved along ECEF-frame axes.
9155 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9156 * resolved along body-frame axes, averaged over time interval.
9157 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9158 * resolved along body-frame axes, averaged over time interval.
9159 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9160 * resolved along body-frame axes, averaged over time interval.
9161 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9162 * resolved along body-frame axes, averaged over time interval.
9163 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9164 * resolved along body-frame axes, averaged over time interval.
9165 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9166 * resolved along body-frame axes, averaged over time interval.
9167 * @param result instance where new estimated ECEF frame containing new body
9168 * position, velocity and coordinate transformation matrix will be stored.
9169 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9170 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9171 * body-to-ECEF-frame coordinate transformation matrix are
9172 * invalid.
9173 */
9174 public static void navigateECEF(
9175 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9176 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9177 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9178 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9179 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9180 navigateECEF(timeInterval, convertDistanceToDouble(oldX), convertDistanceToDouble(oldY),
9181 convertDistanceToDouble(oldZ), oldC,
9182 convertSpeedToDouble(oldSpeedX), convertSpeedToDouble(oldSpeedY), convertSpeedToDouble(oldSpeedZ),
9183 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9184 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
9185 convertAngularSpeedToDouble(angularRateZ), result);
9186 }
9187
9188 /**
9189 * Runs precision ECEF-frame inertial navigation equations.
9190 *
9191 * @param timeInterval time interval between epochs.
9192 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9193 * frame, resolved along ECEF-frame axes.
9194 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9195 * frame, resolved along ECEF-frame axes.
9196 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9197 * frame, resolved along ECEF-frame axes.
9198 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9199 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9200 * resolved along ECEF-frame axes.
9201 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9202 * resolved along ECEF-frame axes.
9203 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9204 * resolved along ECEF-frame axes.
9205 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9206 * resolved along body-frame axes, averaged over time interval.
9207 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9208 * resolved along body-frame axes, averaged over time interval.
9209 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9210 * resolved along body-frame axes, averaged over time interval.
9211 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9212 * resolved along body-frame axes, averaged over time interval.
9213 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9214 * resolved along body-frame axes, averaged over time interval.
9215 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9216 * resolved along body-frame axes, averaged over time interval.
9217 * @param result instance where new estimated ECEF frame containing new body
9218 * position, velocity and coordinate transformation matrix will be stored.
9219 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9220 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9221 * body-to-ECEF-frame coordinate transformation matrix are
9222 * invalid.
9223 */
9224 public static void navigateECEF(
9225 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9226 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9227 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9228 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9229 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9230 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
9231 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
9232 }
9233
9234 /**
9235 * Runs precision ECEF-frame inertial navigation equations.
9236 *
9237 * @param timeInterval time interval between epochs expressed in seconds (s).
9238 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
9239 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9240 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9241 * resolved along ECEF-frame axes.
9242 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9243 * resolved along ECEF-frame axes.
9244 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9245 * resolved along ECEF-frame axes.
9246 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9247 * resolved along body-frame axes, averaged over time interval.
9248 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9249 * resolved along body-frame axes, averaged over time interval.
9250 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9251 * resolved along body-frame axes, averaged over time interval.
9252 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9253 * resolved along body-frame axes, averaged over time interval.
9254 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9255 * resolved along body-frame axes, averaged over time interval.
9256 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9257 * resolved along body-frame axes, averaged over time interval.
9258 * @param result instance where new estimated ECEF frame containing new body
9259 * position, velocity and coordinate transformation matrix will be stored.
9260 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9261 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9262 * body-to-ECEF-frame coordinate transformation matrix are
9263 * invalid.
9264 */
9265 public static void navigateECEF(
9266 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9267 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9268 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9269 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9270 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9271 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
9272 oldC, oldSpeedX, oldSpeedY, oldSpeedZ, convertAccelerationToDouble(fx), convertAccelerationToDouble(fy),
9273 convertAccelerationToDouble(fz),
9274 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
9275 convertAngularSpeedToDouble(angularRateZ), result);
9276 }
9277
9278 /**
9279 * Runs precision ECEF-frame inertial navigation equations.
9280 *
9281 * @param timeInterval time interval between epochs.
9282 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
9283 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9284 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9285 * resolved along ECEF-frame axes.
9286 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9287 * resolved along ECEF-frame axes.
9288 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9289 * resolved along ECEF-frame axes.
9290 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9291 * resolved along body-frame axes, averaged over time interval.
9292 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9293 * resolved along body-frame axes, averaged over time interval.
9294 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9295 * resolved along body-frame axes, averaged over time interval.
9296 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9297 * resolved along body-frame axes, averaged over time interval.
9298 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9299 * resolved along body-frame axes, averaged over time interval.
9300 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9301 * resolved along body-frame axes, averaged over time interval.
9302 * @param result instance where new estimated ECEF frame containing new body
9303 * position, velocity and coordinate transformation matrix will be stored.
9304 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9305 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9306 * body-to-ECEF-frame coordinate transformation matrix are
9307 * invalid.
9308 */
9309 public static void navigateECEF(
9310 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9311 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9312 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9313 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9314 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9315 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
9316 oldC, oldSpeedX, oldSpeedY, oldSpeedZ, convertAccelerationToDouble(fx),
9317 convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9318 convertAngularSpeedToDouble(angularRateX),
9319 convertAngularSpeedToDouble(angularRateY),
9320 convertAngularSpeedToDouble(angularRateZ),
9321 result);
9322 }
9323
9324 /**
9325 * Runs precision ECEF-frame inertial navigation equations.
9326 *
9327 * @param timeInterval time interval between epochs expressed in seconds (s).
9328 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9329 * frame, resolved along ECEF-frame axes.
9330 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9331 * frame, resolved along ECEF-frame axes.
9332 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9333 * frame, resolved along ECEF-frame axes.
9334 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9335 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
9336 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9337 * resolved along body-frame axes, averaged over time interval.
9338 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9339 * resolved along body-frame axes, averaged over time interval.
9340 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9341 * resolved along body-frame axes, averaged over time interval.
9342 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9343 * resolved along body-frame axes, averaged over time interval.
9344 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9345 * resolved along body-frame axes, averaged over time interval.
9346 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9347 * resolved along body-frame axes, averaged over time interval.
9348 * @param result instance where new estimated ECEF frame containing new body
9349 * position, velocity and coordinate transformation matrix will be stored.
9350 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9351 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9352 * body-to-ECEF-frame coordinate transformation matrix are
9353 * invalid.
9354 */
9355 public static void navigateECEF(
9356 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9357 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
9358 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9359 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9360 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9361 navigateECEF(timeInterval, convertDistanceToDouble(oldX),
9362 convertDistanceToDouble(oldY), convertDistanceToDouble(oldZ), oldC,
9363 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
9364 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9365 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
9366 convertAngularSpeedToDouble(angularRateZ), result);
9367 }
9368
9369 /**
9370 * Runs precision ECEF-frame inertial navigation equations.
9371 *
9372 * @param timeInterval time interval between epochs.
9373 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9374 * frame, resolved along ECEF-frame axes.
9375 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9376 * frame, resolved along ECEF-frame axes.
9377 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9378 * frame, resolved along ECEF-frame axes.
9379 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9380 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
9381 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9382 * resolved along body-frame axes, averaged over time interval.
9383 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9384 * resolved along body-frame axes, averaged over time interval.
9385 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9386 * resolved along body-frame axes, averaged over time interval.
9387 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9388 * resolved along body-frame axes, averaged over time interval.
9389 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9390 * resolved along body-frame axes, averaged over time interval.
9391 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9392 * resolved along body-frame axes, averaged over time interval.
9393 * @param result instance where new estimated ECEF frame containing new body
9394 * position, velocity and coordinate transformation matrix will be stored.
9395 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9396 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9397 * body-to-ECEF-frame coordinate transformation matrix are
9398 * invalid.
9399 */
9400 public static void navigateECEF(
9401 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9402 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
9403 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9404 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9405 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9406 navigateECEF(timeInterval, convertDistanceToDouble(oldX),
9407 convertDistanceToDouble(oldY), convertDistanceToDouble(oldZ), oldC,
9408 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
9409 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9410 convertAngularSpeedToDouble(angularRateX),
9411 convertAngularSpeedToDouble(angularRateY),
9412 convertAngularSpeedToDouble(angularRateZ),
9413 result);
9414 }
9415
9416 /**
9417 * Runs precision ECEF-frame inertial navigation equations.
9418 *
9419 * @param timeInterval time interval between epochs expressed in seconds (s).
9420 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
9421 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9422 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
9423 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9424 * resolved along body-frame axes, averaged over time interval.
9425 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9426 * resolved along body-frame axes, averaged over time interval.
9427 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9428 * resolved along body-frame axes, averaged over time interval.
9429 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9430 * resolved along body-frame axes, averaged over time interval.
9431 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9432 * resolved along body-frame axes, averaged over time interval.
9433 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9434 * resolved along body-frame axes, averaged over time interval.
9435 * @param result instance where new estimated ECEF frame containing new body
9436 * position, velocity and coordinate transformation matrix will be stored.
9437 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9438 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9439 * body-to-ECEF-frame coordinate transformation matrix are
9440 * invalid.
9441 */
9442 public static void navigateECEF(
9443 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9444 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
9445 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9446 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9447 navigateECEF(timeInterval, oldPosition, oldC,
9448 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
9449 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9450 convertAngularSpeedToDouble(angularRateX),
9451 convertAngularSpeedToDouble(angularRateY),
9452 convertAngularSpeedToDouble(angularRateZ), result);
9453 }
9454
9455 /**
9456 * Runs precision ECEF-frame inertial navigation equations.
9457 *
9458 * @param timeInterval time interval between epochs.
9459 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
9460 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9461 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
9462 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9463 * resolved along body-frame axes, averaged over time interval.
9464 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9465 * resolved along body-frame axes, averaged over time interval.
9466 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9467 * resolved along body-frame axes, averaged over time interval.
9468 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9469 * resolved along body-frame axes, averaged over time interval.
9470 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9471 * resolved along body-frame axes, averaged over time interval.
9472 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9473 * resolved along body-frame axes, averaged over time interval.
9474 * @param result instance where new estimated ECEF frame containing new body
9475 * position, velocity and coordinate transformation matrix will be stored.
9476 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9477 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9478 * body-to-ECEF-frame coordinate transformation matrix are
9479 * invalid.
9480 */
9481 public static void navigateECEF(
9482 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9483 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
9484 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9485 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9486 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
9487 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9488 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
9489 convertAngularSpeedToDouble(angularRateZ), result);
9490 }
9491
9492 /**
9493 * Runs precision ECEF-frame inertial navigation equations.
9494 *
9495 * @param timeInterval time interval between epochs expressed in seconds (s).
9496 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9497 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9498 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9499 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9500 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9501 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9502 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9503 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
9504 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9505 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
9506 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9507 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
9508 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9509 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9510 * resolved along body-frame axes, averaged over time interval.
9511 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9512 * resolved along body-frame axes, averaged over time interval.
9513 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9514 * resolved along body-frame axes, averaged over time interval.
9515 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9516 * resolved along body-frame axes, averaged over time interval.
9517 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9518 * resolved along body-frame axes, averaged over time interval.
9519 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9520 * resolved along body-frame axes, averaged over time interval.
9521 * @param result instance where new estimated ECEF frame containing new body
9522 * position, velocity and coordinate transformation matrix will be stored.
9523 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9524 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9525 * body-to-ECEF-frame coordinate transformation matrix are
9526 * invalid.
9527 */
9528 public static void navigateECEF(
9529 final double timeInterval, final double oldX, final double oldY, final double oldZ,
9530 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
9531 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9532 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9533 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9534 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz,
9535 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9536 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
9537 convertAngularSpeedToDouble(angularRateZ), result);
9538 }
9539
9540 /**
9541 * Runs precision ECEF-frame inertial navigation equations.
9542 *
9543 * @param timeInterval time interval between epochs.
9544 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9545 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9546 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9547 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9548 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9549 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9550 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9551 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
9552 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9553 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
9554 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9555 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
9556 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9557 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9558 * resolved along body-frame axes, averaged over time interval.
9559 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9560 * resolved along body-frame axes, averaged over time interval.
9561 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9562 * resolved along body-frame axes, averaged over time interval.
9563 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9564 * resolved along body-frame axes, averaged over time interval.
9565 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9566 * resolved along body-frame axes, averaged over time interval.
9567 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9568 * resolved along body-frame axes, averaged over time interval.
9569 * @param result instance where new estimated ECEF frame containing new body
9570 * position, velocity and coordinate transformation matrix will be stored.
9571 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9572 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9573 * body-to-ECEF-frame coordinate transformation matrix are
9574 * invalid.
9575 */
9576 public static void navigateECEF(
9577 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
9578 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
9579 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9580 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9581 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9582 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
9583 angularRateX, angularRateY, angularRateZ, result);
9584 }
9585
9586 /**
9587 * Runs precision ECEF-frame inertial navigation equations.
9588 *
9589 * @param timeInterval time interval between epochs expressed in seconds (s).
9590 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
9591 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9592 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
9593 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9594 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
9595 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9596 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
9597 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9598 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9599 * resolved along body-frame axes, averaged over time interval.
9600 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9601 * resolved along body-frame axes, averaged over time interval.
9602 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9603 * resolved along body-frame axes, averaged over time interval.
9604 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9605 * resolved along body-frame axes, averaged over time interval.
9606 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9607 * resolved along body-frame axes, averaged over time interval.
9608 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9609 * resolved along body-frame axes, averaged over time interval.
9610 * @param result instance where new estimated ECEF frame containing new body
9611 * position, velocity and coordinate transformation matrix will be stored.
9612 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9613 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9614 * body-to-ECEF-frame coordinate transformation matrix are
9615 * invalid.
9616 */
9617 public static void navigateECEF(
9618 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9619 final double oldVx, final double oldVy, final double oldVz,
9620 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9621 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9622 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9623 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(), oldC,
9624 oldVx, oldVy, oldVz,
9625 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9626 convertAngularSpeedToDouble(angularRateX), convertAngularSpeedToDouble(angularRateY),
9627 convertAngularSpeedToDouble(angularRateZ), result);
9628 }
9629
9630 /**
9631 * Runs precision ECEF-frame inertial navigation equations.
9632 *
9633 * @param timeInterval time interval between epochs.
9634 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
9635 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9636 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
9637 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9638 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
9639 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9640 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
9641 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
9642 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9643 * resolved along body-frame axes, averaged over time interval.
9644 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9645 * resolved along body-frame axes, averaged over time interval.
9646 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9647 * resolved along body-frame axes, averaged over time interval.
9648 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9649 * resolved along body-frame axes, averaged over time interval.
9650 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9651 * resolved along body-frame axes, averaged over time interval.
9652 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9653 * resolved along body-frame axes, averaged over time interval.
9654 * @param result instance where new estimated ECEF frame containing new body
9655 * position, velocity and coordinate transformation matrix will be stored.
9656 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9657 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9658 * body-to-ECEF-frame coordinate transformation matrix are
9659 * invalid.
9660 */
9661 public static void navigateECEF(
9662 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
9663 final double oldVx, final double oldVy, final double oldVz,
9664 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9665 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9666 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9667 navigateECEF(timeInterval, oldPosition.getX(), oldPosition.getY(), oldPosition.getZ(),
9668 oldC, oldVx, oldVy, oldVz,
9669 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9670 convertAngularSpeedToDouble(angularRateX),
9671 convertAngularSpeedToDouble(angularRateY),
9672 convertAngularSpeedToDouble(angularRateZ), result);
9673 }
9674
9675 /**
9676 * Runs precision ECEF-frame inertial navigation equations.
9677 *
9678 * @param timeInterval time interval between epochs expressed in seconds (s).
9679 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9680 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9681 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9682 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9683 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9684 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9685 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9686 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
9687 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9688 * resolved along body-frame axes, averaged over time interval.
9689 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9690 * resolved along body-frame axes, averaged over time interval.
9691 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9692 * resolved along body-frame axes, averaged over time interval.
9693 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9694 * resolved along body-frame axes, averaged over time interval.
9695 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9696 * resolved along body-frame axes, averaged over time interval.
9697 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9698 * resolved along body-frame axes, averaged over time interval.
9699 * @param result instance where new estimated ECEF frame containing new body
9700 * position, velocity and coordinate transformation matrix will be stored.
9701 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9702 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9703 * body-to-ECEF-frame coordinate transformation matrix are
9704 * invalid.
9705 */
9706 public static void navigateECEF(
9707 final double timeInterval, final double oldX, final double oldY, final double oldZ,
9708 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
9709 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9710 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9711 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9712 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
9713 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
9714 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9715 convertAngularSpeedToDouble(angularRateX),
9716 convertAngularSpeedToDouble(angularRateY),
9717 convertAngularSpeedToDouble(angularRateZ), result);
9718 }
9719
9720 /**
9721 * Runs precision ECEF-frame inertial navigation equations.
9722 *
9723 * @param timeInterval time interval between epochs.
9724 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9725 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9726 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9727 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9728 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9729 * frame, resolved along ECEF-frame axes and expressed in meters (m).
9730 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9731 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
9732 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9733 * resolved along body-frame axes, averaged over time interval.
9734 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9735 * resolved along body-frame axes, averaged over time interval.
9736 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9737 * resolved along body-frame axes, averaged over time interval.
9738 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9739 * resolved along body-frame axes, averaged over time interval.
9740 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9741 * resolved along body-frame axes, averaged over time interval.
9742 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9743 * resolved along body-frame axes, averaged over time interval.
9744 * @param result instance where new estimated ECEF frame containing new body
9745 * position, velocity and coordinate transformation matrix will be stored.
9746 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9747 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9748 * body-to-ECEF-frame coordinate transformation matrix are
9749 * invalid.
9750 */
9751 public static void navigateECEF(
9752 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
9753 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
9754 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9755 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
9756 final ECEFFrame result) throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9757 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC,
9758 oldVelocity.getVx(), oldVelocity.getVy(), oldVelocity.getVz(),
9759 convertAccelerationToDouble(fx), convertAccelerationToDouble(fy), convertAccelerationToDouble(fz),
9760 convertAngularSpeedToDouble(angularRateX),
9761 convertAngularSpeedToDouble(angularRateY),
9762 convertAngularSpeedToDouble(angularRateZ), result);
9763 }
9764
9765 /**
9766 * Runs precision ECEF-frame inertial navigation equations.
9767 *
9768 * @param timeInterval time interval between epochs expressed in seconds (s).
9769 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9770 * frame, resolved along ECEF-frame axes.
9771 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9772 * frame, resolved along ECEF-frame axes.
9773 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9774 * frame, resolved along ECEF-frame axes.
9775 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9776 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9777 * resolved along ECEF-frame axes.
9778 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9779 * resolved along ECEF-frame axes.
9780 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9781 * resolved along ECEF-frame axes.
9782 * @param kinematics body kinematics containing specific forces and angular rates applied to
9783 * the body.
9784 * @param result instance where new estimated ECEF frame containing new body
9785 * position, velocity and coordinate transformation matrix will be stored.
9786 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9787 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9788 * body-to-ECEF-frame coordinate transformation matrix are
9789 * invalid.
9790 */
9791 public static void navigateECEF(
9792 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9793 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9794 final BodyKinematics kinematics, final ECEFFrame result)
9795 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
9796 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY,
9797 oldSpeedZ, kinematics.getFx(), kinematics.getFy(), kinematics.getFz(),
9798 kinematics.getAngularRateX(), kinematics.getAngularRateY(), kinematics.getAngularRateZ(), result);
9799 }
9800
9801 /**
9802 * Runs precision ECEF-frame inertial navigation equations.
9803 *
9804 * @param timeInterval time interval between epochs.
9805 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
9806 * frame, resolved along ECEF-frame axes.
9807 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
9808 * frame, resolved along ECEF-frame axes.
9809 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
9810 * frame, resolved along ECEF-frame axes.
9811 * @param oldC previous body-to-ECEF-frame coordinate transformation.
9812 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
9813 * resolved along ECEF-frame axes.
9814 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
9815 * resolved along ECEF-frame axes.
9816 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
9817 * resolved along ECEF-frame axes.
9818 * @param kinematics body kinematics containing specific forces and angular rates applied to
9819 * the body.
9820 * @param result instance where new estimated ECEF frame containing new body
9821 * position, velocity and coordinate transformation matrix will be stored.
9822 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9823 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
9824 * body-to-ECEF-frame coordinate transformation matrix are
9825 * invalid.
9826 */
9827 public static void navigateECEF(
9828 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
9829 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
9830 final BodyKinematics kinematics, final ECEFFrame result) throws InertialNavigatorException,
9831 InvalidSourceAndDestinationFrameTypeException {
9832 navigateECEF(convertTimeToDouble(timeInterval), oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ,
9833 kinematics, result);
9834 }
9835
9836 /**
9837 * Runs precision ECEF-frame inertial navigation equations.
9838 *
9839 * @param timeInterval time interval between epochs expressed in seconds (s).
9840 * @param oldFrame previous ECEF frame containing body position, velocity and
9841 * coordinate transformation matrix.
9842 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9843 * resolved along body-frame axes, averaged over time interval and
9844 * expressed in meters per squared second (m/s^2).
9845 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9846 * resolved along body-frame axes, averaged over time interval and
9847 * expressed in meters per squared second (m/s^2).
9848 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9849 * resolved along body-frame axes, averaged over time interval and
9850 * expressed in meters per squared second (m/s^2).
9851 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9852 * resolved along body-frame axes, averaged over time interval and
9853 * expressed in radians per second (rad/s).
9854 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9855 * resolved along body-frame axes, averaged over time interval and
9856 * expressed in radians per second (rad/s).
9857 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9858 * resolved along body-frame axes, averaged over time interval and
9859 * expressed in radians per second (rad/s).
9860 * @param result instance where new estimated ECEF frame containing new body
9861 * position, velocity and coordinate transformation matrix will be stored.
9862 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9863 */
9864 public static void navigateECEF(
9865 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
9866 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
9867 throws InertialNavigatorException {
9868 try {
9869 navigateECEF(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
9870 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
9871 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
9872 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
9873 // never happens
9874 }
9875 }
9876
9877 /**
9878 * Runs precision ECEF-frame inertial navigation equations.
9879 *
9880 * @param timeInterval time interval between epochs.
9881 * @param oldFrame previous ECEF frame containing body position, velocity and
9882 * coordinate transformation matrix.
9883 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9884 * resolved along body-frame axes, averaged over time interval and
9885 * expressed in meters per squared second (m/s^2).
9886 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9887 * resolved along body-frame axes, averaged over time interval and
9888 * expressed in meters per squared second (m/s^2).
9889 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9890 * resolved along body-frame axes, averaged over time interval and
9891 * expressed in meters per squared second (m/s^2).
9892 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9893 * resolved along body-frame axes, averaged over time interval and
9894 * expressed in radians per second (rad/s).
9895 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9896 * resolved along body-frame axes, averaged over time interval and
9897 * expressed in radians per second (rad/s).
9898 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9899 * resolved along body-frame axes, averaged over time interval and
9900 * expressed in radians per second (rad/s).
9901 * @param result instance where new estimated ECEF frame containing new body
9902 * position, velocity and coordinate transformation matrix will be stored.
9903 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9904 */
9905 public static void navigateECEF(
9906 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
9907 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
9908 throws InertialNavigatorException {
9909 navigateECEF(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
9910 result);
9911 }
9912
9913 /**
9914 * Runs precision ECEF-frame inertial navigation equations.
9915 *
9916 * @param timeInterval time interval between epochs expressed in seconds (s).
9917 * @param oldFrame previous ECEF frame containing body position, velocity and
9918 * coordinate transformation matrix.
9919 * @param kinematics body kinematics containing specific forces and angular rates applied to
9920 * the body.
9921 * @param result instance where new estimated ECEF frame containing new body
9922 * position, velocity and coordinate transformation matrix will be stored.
9923 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9924 */
9925 public static void navigateECEF(
9926 final double timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics, final ECEFFrame result)
9927 throws InertialNavigatorException {
9928 try {
9929 navigateECEF(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
9930 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
9931 kinematics, result);
9932 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
9933 // never happens
9934 }
9935 }
9936
9937 /**
9938 * Runs precision ECEF-frame inertial navigation equations.
9939 *
9940 * @param timeInterval time interval between epochs.
9941 * @param oldFrame previous ECEF frame containing body position, velocity and
9942 * coordinate transformation matrix.
9943 * @param kinematics body kinematics containing specific forces and angular rates applied to
9944 * the body.
9945 * @param result instance where new estimated ECEF frame containing new body
9946 * position, velocity and coordinate transformation matrix will be stored.
9947 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9948 */
9949 public static void navigateECEF(
9950 final Time timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics, final ECEFFrame result)
9951 throws InertialNavigatorException {
9952 navigateECEF(convertTimeToDouble(timeInterval), oldFrame, kinematics, result);
9953 }
9954
9955 /**
9956 * Runs precision ECEF-frame inertial navigation equations.
9957 *
9958 * @param timeInterval time interval between epochs expressed in seconds (s).
9959 * @param oldFrame previous ECEF frame containing body position, velocity and
9960 * coordinate transformation matrix.
9961 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
9962 * resolved along body-frame axes, averaged over time interval.
9963 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
9964 * resolved along body-frame axes, averaged over time interval.
9965 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
9966 * resolved along body-frame axes, averaged over time interval.
9967 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
9968 * resolved along body-frame axes, averaged over time interval and
9969 * expressed in radians per second (rad/s).
9970 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
9971 * resolved along body-frame axes, averaged over time interval and
9972 * expressed in radians per second (rad/s).
9973 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
9974 * resolved along body-frame axes, averaged over time interval and
9975 * expressed in radians per second (rad/s).
9976 * @param result instance where new estimated ECEF frame containing new body
9977 * position, velocity and coordinate transformation matrix will be stored.
9978 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
9979 */
9980 public static void navigateECEF(
9981 final double timeInterval, final ECEFFrame oldFrame,
9982 final Acceleration fx, final Acceleration fy, final Acceleration fz,
9983 final double angularRateX, final double angularRateY, final double angularRateZ, final ECEFFrame result)
9984 throws InertialNavigatorException {
9985 try {
9986 navigateECEF(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
9987 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
9988 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
9989 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
9990 // never happens
9991 }
9992 }
9993
9994 /**
9995 * Runs precision ECEF-frame inertial navigation equations.
9996 *
9997 * @param timeInterval time interval between epochs.
9998 * @param oldFrame previous ECEF frame containing body position, velocity and
9999 * coordinate transformation matrix.
10000 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10001 * resolved along body-frame axes, averaged over time interval.
10002 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10003 * resolved along body-frame axes, averaged over time interval.
10004 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10005 * resolved along body-frame axes, averaged over time interval.
10006 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10007 * resolved along body-frame axes, averaged over time interval and
10008 * expressed in radians per second (rad/s).
10009 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10010 * resolved along body-frame axes, averaged over time interval and
10011 * expressed in radians per second (rad/s).
10012 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10013 * resolved along body-frame axes, averaged over time interval and
10014 * expressed in radians per second (rad/s).
10015 * @param result instance where new estimated ECEF frame containing new body
10016 * position, velocity and coordinate transformation matrix will be stored.
10017 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10018 */
10019 public static void navigateECEF(
10020 final Time timeInterval, final ECEFFrame oldFrame,
10021 final Acceleration fx, final Acceleration fy, final Acceleration fz,
10022 final double angularRateX, final double angularRateY, final double angularRateZ,
10023 final ECEFFrame result) throws InertialNavigatorException {
10024 navigateECEF(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10025 result);
10026 }
10027
10028 /**
10029 * Runs precision ECEF-frame inertial navigation equations.
10030 *
10031 * @param timeInterval time interval between epochs expressed in seconds (s).
10032 * @param oldFrame previous ECEF frame containing body position, velocity and
10033 * coordinate transformation matrix.
10034 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10035 * resolved along body-frame axes, averaged over time interval and
10036 * expressed in meters per squared second (m/s^2).
10037 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10038 * resolved along body-frame axes, averaged over time interval and
10039 * expressed in meters per squared second (m/s^2).
10040 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10041 * resolved along body-frame axes, averaged over time interval and
10042 * expressed in meters per squared second (m/s^2).
10043 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10044 * resolved along body-frame axes, averaged over time interval.
10045 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10046 * resolved along body-frame axes, averaged over time interval.
10047 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10048 * resolved along body-frame axes, averaged over time interval.
10049 * @param result instance where new estimated ECEF frame containing new body
10050 * position, velocity and coordinate transformation matrix will be stored.
10051 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10052 */
10053 public static void navigateECEF(
10054 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
10055 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
10056 final ECEFFrame result) throws InertialNavigatorException {
10057 try {
10058 navigateECEF(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
10059 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
10060 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
10061 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
10062 // never happens
10063 }
10064 }
10065
10066 /**
10067 * Runs precision ECEF-frame inertial navigation equations.
10068 *
10069 * @param timeInterval time interval between epochs.
10070 * @param oldFrame previous ECEF frame containing body position, velocity and
10071 * coordinate transformation matrix.
10072 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10073 * resolved along body-frame axes, averaged over time interval and
10074 * expressed in meters per squared second (m/s^2).
10075 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10076 * resolved along body-frame axes, averaged over time interval and
10077 * expressed in meters per squared second (m/s^2).
10078 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10079 * resolved along body-frame axes, averaged over time interval and
10080 * expressed in meters per squared second (m/s^2).
10081 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10082 * resolved along body-frame axes, averaged over time interval.
10083 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10084 * resolved along body-frame axes, averaged over time interval.
10085 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10086 * resolved along body-frame axes, averaged over time interval.
10087 * @param result instance where new estimated ECEF frame containing new body
10088 * position, velocity and coordinate transformation matrix will be stored.
10089 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10090 */
10091 public static void navigateECEF(
10092 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
10093 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
10094 final ECEFFrame result) throws InertialNavigatorException {
10095 navigateECEF(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10096 result);
10097 }
10098
10099 /**
10100 * Runs precision ECEF-frame inertial navigation equations.
10101 *
10102 * @param timeInterval time interval between epochs expressed in seconds (s).
10103 * @param oldFrame previous ECEF frame containing body position, velocity and
10104 * coordinate transformation matrix.
10105 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10106 * resolved along body-frame axes, averaged over time interval.
10107 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10108 * resolved along body-frame axes, averaged over time interval.
10109 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10110 * resolved along body-frame axes, averaged over time interval.
10111 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10112 * resolved along body-frame axes, averaged over time interval.
10113 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10114 * resolved along body-frame axes, averaged over time interval.
10115 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10116 * resolved along body-frame axes, averaged over time interval.
10117 * @param result instance where new estimated ECEF frame containing new body
10118 * position, velocity and coordinate transformation matrix will be stored.
10119 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10120 */
10121 public static void navigateECEF(
10122 final double timeInterval, final ECEFFrame oldFrame,
10123 final Acceleration fx, final Acceleration fy, final Acceleration fz,
10124 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
10125 final ECEFFrame result) throws InertialNavigatorException {
10126 try {
10127 navigateECEF(timeInterval, oldFrame.getX(), oldFrame.getY(), oldFrame.getZ(),
10128 oldFrame.getCoordinateTransformation(), oldFrame.getVx(), oldFrame.getVy(), oldFrame.getVz(),
10129 fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
10130 } catch (final InvalidSourceAndDestinationFrameTypeException ignore) {
10131 // never happens
10132 }
10133 }
10134
10135 /**
10136 * Runs precision ECEF-frame inertial navigation equations.
10137 *
10138 * @param timeInterval time interval between epochs.
10139 * @param oldFrame previous ECEF frame containing body position, velocity and
10140 * coordinate transformation matrix.
10141 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10142 * resolved along body-frame axes, averaged over time interval.
10143 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10144 * resolved along body-frame axes, averaged over time interval.
10145 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10146 * resolved along body-frame axes, averaged over time interval.
10147 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10148 * resolved along body-frame axes, averaged over time interval.
10149 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10150 * resolved along body-frame axes, averaged over time interval.
10151 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10152 * resolved along body-frame axes, averaged over time interval.
10153 * @param result instance where new estimated ECEF frame containing new body
10154 * position, velocity and coordinate transformation matrix will be stored.
10155 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10156 */
10157 public static void navigateECEF(
10158 final Time timeInterval, final ECEFFrame oldFrame,
10159 final Acceleration fx, final Acceleration fy, final Acceleration fz,
10160 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ,
10161 final ECEFFrame result) throws InertialNavigatorException {
10162 navigateECEF(convertTimeToDouble(timeInterval), oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10163 result);
10164 }
10165
10166 /**
10167 * Runs precision ECEF-frame inertial navigation equations.
10168 *
10169 * @param timeInterval time interval between epochs expressed in seconds (s).
10170 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10171 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10172 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10173 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10174 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10175 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10176 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10177 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10178 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10179 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10180 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10181 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10182 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10183 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10184 * resolved along body-frame axes, averaged over time interval and
10185 * expressed in meters per squared second (m/s^2).
10186 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10187 * resolved along body-frame axes, averaged over time interval and
10188 * expressed in meters per squared second (m/s^2).
10189 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10190 * resolved along body-frame axes, averaged over time interval and
10191 * expressed in meters per squared second (m/s^2).
10192 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10193 * resolved along body-frame axes, averaged over time interval and
10194 * expressed in radians per second (rad/s).
10195 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10196 * resolved along body-frame axes, averaged over time interval and
10197 * expressed in radians per second (rad/s).
10198 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10199 * resolved along body-frame axes, averaged over time interval and
10200 * expressed in radians per second (rad/s).
10201 * @return estimated ECEF frame containing new body position, velocity and coordinate
10202 * transformation matrix.
10203 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10204 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10205 * body-to-ECEF-frame coordinate transformation matrix are
10206 * invalid.
10207 */
10208 public static ECEFFrame navigateECEFAndReturnNew(
10209 final double timeInterval, final double oldX, final double oldY, final double oldZ,
10210 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
10211 final double fx, final double fy, final double fz,
10212 final double angularRateX, final double angularRateY, final double angularRateZ)
10213 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10214 final var result = new ECEFFrame();
10215 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
10216 angularRateX, angularRateY, angularRateZ, result);
10217 return result;
10218 }
10219
10220 /**
10221 * Runs precision ECEF-frame inertial navigation equations.
10222 *
10223 * @param timeInterval time interval between epochs.
10224 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10225 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10226 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10227 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10228 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10229 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10230 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10231 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10232 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10233 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10234 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10235 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10236 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10237 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10238 * resolved along body-frame axes, averaged over time interval and
10239 * expressed in meters per squared second (m/s^2).
10240 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10241 * resolved along body-frame axes, averaged over time interval and
10242 * expressed in meters per squared second (m/s^2).
10243 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10244 * resolved along body-frame axes, averaged over time interval and
10245 * expressed in meters per squared second (m/s^2).
10246 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10247 * resolved along body-frame axes, averaged over time interval and
10248 * expressed in radians per second (rad/s).
10249 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10250 * resolved along body-frame axes, averaged over time interval and
10251 * expressed in radians per second (rad/s).
10252 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10253 * resolved along body-frame axes, averaged over time interval and
10254 * expressed in radians per second (rad/s).
10255 * @return estimated ECEF frame containing new body position, velocity and coordinate
10256 * transformation matrix.
10257 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10258 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10259 * body-to-ECEF-frame coordinate transformation matrix are
10260 * invalid.
10261 */
10262 public static ECEFFrame navigateECEFAndReturnNew(
10263 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
10264 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
10265 final double fx, final double fy, final double fz,
10266 final double angularRateX, final double angularRateY, final double angularRateZ)
10267 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10268 final var result = new ECEFFrame();
10269 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
10270 angularRateX, angularRateY, angularRateZ, result);
10271 return result;
10272 }
10273
10274 /**
10275 * Runs precision ECEF-frame inertial navigation equations.
10276 *
10277 * @param timeInterval time interval between epochs expressed in seconds (s).
10278 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10279 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10280 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10281 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10282 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10283 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10284 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10285 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10286 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10287 * resolved along body-frame axes, averaged over time interval and
10288 * expressed in meters per squared second (m/s^2).
10289 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10290 * resolved along body-frame axes, averaged over time interval and
10291 * expressed in meters per squared second (m/s^2).
10292 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10293 * resolved along body-frame axes, averaged over time interval and
10294 * expressed in meters per squared second (m/s^2).
10295 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10296 * resolved along body-frame axes, averaged over time interval and
10297 * expressed in radians per second (rad/s).
10298 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10299 * resolved along body-frame axes, averaged over time interval and
10300 * expressed in radians per second (rad/s).
10301 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10302 * resolved along body-frame axes, averaged over time interval and
10303 * expressed in radians per second (rad/s).
10304 * @return estimated ECEF frame containing new body position, velocity and coordinate
10305 * transformation matrix.
10306 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10307 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10308 * body-to-ECEF-frame coordinate transformation matrix are
10309 * invalid.
10310 */
10311 public static ECEFFrame navigateECEFAndReturnNew(
10312 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10313 final double oldVx, final double oldVy, final double oldVz,
10314 final double fx, final double fy, final double fz,
10315 final double angularRateX, final double angularRateY, final double angularRateZ)
10316 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10317 final var result = new ECEFFrame();
10318 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
10319 angularRateX, angularRateY, angularRateZ, result);
10320 return result;
10321 }
10322
10323 /**
10324 * Runs precision ECEF-frame inertial navigation equations.
10325 *
10326 * @param timeInterval time interval between epochs.
10327 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10328 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10329 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10330 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10331 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10332 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10333 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10334 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10335 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10336 * resolved along body-frame axes, averaged over time interval and
10337 * expressed in meters per squared second (m/s^2).
10338 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10339 * resolved along body-frame axes, averaged over time interval and
10340 * expressed in meters per squared second (m/s^2).
10341 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10342 * resolved along body-frame axes, averaged over time interval and
10343 * expressed in meters per squared second (m/s^2).
10344 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10345 * resolved along body-frame axes, averaged over time interval and
10346 * expressed in radians per second (rad/s).
10347 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10348 * resolved along body-frame axes, averaged over time interval and
10349 * expressed in radians per second (rad/s).
10350 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10351 * resolved along body-frame axes, averaged over time interval and
10352 * expressed in radians per second (rad/s).
10353 * @return estimated ECEF frame containing new body position, velocity and coordinate
10354 * transformation matrix.
10355 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10356 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10357 * body-to-ECEF-frame coordinate transformation matrix are
10358 * invalid.
10359 */
10360 public static ECEFFrame navigateECEFAndReturnNew(
10361 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10362 final double oldVx, final double oldVy, final double oldVz,
10363 final double fx, final double fy, final double fz,
10364 final double angularRateX, final double angularRateY, final double angularRateZ)
10365 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10366 final var result = new ECEFFrame();
10367 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
10368 angularRateX, angularRateY, angularRateZ, result);
10369 return result;
10370 }
10371
10372 /**
10373 * Runs precision ECEF-frame inertial navigation equations.
10374 *
10375 * @param timeInterval time interval between epochs expressed in seconds (s).
10376 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10377 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10378 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10379 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10380 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10381 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10382 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10383 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10384 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10385 * resolved along body-frame axes, averaged over time interval and
10386 * expressed in meters per squared second (m/s^2).
10387 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10388 * resolved along body-frame axes, averaged over time interval and
10389 * expressed in meters per squared second (m/s^2).
10390 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10391 * resolved along body-frame axes, averaged over time interval and
10392 * expressed in meters per squared second (m/s^2).
10393 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10394 * resolved along body-frame axes, averaged over time interval and
10395 * expressed in radians per second (rad/s).
10396 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10397 * resolved along body-frame axes, averaged over time interval and
10398 * expressed in radians per second (rad/s).
10399 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10400 * resolved along body-frame axes, averaged over time interval and
10401 * expressed in radians per second (rad/s).
10402 * @return estimated ECEF frame containing new body position, velocity and coordinate
10403 * transformation matrix.
10404 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10405 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10406 * body-to-ECEF-frame coordinate transformation matrix are
10407 * invalid.
10408 */
10409 public static ECEFFrame navigateECEFAndReturnNew(
10410 final double timeInterval, final double oldX, final double oldY, final double oldZ,
10411 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
10412 final double fx, final double fy, final double fz,
10413 final double angularRateX, final double angularRateY, final double angularRateZ)
10414 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10415 final var result = new ECEFFrame();
10416 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
10417 angularRateX, angularRateY, angularRateZ, result);
10418 return result;
10419 }
10420
10421 /**
10422 * Runs precision ECEF-frame inertial navigation equations.
10423 *
10424 * @param timeInterval time interval between epochs.
10425 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10426 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10427 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10428 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10429 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10430 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10431 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10432 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10433 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10434 * resolved along body-frame axes, averaged over time interval and
10435 * expressed in meters per squared second (m/s^2).
10436 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10437 * resolved along body-frame axes, averaged over time interval and
10438 * expressed in meters per squared second (m/s^2).
10439 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10440 * resolved along body-frame axes, averaged over time interval and
10441 * expressed in meters per squared second (m/s^2).
10442 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10443 * resolved along body-frame axes, averaged over time interval and
10444 * expressed in radians per second (rad/s).
10445 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10446 * resolved along body-frame axes, averaged over time interval and
10447 * expressed in radians per second (rad/s).
10448 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10449 * resolved along body-frame axes, averaged over time interval and
10450 * expressed in radians per second (rad/s).
10451 * @return estimated ECEF frame containing new body position, velocity and coordinate
10452 * transformation matrix.
10453 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10454 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10455 * body-to-ECEF-frame coordinate transformation matrix are
10456 * invalid.
10457 */
10458 public static ECEFFrame navigateECEFAndReturnNew(
10459 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
10460 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
10461 final double fx, final double fy, final double fz,
10462 final double angularRateX, final double angularRateY, final double angularRateZ)
10463 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10464 final var result = new ECEFFrame();
10465 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
10466 angularRateX, angularRateY, angularRateZ, result);
10467 return result;
10468 }
10469
10470 /**
10471 * Runs precision ECEF-frame inertial navigation equations.
10472 *
10473 * @param timeInterval time interval between epochs expressed in seconds (s).
10474 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10475 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10476 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10477 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10478 * resolved along body-frame axes, averaged over time interval and
10479 * expressed in meters per squared second (m/s^2).
10480 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10481 * resolved along body-frame axes, averaged over time interval and
10482 * expressed in meters per squared second (m/s^2).
10483 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10484 * resolved along body-frame axes, averaged over time interval and
10485 * expressed in meters per squared second (m/s^2).
10486 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10487 * resolved along body-frame axes, averaged over time interval and
10488 * expressed in radians per second (rad/s).
10489 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10490 * resolved along body-frame axes, averaged over time interval and
10491 * expressed in radians per second (rad/s).
10492 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10493 * resolved along body-frame axes, averaged over time interval and
10494 * expressed in radians per second (rad/s).
10495 * @return estimated ECEF frame containing new body position, velocity and coordinate
10496 * transformation matrix.
10497 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10498 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10499 * body-to-ECEF-frame coordinate transformation matrix are
10500 * invalid.
10501 */
10502 public static ECEFFrame navigateECEFAndReturnNew(
10503 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10504 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
10505 final double angularRateX, final double angularRateY, final double angularRateZ)
10506 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10507 final var result = new ECEFFrame();
10508 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10509 result);
10510 return result;
10511 }
10512
10513 /**
10514 * Runs precision ECEF-frame inertial navigation equations.
10515 *
10516 * @param timeInterval time interval between epochs.
10517 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10518 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10519 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10520 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10521 * resolved along body-frame axes, averaged over time interval and
10522 * expressed in meters per squared second (m/s^2).
10523 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10524 * resolved along body-frame axes, averaged over time interval and
10525 * expressed in meters per squared second (m/s^2).
10526 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10527 * resolved along body-frame axes, averaged over time interval and
10528 * expressed in meters per squared second (m/s^2).
10529 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10530 * resolved along body-frame axes, averaged over time interval and
10531 * expressed in radians per second (rad/s).
10532 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10533 * resolved along body-frame axes, averaged over time interval and
10534 * expressed in radians per second (rad/s).
10535 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10536 * resolved along body-frame axes, averaged over time interval and
10537 * expressed in radians per second (rad/s).
10538 * @return estimated ECEF frame containing new body position, velocity and coordinate
10539 * transformation matrix.
10540 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10541 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10542 * body-to-ECEF-frame coordinate transformation matrix are
10543 * invalid.
10544 */
10545 public static ECEFFrame navigateECEFAndReturnNew(
10546 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10547 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
10548 final double angularRateX, final double angularRateY, final double angularRateZ)
10549 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10550 final var result = new ECEFFrame();
10551 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10552 result);
10553 return result;
10554 }
10555
10556 /**
10557 * Runs precision ECEF-frame inertial navigation equations.
10558 *
10559 * @param timeInterval time interval between epochs expressed in seconds (s).
10560 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10561 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10562 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10563 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10564 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10565 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10566 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10567 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10568 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10569 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10570 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10571 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10572 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10573 * @param kinematics body kinematics containing specific forces and angular rates applied to
10574 * the body.
10575 * @return estimated ECEF frame containing new body position, velocity and coordinate
10576 * transformation matrix.
10577 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10578 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10579 * body-to-ECEF-frame coordinate transformation matrix are
10580 * invalid.
10581 */
10582 public static ECEFFrame navigateECEFAndReturnNew(
10583 final double timeInterval, final double oldX, final double oldY, final double oldZ,
10584 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
10585 final BodyKinematics kinematics) throws InertialNavigatorException,
10586 InvalidSourceAndDestinationFrameTypeException {
10587 final var result = new ECEFFrame();
10588 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
10589 return result;
10590 }
10591
10592 /**
10593 * Runs precision ECEF-frame inertial navigation equations.
10594 *
10595 * @param timeInterval time interval between epochs.
10596 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10597 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10598 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10599 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10600 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10601 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10602 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10603 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10604 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10605 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10606 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10607 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10608 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10609 * @param kinematics body kinematics containing specific forces and angular rates applied to
10610 * the body.
10611 * @return estimated ECEF frame containing new body position, velocity and coordinate
10612 * transformation matrix.
10613 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10614 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10615 * body-to-ECEF-frame coordinate transformation matrix are
10616 * invalid.
10617 */
10618 public static ECEFFrame navigateECEFAndReturnNew(
10619 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
10620 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
10621 final BodyKinematics kinematics) throws InertialNavigatorException,
10622 InvalidSourceAndDestinationFrameTypeException {
10623 final var result = new ECEFFrame();
10624 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
10625 return result;
10626 }
10627
10628 /**
10629 * Runs precision ECEF-frame inertial navigation equations.
10630 *
10631 * @param timeInterval time interval between epochs expressed in seconds (s).
10632 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10633 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10634 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10635 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10636 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10637 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10638 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10639 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10640 * @param kinematics body kinematics containing specific forces and angular rates applied to
10641 * the body.
10642 * @return estimated ECEF frame containing new body position, velocity and coordinate
10643 * transformation matrix.
10644 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10645 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10646 * body-to-ECEF-frame coordinate transformation matrix are
10647 * invalid.
10648 */
10649 public static ECEFFrame navigateECEFAndReturnNew(
10650 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10651 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
10652 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10653 final var result = new ECEFFrame();
10654 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
10655 return result;
10656 }
10657
10658 /**
10659 * Runs precision ECEF-frame inertial navigation equations.
10660 *
10661 * @param timeInterval time interval between epochs.
10662 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10663 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10664 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10665 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10666 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10667 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10668 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10669 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10670 * @param kinematics body kinematics containing specific forces and angular rates applied to
10671 * the body.
10672 * @return estimated ECEF frame containing new body position, velocity and coordinate
10673 * transformation matrix.
10674 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10675 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10676 * body-to-ECEF-frame coordinate transformation matrix are
10677 * invalid.
10678 */
10679 public static ECEFFrame navigateECEFAndReturnNew(
10680 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10681 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
10682 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10683 final var result = new ECEFFrame();
10684 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
10685 return result;
10686 }
10687
10688 /**
10689 * Runs precision ECEF-frame inertial navigation equations.
10690 *
10691 * @param timeInterval time interval between epochs expressed in seconds (s).
10692 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10693 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10694 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10695 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10696 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10697 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10698 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10699 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10700 * @param kinematics body kinematics containing specific forces and angular rates applied to
10701 * the body.
10702 * @return estimated ECEF frame containing new body position, velocity and coordinate
10703 * transformation matrix.
10704 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10705 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10706 * body-to-ECEF-frame coordinate transformation matrix are
10707 * invalid.
10708 */
10709 public static ECEFFrame navigateECEFAndReturnNew(
10710 final double timeInterval, final double oldX, final double oldY, final double oldZ,
10711 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
10712 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10713 final var result = new ECEFFrame();
10714 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
10715 return result;
10716 }
10717
10718 /**
10719 * Runs precision ECEF-frame inertial navigation equations.
10720 *
10721 * @param timeInterval time interval between epochs.
10722 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
10723 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10724 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
10725 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10726 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
10727 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10728 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10729 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10730 * @param kinematics body kinematics containing specific forces and angular rates applied to
10731 * the body.
10732 * @return estimated ECEF frame containing new body position, velocity and coordinate
10733 * transformation matrix.
10734 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10735 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10736 * body-to-ECEF-frame coordinate transformation matrix are
10737 * invalid.
10738 */
10739 public static ECEFFrame navigateECEFAndReturnNew(
10740 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
10741 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
10742 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10743 final var result = new ECEFFrame();
10744 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
10745 return result;
10746 }
10747
10748 /**
10749 * Runs precision ECEF-frame inertial navigation equations.
10750 *
10751 * @param timeInterval time interval between epochs expressed in seconds (s).
10752 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10753 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10754 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10755 * @param kinematics body kinematics containing specific forces and angular rates applied to
10756 * the body.
10757 * @return estimated ECEF frame containing new body position, velocity and coordinate
10758 * transformation matrix.
10759 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10760 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10761 * body-to-ECEF-frame coordinate transformation matrix are
10762 * invalid.
10763 */
10764 public static ECEFFrame navigateECEFAndReturnNew(
10765 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10766 final ECEFVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
10767 InvalidSourceAndDestinationFrameTypeException {
10768 final var result = new ECEFFrame();
10769 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
10770 return result;
10771 }
10772
10773 /**
10774 * Runs precision ECEF-frame inertial navigation equations.
10775 *
10776 * @param timeInterval time interval between epochs.
10777 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
10778 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10779 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10780 * @param kinematics body kinematics containing specific forces and angular rates applied to
10781 * the body.
10782 * @return estimated ECEF frame containing new body position, velocity and coordinate
10783 * transformation matrix.
10784 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10785 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10786 * body-to-ECEF-frame coordinate transformation matrix are
10787 * invalid.
10788 */
10789 public static ECEFFrame navigateECEFAndReturnNew(
10790 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
10791 final ECEFVelocity oldVelocity, final BodyKinematics kinematics) throws InertialNavigatorException,
10792 InvalidSourceAndDestinationFrameTypeException {
10793 final var result = new ECEFFrame();
10794 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
10795 return result;
10796 }
10797
10798 /**
10799 * Runs precision ECEF-frame inertial navigation equations.
10800 *
10801 * @param timeInterval time interval between epochs expressed in seconds (s).
10802 * @param oldPosition previous cartesian position of body frame with respect ECEF
10803 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10804 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10805 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10806 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10807 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10808 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10809 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10810 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10811 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10812 * resolved along body-frame axes, averaged over time interval and
10813 * expressed in meters per squared second (m/s^2).
10814 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10815 * resolved along body-frame axes, averaged over time interval and
10816 * expressed in meters per squared second (m/s^2).
10817 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10818 * resolved along body-frame axes, averaged over time interval and
10819 * expressed in meters per squared second (m/s^2).
10820 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10821 * resolved along body-frame axes, averaged over time interval and
10822 * expressed in radians per second (rad/s).
10823 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10824 * resolved along body-frame axes, averaged over time interval and
10825 * expressed in radians per second (rad/s).
10826 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10827 * resolved along body-frame axes, averaged over time interval and
10828 * expressed in radians per second (rad/s).
10829 * @return estimated ECEF frame containing new body position, velocity and coordinate
10830 * transformation matrix.
10831 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10832 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10833 * body-to-ECEF-frame coordinate transformation matrix are
10834 * invalid.
10835 */
10836 public static ECEFFrame navigateECEFAndReturnNew(
10837 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
10838 final double oldVx, final double oldVy, final double oldVz,
10839 final double fx, final double fy, final double fz,
10840 final double angularRateX, final double angularRateY, final double angularRateZ)
10841 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10842 final var result = new ECEFFrame();
10843 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
10844 angularRateX, angularRateY, angularRateZ, result);
10845 return result;
10846 }
10847
10848 /**
10849 * Runs precision ECEF-frame inertial navigation equations.
10850 *
10851 * @param timeInterval time interval between epochs.
10852 * @param oldPosition previous cartesian position of body frame with respect ECEF
10853 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10854 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10855 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10856 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10857 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10858 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10859 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10860 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10861 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10862 * resolved along body-frame axes, averaged over time interval and
10863 * expressed in meters per squared second (m/s^2).
10864 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10865 * resolved along body-frame axes, averaged over time interval and
10866 * expressed in meters per squared second (m/s^2).
10867 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10868 * resolved along body-frame axes, averaged over time interval and
10869 * expressed in meters per squared second (m/s^2).
10870 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10871 * resolved along body-frame axes, averaged over time interval and
10872 * expressed in radians per second (rad/s).
10873 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10874 * resolved along body-frame axes, averaged over time interval and
10875 * expressed in radians per second (rad/s).
10876 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10877 * resolved along body-frame axes, averaged over time interval and
10878 * expressed in radians per second (rad/s).
10879 * @return estimated ECEF frame containing new body position, velocity and coordinate
10880 * transformation matrix.
10881 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10882 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10883 * body-to-ECEF-frame coordinate transformation matrix are
10884 * invalid.
10885 */
10886 public static ECEFFrame navigateECEFAndReturnNew(
10887 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
10888 final double oldVx, final double oldVy, final double oldVz,
10889 final double fx, final double fy, final double fz,
10890 final double angularRateX, final double angularRateY, final double angularRateZ)
10891 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10892 final var result = new ECEFFrame();
10893 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
10894 angularRateX, angularRateY, angularRateZ, result);
10895 return result;
10896 }
10897
10898 /**
10899 * Runs precision ECEF-frame inertial navigation equations.
10900 *
10901 * @param timeInterval time interval between epochs expressed in seconds (s).
10902 * @param oldPosition previous cartesian position of body frame with respect ECEF
10903 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10904 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10905 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10906 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10907 * resolved along body-frame axes, averaged over time interval and
10908 * expressed in meters per squared second (m/s^2).
10909 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10910 * resolved along body-frame axes, averaged over time interval and
10911 * expressed in meters per squared second (m/s^2).
10912 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10913 * resolved along body-frame axes, averaged over time interval and
10914 * expressed in meters per squared second (m/s^2).
10915 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10916 * resolved along body-frame axes, averaged over time interval and
10917 * expressed in radians per second (rad/s).
10918 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10919 * resolved along body-frame axes, averaged over time interval and
10920 * expressed in radians per second (rad/s).
10921 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10922 * resolved along body-frame axes, averaged over time interval and
10923 * expressed in radians per second (rad/s).
10924 * @return estimated ECEF frame containing new body position, velocity and coordinate
10925 * transformation matrix.
10926 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10927 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10928 * body-to-ECEF-frame coordinate transformation matrix are
10929 * invalid.
10930 */
10931 public static ECEFFrame navigateECEFAndReturnNew(
10932 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
10933 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
10934 final double angularRateX, final double angularRateY, final double angularRateZ)
10935 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10936 final var result = new ECEFFrame();
10937 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10938 result);
10939 return result;
10940 }
10941
10942 /**
10943 * Runs precision ECEF-frame inertial navigation equations.
10944 *
10945 * @param timeInterval time interval between epochs expressed in seconds (s).
10946 * @param oldPosition previous cartesian position of body frame with respect ECEF
10947 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10948 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10949 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
10950 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
10951 * resolved along body-frame axes, averaged over time interval and
10952 * expressed in meters per squared second (m/s^2).
10953 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
10954 * resolved along body-frame axes, averaged over time interval and
10955 * expressed in meters per squared second (m/s^2).
10956 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
10957 * resolved along body-frame axes, averaged over time interval and
10958 * expressed in meters per squared second (m/s^2).
10959 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
10960 * resolved along body-frame axes, averaged over time interval and
10961 * expressed in radians per second (rad/s).
10962 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
10963 * resolved along body-frame axes, averaged over time interval and
10964 * expressed in radians per second (rad/s).
10965 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
10966 * resolved along body-frame axes, averaged over time interval and
10967 * expressed in radians per second (rad/s).
10968 * @return estimated ECEF frame containing new body position, velocity and coordinate
10969 * transformation matrix.
10970 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
10971 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
10972 * body-to-ECEF-frame coordinate transformation matrix are
10973 * invalid.
10974 */
10975 public static ECEFFrame navigateECEFAndReturnNew(
10976 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
10977 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
10978 final double angularRateX, final double angularRateY, final double angularRateZ)
10979 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
10980 final var result = new ECEFFrame();
10981 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
10982 result);
10983 return result;
10984 }
10985
10986 /**
10987 * Runs precision ECEF-frame inertial navigation equations.
10988 *
10989 * @param timeInterval time interval between epochs expressed in seconds (s).
10990 * @param oldPosition previous cartesian position of body frame with respect ECEF
10991 * frame, resolved along ECEF-frame axes and expressed in meters (m).
10992 * @param oldC previous body-to-ECEF-frame coordinate transformation.
10993 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
10994 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10995 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
10996 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10997 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
10998 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
10999 * @param kinematics body kinematics containing specific forces and angular rates applied to
11000 * the body.
11001 * @return estimated ECEF frame containing new body position, velocity and coordinate
11002 * transformation matrix.
11003 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11004 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11005 * body-to-ECEF-frame coordinate transformation matrix are
11006 * invalid.
11007 */
11008 public static ECEFFrame navigateECEFAndReturnNew(
11009 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
11010 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
11011 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11012 final var result = new ECEFFrame();
11013 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
11014 return result;
11015 }
11016
11017 /**
11018 * Runs precision ECEF-frame inertial navigation equations.
11019 *
11020 * @param timeInterval time interval between epochs.
11021 * @param oldPosition previous cartesian position of body frame with respect ECEF
11022 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11023 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11024 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11025 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11026 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11027 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11028 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11029 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11030 * @param kinematics body kinematics containing specific forces and angular rates applied to
11031 * the body.
11032 * @return estimated ECEF frame containing new body position, velocity and coordinate
11033 * transformation matrix.
11034 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11035 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11036 * body-to-ECEF-frame coordinate transformation matrix are
11037 * invalid.
11038 */
11039 public static ECEFFrame navigateECEFAndReturnNew(
11040 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
11041 final double oldVx, final double oldVy, final double oldVz, final BodyKinematics kinematics)
11042 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11043 final var result = new ECEFFrame();
11044 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, kinematics, result);
11045 return result;
11046 }
11047
11048 /**
11049 * Runs precision ECEF-frame inertial navigation equations.
11050 *
11051 * @param timeInterval time interval between epochs expressed in seconds (s).
11052 * @param oldPosition previous cartesian position of body frame with respect ECEF
11053 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11054 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11055 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11056 * @param kinematics body kinematics containing specific forces and angular rates applied to
11057 * the body.
11058 * @return estimated ECEF frame containing new body position, velocity and coordinate
11059 * transformation matrix.
11060 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11061 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11062 * body-to-ECEF-frame coordinate transformation matrix are
11063 * invalid.
11064 */
11065 public static ECEFFrame navigateECEFAndReturnNew(
11066 final double timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
11067 final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
11068 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11069 final var result = new ECEFFrame();
11070 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
11071 return result;
11072 }
11073
11074 /**
11075 * Runs precision ECEF-frame inertial navigation equations.
11076 *
11077 * @param timeInterval time interval between epochs.
11078 * @param oldPosition previous cartesian position of body frame with respect ECEF
11079 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11080 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11081 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11082 * @param kinematics body kinematics containing specific forces and angular rates applied to
11083 * the body.
11084 * @return estimated ECEF frame containing new body position, velocity and coordinate
11085 * transformation matrix.
11086 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11087 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11088 * body-to-ECEF-frame coordinate transformation matrix are
11089 * invalid.
11090 */
11091 public static ECEFFrame navigateECEFAndReturnNew(
11092 final Time timeInterval, final Point3D oldPosition, final CoordinateTransformation oldC,
11093 final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
11094 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11095 final var result = new ECEFFrame();
11096 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, kinematics, result);
11097 return result;
11098 }
11099
11100 /**
11101 * Runs precision ECEF-frame inertial navigation equations.
11102 *
11103 * @param timeInterval time interval between epochs expressed in seconds (s).
11104 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11105 * frame, resolved along ECEF-frame axes.
11106 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11107 * frame, resolved along ECEF-frame axes.
11108 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11109 * frame, resolved along ECEF-frame axes.
11110 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11111 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11112 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11113 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11114 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11115 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11116 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11117 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11118 * resolved along body-frame axes, averaged over time interval and
11119 * expressed in meters per squared second (m/s^2).
11120 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11121 * resolved along body-frame axes, averaged over time interval and
11122 * expressed in meters per squared second (m/s^2).
11123 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11124 * resolved along body-frame axes, averaged over time interval and
11125 * expressed in meters per squared second (m/s^2).
11126 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11127 * resolved along body-frame axes, averaged over time interval and
11128 * expressed in radians per second (rad/s).
11129 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11130 * resolved along body-frame axes, averaged over time interval and
11131 * expressed in radians per second (rad/s).
11132 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11133 * resolved along body-frame axes, averaged over time interval and
11134 * expressed in radians per second (rad/s).
11135 * @return estimated ECEF frame containing new body position, velocity and coordinate
11136 * transformation matrix.
11137 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11138 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11139 * body-to-ECEF-frame coordinate transformation matrix are
11140 * invalid.
11141 */
11142 public static ECEFFrame navigateECEFAndReturnNew(
11143 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11144 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
11145 final double fx, final double fy, final double fz,
11146 final double angularRateX, final double angularRateY, final double angularRateZ)
11147 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11148 final var result = new ECEFFrame();
11149 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
11150 angularRateX, angularRateY, angularRateZ, result);
11151 return result;
11152 }
11153
11154 /**
11155 * Runs precision ECEF-frame inertial navigation equations.
11156 *
11157 * @param timeInterval time interval between epochs.
11158 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11159 * frame, resolved along ECEF-frame axes.
11160 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11161 * frame, resolved along ECEF-frame axes.
11162 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11163 * frame, resolved along ECEF-frame axes.
11164 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11165 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11166 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11167 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11168 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11169 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11170 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11171 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11172 * resolved along body-frame axes, averaged over time interval and
11173 * expressed in meters per squared second (m/s^2).
11174 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11175 * resolved along body-frame axes, averaged over time interval and
11176 * expressed in meters per squared second (m/s^2).
11177 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11178 * resolved along body-frame axes, averaged over time interval and
11179 * expressed in meters per squared second (m/s^2).
11180 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11181 * resolved along body-frame axes, averaged over time interval and
11182 * expressed in radians per second (rad/s).
11183 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11184 * resolved along body-frame axes, averaged over time interval and
11185 * expressed in radians per second (rad/s).
11186 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11187 * resolved along body-frame axes, averaged over time interval and
11188 * expressed in radians per second (rad/s).
11189 * @return estimated ECEF frame containing new body position, velocity and coordinate
11190 * transformation matrix.
11191 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11192 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11193 * body-to-ECEF-frame coordinate transformation matrix are
11194 * invalid.
11195 */
11196 public static ECEFFrame navigateECEFAndReturnNew(
11197 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11198 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
11199 final double fx, final double fy, final double fz,
11200 final double angularRateX, final double angularRateY, final double angularRateZ)
11201 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11202 final var result = new ECEFFrame();
11203 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
11204 angularRateX, angularRateY, angularRateZ, result);
11205 return result;
11206 }
11207
11208 /**
11209 * Runs precision ECEF-frame inertial navigation equations.
11210 *
11211 * @param timeInterval time interval between epochs expressed in seconds (s).
11212 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11213 * frame, resolved along ECEF-frame axes.
11214 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11215 * frame, resolved along ECEF-frame axes.
11216 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11217 * frame, resolved along ECEF-frame axes.
11218 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11219 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11220 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11221 * resolved along body-frame axes, averaged over time interval and
11222 * expressed in meters per squared second (m/s^2).
11223 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11224 * resolved along body-frame axes, averaged over time interval and
11225 * expressed in meters per squared second (m/s^2).
11226 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11227 * resolved along body-frame axes, averaged over time interval and
11228 * expressed in meters per squared second (m/s^2).
11229 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11230 * resolved along body-frame axes, averaged over time interval and
11231 * expressed in radians per second (rad/s).
11232 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11233 * resolved along body-frame axes, averaged over time interval and
11234 * expressed in radians per second (rad/s).
11235 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11236 * resolved along body-frame axes, averaged over time interval and
11237 * expressed in radians per second (rad/s).
11238 * @return estimated ECEF frame containing new body position, velocity and coordinate
11239 * transformation matrix.
11240 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11241 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11242 * body-to-ECEF-frame coordinate transformation matrix are
11243 * invalid.
11244 */
11245 public static ECEFFrame navigateECEFAndReturnNew(
11246 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11247 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
11248 final double fx, final double fy, final double fz,
11249 final double angularRateX, final double angularRateY, final double angularRateZ)
11250 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11251 final var result = new ECEFFrame();
11252 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
11253 angularRateX, angularRateY, angularRateZ, result);
11254 return result;
11255 }
11256
11257 /**
11258 * Runs precision ECEF-frame inertial navigation equations.
11259 *
11260 * @param timeInterval time interval between epochs.
11261 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11262 * frame, resolved along ECEF-frame axes.
11263 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11264 * frame, resolved along ECEF-frame axes.
11265 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11266 * frame, resolved along ECEF-frame axes.
11267 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11268 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11269 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11270 * resolved along body-frame axes, averaged over time interval and
11271 * expressed in meters per squared second (m/s^2).
11272 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11273 * resolved along body-frame axes, averaged over time interval and
11274 * expressed in meters per squared second (m/s^2).
11275 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11276 * resolved along body-frame axes, averaged over time interval and
11277 * expressed in meters per squared second (m/s^2).
11278 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11279 * resolved along body-frame axes, averaged over time interval and
11280 * expressed in radians per second (rad/s).
11281 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11282 * resolved along body-frame axes, averaged over time interval and
11283 * expressed in radians per second (rad/s).
11284 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11285 * resolved along body-frame axes, averaged over time interval and
11286 * expressed in radians per second (rad/s).
11287 * @return estimated ECEF frame containing new body position, velocity and coordinate
11288 * transformation matrix.
11289 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11290 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11291 * body-to-ECEF-frame coordinate transformation matrix are
11292 * invalid.
11293 */
11294 public static ECEFFrame navigateECEFAndReturnNew(
11295 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11296 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
11297 final double fx, final double fy, final double fz,
11298 final double angularRateX, final double angularRateY, final double angularRateZ)
11299 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11300 final var result = new ECEFFrame();
11301 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
11302 angularRateX, angularRateY, angularRateZ, result);
11303 return result;
11304 }
11305
11306 /**
11307 * Runs precision ECEF-frame inertial navigation equations.
11308 *
11309 * @param timeInterval time interval between epochs expressed in seconds (s).
11310 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11311 * frame, resolved along ECEF-frame axes.
11312 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11313 * frame, resolved along ECEF-frame axes.
11314 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11315 * frame, resolved along ECEF-frame axes.
11316 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11317 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11318 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11319 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11320 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11321 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11322 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11323 * @param kinematics body kinematics containing specific forces and angular rates applied to
11324 * the body.
11325 * @return estimated ECEF frame containing new body position, velocity and coordinate
11326 * transformation matrix.
11327 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11328 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11329 * body-to-ECEF-frame coordinate transformation matrix are
11330 * invalid.
11331 */
11332 public static ECEFFrame navigateECEFAndReturnNew(
11333 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11334 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
11335 final BodyKinematics kinematics) throws InertialNavigatorException,
11336 InvalidSourceAndDestinationFrameTypeException {
11337 final var result = new ECEFFrame();
11338 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
11339 return result;
11340 }
11341
11342 /**
11343 * Runs precision ECEF-frame inertial navigation equations.
11344 *
11345 * @param timeInterval time interval between epochs.
11346 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11347 * frame, resolved along ECEF-frame axes.
11348 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11349 * frame, resolved along ECEF-frame axes.
11350 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11351 * frame, resolved along ECEF-frame axes.
11352 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11353 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11354 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11355 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11356 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11357 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11358 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11359 * @param kinematics body kinematics containing specific forces and angular rates applied to
11360 * the body.
11361 * @return estimated ECEF frame containing new body position, velocity and coordinate
11362 * transformation matrix.
11363 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11364 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11365 * body-to-ECEF-frame coordinate transformation matrix are
11366 * invalid.
11367 */
11368 public static ECEFFrame navigateECEFAndReturnNew(
11369 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11370 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
11371 final BodyKinematics kinematics)
11372 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11373 final var result = new ECEFFrame();
11374 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, kinematics, result);
11375 return result;
11376 }
11377
11378 /**
11379 * Runs precision ECEF-frame inertial navigation equations.
11380 *
11381 * @param timeInterval time interval between epochs expressed in seconds (s).
11382 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11383 * frame, resolved along ECEF-frame axes.
11384 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11385 * frame, resolved along ECEF-frame axes.
11386 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11387 * frame, resolved along ECEF-frame axes.
11388 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11389 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11390 * @param kinematics body kinematics containing specific forces and angular rates applied to
11391 * the body.
11392 * @return estimated ECEF frame containing new body position, velocity and coordinate
11393 * transformation matrix.
11394 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11395 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11396 * body-to-ECEF-frame coordinate transformation matrix are
11397 * invalid.
11398 */
11399 public static ECEFFrame navigateECEFAndReturnNew(
11400 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11401 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
11402 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11403 final var result = new ECEFFrame();
11404 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
11405 return result;
11406 }
11407
11408 /**
11409 * Runs precision ECEF-frame inertial navigation equations.
11410 *
11411 * @param timeInterval time interval between epochs.
11412 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11413 * frame, resolved along ECEF-frame axes.
11414 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11415 * frame, resolved along ECEF-frame axes.
11416 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11417 * frame, resolved along ECEF-frame axes.
11418 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11419 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11420 * @param kinematics body kinematics containing specific forces and angular rates applied to
11421 * the body.
11422 * @return estimated ECEF frame containing new body position, velocity and coordinate
11423 * transformation matrix.
11424 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11425 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11426 * body-to-ECEF-frame coordinate transformation matrix are
11427 * invalid.
11428 */
11429 public static ECEFFrame navigateECEFAndReturnNew(
11430 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
11431 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity, final BodyKinematics kinematics)
11432 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11433 final var result = new ECEFFrame();
11434 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, kinematics, result);
11435 return result;
11436 }
11437
11438 /**
11439 * Runs precision ECEF-frame inertial navigation equations.
11440 *
11441 * @param timeInterval time interval between epochs expressed in seconds (s).
11442 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11443 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11444 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11445 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11446 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11447 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11448 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11449 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11450 * resolved along ECEF-frame axes.
11451 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11452 * resolved along ECEF-frame axes.
11453 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11454 * resolved along ECEF-frame axes.
11455 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11456 * resolved along body-frame axes, averaged over time interval and
11457 * expressed in meters per squared second (m/s^2).
11458 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11459 * resolved along body-frame axes, averaged over time interval and
11460 * expressed in meters per squared second (m/s^2).
11461 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11462 * resolved along body-frame axes, averaged over time interval and
11463 * expressed in meters per squared second (m/s^2).
11464 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11465 * resolved along body-frame axes, averaged over time interval and
11466 * expressed in radians per second (rad/s).
11467 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11468 * resolved along body-frame axes, averaged over time interval and
11469 * expressed in radians per second (rad/s).
11470 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11471 * resolved along body-frame axes, averaged over time interval and
11472 * expressed in radians per second (rad/s).
11473 * @return estimated ECEF frame containing new body position, velocity and coordinate
11474 * transformation matrix.
11475 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11476 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11477 * body-to-ECEF-frame coordinate transformation matrix are
11478 * invalid.
11479 */
11480 public static ECEFFrame navigateECEFAndReturnNew(
11481 final double timeInterval, final double oldX, final double oldY, final double oldZ,
11482 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
11483 final double fx, final double fy, final double fz,
11484 final double angularRateX, final double angularRateY, final double angularRateZ)
11485 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11486 final var result = new ECEFFrame();
11487 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
11488 angularRateX, angularRateY, angularRateZ, result);
11489 return result;
11490 }
11491
11492 /**
11493 * Runs precision ECEF-frame inertial navigation equations.
11494 *
11495 * @param timeInterval time interval between epochs.
11496 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11497 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11498 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11499 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11500 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11501 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11502 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11503 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11504 * resolved along ECEF-frame axes.
11505 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11506 * resolved along ECEF-frame axes.
11507 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11508 * resolved along ECEF-frame axes.
11509 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11510 * resolved along body-frame axes, averaged over time interval and
11511 * expressed in meters per squared second (m/s^2).
11512 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11513 * resolved along body-frame axes, averaged over time interval and
11514 * expressed in meters per squared second (m/s^2).
11515 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11516 * resolved along body-frame axes, averaged over time interval and
11517 * expressed in meters per squared second (m/s^2).
11518 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11519 * resolved along body-frame axes, averaged over time interval and
11520 * expressed in radians per second (rad/s).
11521 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11522 * resolved along body-frame axes, averaged over time interval and
11523 * expressed in radians per second (rad/s).
11524 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11525 * resolved along body-frame axes, averaged over time interval and
11526 * expressed in radians per second (rad/s).
11527 * @return estimated ECEF frame containing new body position, velocity and coordinate
11528 * transformation matrix.
11529 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11530 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11531 * body-to-ECEF-frame coordinate transformation matrix are
11532 * invalid.
11533 */
11534 public static ECEFFrame navigateECEFAndReturnNew(
11535 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
11536 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
11537 final double fx, final double fy, final double fz,
11538 final double angularRateX, final double angularRateY, final double angularRateZ)
11539 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11540 final var result = new ECEFFrame();
11541 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
11542 angularRateX, angularRateY, angularRateZ, result);
11543 return result;
11544 }
11545
11546 /**
11547 * Runs precision ECEF-frame inertial navigation equations.
11548 *
11549 * @param timeInterval time interval between epochs expressed in seconds (s).
11550 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
11551 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11552 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11553 * resolved along ECEF-frame axes.
11554 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11555 * resolved along ECEF-frame axes.
11556 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11557 * resolved along ECEF-frame axes.
11558 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11559 * resolved along body-frame axes, averaged over time interval and
11560 * expressed in meters per squared second (m/s^2).
11561 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11562 * resolved along body-frame axes, averaged over time interval and
11563 * expressed in meters per squared second (m/s^2).
11564 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11565 * resolved along body-frame axes, averaged over time interval and
11566 * expressed in meters per squared second (m/s^2).
11567 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11568 * resolved along body-frame axes, averaged over time interval and
11569 * expressed in radians per second (rad/s).
11570 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11571 * resolved along body-frame axes, averaged over time interval and
11572 * expressed in radians per second (rad/s).
11573 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11574 * resolved along body-frame axes, averaged over time interval and
11575 * expressed in radians per second (rad/s).
11576 * @return estimated ECEF frame containing new body position, velocity and coordinate
11577 * transformation matrix.
11578 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11579 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11580 * body-to-ECEF-frame coordinate transformation matrix are
11581 * invalid.
11582 */
11583 public static ECEFFrame navigateECEFAndReturnNew(
11584 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
11585 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
11586 final double fx, final double fy, final double fz,
11587 final double angularRateX, final double angularRateY, final double angularRateZ)
11588 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11589 final var result = new ECEFFrame();
11590 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
11591 angularRateX, angularRateY, angularRateZ, result);
11592 return result;
11593 }
11594
11595 /**
11596 * Runs precision ECEF-frame inertial navigation equations.
11597 *
11598 * @param timeInterval time interval between epochs.
11599 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
11600 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11601 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11602 * resolved along ECEF-frame axes.
11603 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11604 * resolved along ECEF-frame axes.
11605 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11606 * resolved along ECEF-frame axes.
11607 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11608 * resolved along body-frame axes, averaged over time interval and
11609 * expressed in meters per squared second (m/s^2).
11610 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11611 * resolved along body-frame axes, averaged over time interval and
11612 * expressed in meters per squared second (m/s^2).
11613 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11614 * resolved along body-frame axes, averaged over time interval and
11615 * expressed in meters per squared second (m/s^2).
11616 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11617 * resolved along body-frame axes, averaged over time interval and
11618 * expressed in radians per second (rad/s).
11619 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11620 * resolved along body-frame axes, averaged over time interval and
11621 * expressed in radians per second (rad/s).
11622 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11623 * resolved along body-frame axes, averaged over time interval and
11624 * expressed in radians per second (rad/s).
11625 * @return estimated ECEF frame containing new body position, velocity and coordinate
11626 * transformation matrix.
11627 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11628 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11629 * body-to-ECEF-frame coordinate transformation matrix are
11630 * invalid.
11631 */
11632 public static ECEFFrame navigateECEFAndReturnNew(
11633 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
11634 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
11635 final double fx, final double fy, final double fz,
11636 final double angularRateX, final double angularRateY, final double angularRateZ)
11637 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11638 final var result = new ECEFFrame();
11639 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
11640 angularRateX, angularRateY, angularRateZ, result);
11641 return result;
11642 }
11643
11644 /**
11645 * Runs precision ECEF-frame inertial navigation equations.
11646 *
11647 * @param timeInterval time interval between epochs expressed in seconds (s).
11648 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11649 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11650 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11651 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11652 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11653 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11654 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11655 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11656 * resolved along ECEF-frame axes.
11657 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11658 * resolved along ECEF-frame axes.
11659 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11660 * resolved along ECEF-frame axes.
11661 * @param kinematics body kinematics containing specific forces and angular rates applied to
11662 * the body.
11663 * @return estimated ECEF frame containing new body position, velocity and coordinate
11664 * transformation matrix.
11665 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11666 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11667 * body-to-ECEF-frame coordinate transformation matrix are
11668 * invalid.
11669 */
11670 public static ECEFFrame navigateECEFAndReturnNew(
11671 final double timeInterval, final double oldX, final double oldY, final double oldZ,
11672 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
11673 final BodyKinematics kinematics) throws InertialNavigatorException,
11674 InvalidSourceAndDestinationFrameTypeException {
11675 final var result = new ECEFFrame();
11676 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
11677 return result;
11678 }
11679
11680 /**
11681 * Runs precision ECEF-frame inertial navigation equations.
11682 *
11683 * @param timeInterval time interval between epochs.
11684 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11685 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11686 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11687 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11688 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11689 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11690 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11691 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11692 * resolved along ECEF-frame axes.
11693 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11694 * resolved along ECEF-frame axes.
11695 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11696 * resolved along ECEF-frame axes.
11697 * @param kinematics body kinematics containing specific forces and angular rates applied to
11698 * the body.
11699 * @return estimated ECEF frame containing new body position, velocity and coordinate
11700 * transformation matrix.
11701 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11702 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11703 * body-to-ECEF-frame coordinate transformation matrix are
11704 * invalid.
11705 */
11706 public static ECEFFrame navigateECEFAndReturnNew(
11707 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
11708 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
11709 final BodyKinematics kinematics) throws InertialNavigatorException,
11710 InvalidSourceAndDestinationFrameTypeException {
11711 final var result = new ECEFFrame();
11712 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
11713 return result;
11714 }
11715
11716 /**
11717 * Runs precision ECEF-frame inertial navigation equations.
11718 *
11719 * @param timeInterval time interval between epochs expressed in seconds (s).
11720 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
11721 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11722 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11723 * resolved along ECEF-frame axes.
11724 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11725 * resolved along ECEF-frame axes.
11726 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11727 * resolved along ECEF-frame axes.
11728 * @param kinematics body kinematics containing specific forces and angular rates applied to
11729 * the body.
11730 * @return estimated ECEF frame containing new body position, velocity and coordinate
11731 * transformation matrix.
11732 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11733 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11734 * body-to-ECEF-frame coordinate transformation matrix are
11735 * invalid.
11736 */
11737 public static ECEFFrame navigateECEFAndReturnNew(
11738 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
11739 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics)
11740 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11741 final var result = new ECEFFrame();
11742 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
11743 return result;
11744 }
11745
11746 /**
11747 * Runs precision ECEF-frame inertial navigation equations.
11748 *
11749 * @param timeInterval time interval between epochs.
11750 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
11751 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11752 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
11753 * resolved along ECEF-frame axes.
11754 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
11755 * resolved along ECEF-frame axes.
11756 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
11757 * resolved along ECEF-frame axes.
11758 * @param kinematics body kinematics containing specific forces and angular rates applied to
11759 * the body.
11760 * @return estimated ECEF frame containing new body position, velocity and coordinate
11761 * transformation matrix.
11762 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11763 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11764 * body-to-ECEF-frame coordinate transformation matrix are
11765 * invalid.
11766 */
11767 public static ECEFFrame navigateECEFAndReturnNew(
11768 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
11769 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ, final BodyKinematics kinematics)
11770 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11771 final var result = new ECEFFrame();
11772 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
11773 return result;
11774 }
11775
11776 /**
11777 * Runs precision ECEF-frame inertial navigation equations.
11778 *
11779 * @param timeInterval time interval between epochs expressed in seconds (s).
11780 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11781 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11782 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11783 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11784 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11785 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11786 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11787 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11788 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11789 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11790 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11791 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11792 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11793 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11794 * resolved along body-frame axes, averaged over time interval.
11795 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11796 * resolved along body-frame axes, averaged over time interval.
11797 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11798 * resolved along body-frame axes, averaged over time interval.
11799 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11800 * resolved along body-frame axes, averaged over time interval and
11801 * expressed in radians per second (rad/s).
11802 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11803 * resolved along body-frame axes, averaged over time interval and
11804 * expressed in radians per second (rad/s).
11805 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11806 * resolved along body-frame axes, averaged over time interval and
11807 * expressed in radians per second (rad/s).
11808 * @return estimated ECEF frame containing new body position, velocity and coordinate
11809 * transformation matrix.
11810 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11811 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11812 * body-to-ECEF-frame coordinate transformation matrix are
11813 * invalid.
11814 */
11815 public static ECEFFrame navigateECEFAndReturnNew(
11816 final double timeInterval, final double oldX, final double oldY, final double oldZ,
11817 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
11818 final Acceleration fx, final Acceleration fy, final Acceleration fz,
11819 final double angularRateX, final double angularRateY, final double angularRateZ)
11820 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11821 final var result = new ECEFFrame();
11822 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
11823 angularRateX, angularRateY, angularRateZ, result);
11824 return result;
11825 }
11826
11827 /**
11828 * Runs precision ECEF-frame inertial navigation equations.
11829 *
11830 * @param timeInterval time interval between epochs.
11831 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11832 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11833 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11834 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11835 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11836 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11837 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11838 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11839 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11840 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11841 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11842 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11843 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11844 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11845 * resolved along body-frame axes, averaged over time interval.
11846 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11847 * resolved along body-frame axes, averaged over time interval.
11848 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11849 * resolved along body-frame axes, averaged over time interval.
11850 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11851 * resolved along body-frame axes, averaged over time interval and
11852 * expressed in radians per second (rad/s).
11853 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11854 * resolved along body-frame axes, averaged over time interval and
11855 * expressed in radians per second (rad/s).
11856 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11857 * resolved along body-frame axes, averaged over time interval and
11858 * expressed in radians per second (rad/s).
11859 * @return estimated ECEF frame containing new body position, velocity and coordinate
11860 * transformation matrix.
11861 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11862 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11863 * body-to-ECEF-frame coordinate transformation matrix are
11864 * invalid.
11865 */
11866 public static ECEFFrame navigateECEFAndReturnNew(
11867 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
11868 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
11869 final Acceleration fx, final Acceleration fy, final Acceleration fz,
11870 final double angularRateX, final double angularRateY, final double angularRateZ)
11871 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11872 final var result = new ECEFFrame();
11873 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
11874 angularRateX, angularRateY, angularRateZ, result);
11875 return result;
11876 }
11877
11878 /**
11879 * Runs precision ECEF-frame inertial navigation equations.
11880 *
11881 * @param timeInterval time interval between epochs expressed in seconds (s).
11882 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
11883 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11884 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11885 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11886 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11887 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11888 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11889 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11890 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11891 * resolved along body-frame axes, averaged over time interval.
11892 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11893 * resolved along body-frame axes, averaged over time interval.
11894 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11895 * resolved along body-frame axes, averaged over time interval.
11896 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11897 * resolved along body-frame axes, averaged over time interval and
11898 * expressed in radians per second (rad/s).
11899 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11900 * resolved along body-frame axes, averaged over time interval and
11901 * expressed in radians per second (rad/s).
11902 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11903 * resolved along body-frame axes, averaged over time interval and
11904 * expressed in radians per second (rad/s).
11905 * @return estimated ECEF frame containing new body position, velocity and coordinate
11906 * transformation matrix.
11907 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11908 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11909 * body-to-ECEF-frame coordinate transformation matrix are
11910 * invalid.
11911 */
11912 public static ECEFFrame navigateECEFAndReturnNew(
11913 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
11914 final double oldVx, final double oldVy, final double oldVz,
11915 final Acceleration fx, final Acceleration fy, final Acceleration fz,
11916 final double angularRateX, final double angularRateY, final double angularRateZ)
11917 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11918 final var result = new ECEFFrame();
11919 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
11920 angularRateX, angularRateY, angularRateZ, result);
11921 return result;
11922 }
11923
11924 /**
11925 * Runs precision ECEF-frame inertial navigation equations.
11926 *
11927 * @param timeInterval time interval between epochs.
11928 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
11929 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11930 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
11931 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11932 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
11933 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11934 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
11935 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
11936 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11937 * resolved along body-frame axes, averaged over time interval.
11938 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11939 * resolved along body-frame axes, averaged over time interval.
11940 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11941 * resolved along body-frame axes, averaged over time interval.
11942 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11943 * resolved along body-frame axes, averaged over time interval and
11944 * expressed in radians per second (rad/s).
11945 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11946 * resolved along body-frame axes, averaged over time interval and
11947 * expressed in radians per second (rad/s).
11948 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11949 * resolved along body-frame axes, averaged over time interval and
11950 * expressed in radians per second (rad/s).
11951 * @return estimated ECEF frame containing new body position, velocity and coordinate
11952 * transformation matrix.
11953 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
11954 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
11955 * body-to-ECEF-frame coordinate transformation matrix are
11956 * invalid.
11957 */
11958 public static ECEFFrame navigateECEFAndReturnNew(
11959 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
11960 final double oldVx, final double oldVy, final double oldVz,
11961 final Acceleration fx, final Acceleration fy, final Acceleration fz,
11962 final double angularRateX, final double angularRateY, final double angularRateZ)
11963 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
11964 final var result = new ECEFFrame();
11965 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
11966 angularRateX, angularRateY, angularRateZ, result);
11967 return result;
11968 }
11969
11970 /**
11971 * Runs precision ECEF-frame inertial navigation equations.
11972 *
11973 * @param timeInterval time interval between epochs expressed in seconds (s).
11974 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
11975 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11976 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
11977 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11978 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
11979 * frame, resolved along ECEF-frame axes and expressed in meters (m).
11980 * @param oldC previous body-to-ECEF-frame coordinate transformation.
11981 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
11982 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
11983 * resolved along body-frame axes, averaged over time interval.
11984 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
11985 * resolved along body-frame axes, averaged over time interval.
11986 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
11987 * resolved along body-frame axes, averaged over time interval.
11988 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
11989 * resolved along body-frame axes, averaged over time interval and
11990 * expressed in radians per second (rad/s).
11991 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
11992 * resolved along body-frame axes, averaged over time interval and
11993 * expressed in radians per second (rad/s).
11994 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
11995 * resolved along body-frame axes, averaged over time interval and
11996 * expressed in radians per second (rad/s).
11997 * @return estimated ECEF frame containing new body position, velocity and coordinate
11998 * transformation matrix.
11999 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12000 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12001 * body-to-ECEF-frame coordinate transformation matrix are
12002 * invalid.
12003 */
12004 public static ECEFFrame navigateECEFAndReturnNew(
12005 final double timeInterval, final double oldX, final double oldY, final double oldZ,
12006 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
12007 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12008 final double angularRateX, final double angularRateY, final double angularRateZ)
12009 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12010 final var result = new ECEFFrame();
12011 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
12012 angularRateX, angularRateY, angularRateZ, result);
12013 return result;
12014 }
12015
12016 /**
12017 * Runs precision ECEF-frame inertial navigation equations.
12018 *
12019 * @param timeInterval time interval between epochs.
12020 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12021 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12022 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12023 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12024 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12025 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12026 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12027 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12028 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12029 * resolved along body-frame axes, averaged over time interval.
12030 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12031 * resolved along body-frame axes, averaged over time interval.
12032 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12033 * resolved along body-frame axes, averaged over time interval.
12034 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12035 * resolved along body-frame axes, averaged over time interval and
12036 * expressed in radians per second (rad/s).
12037 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12038 * resolved along body-frame axes, averaged over time interval and
12039 * expressed in radians per second (rad/s).
12040 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12041 * resolved along body-frame axes, averaged over time interval and
12042 * expressed in radians per second (rad/s).
12043 * @return estimated ECEF frame containing new body position, velocity and coordinate
12044 * transformation matrix.
12045 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12046 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12047 * body-to-ECEF-frame coordinate transformation matrix are
12048 * invalid.
12049 */
12050 public static ECEFFrame navigateECEFAndReturnNew(
12051 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
12052 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
12053 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12054 final double angularRateX, final double angularRateY, final double angularRateZ)
12055 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12056 final var result = new ECEFFrame();
12057 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
12058 angularRateX, angularRateY, angularRateZ, result);
12059 return result;
12060 }
12061
12062 /**
12063 * Runs precision ECEF-frame inertial navigation equations.
12064 *
12065 * @param timeInterval time interval between epochs expressed in seconds (s).
12066 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12067 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12068 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12069 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12070 * resolved along body-frame axes, averaged over time interval.
12071 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12072 * resolved along body-frame axes, averaged over time interval.
12073 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12074 * resolved along body-frame axes, averaged over time interval.
12075 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12076 * resolved along body-frame axes, averaged over time interval and
12077 * expressed in radians per second (rad/s).
12078 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12079 * resolved along body-frame axes, averaged over time interval and
12080 * expressed in radians per second (rad/s).
12081 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12082 * resolved along body-frame axes, averaged over time interval and
12083 * expressed in radians per second (rad/s).
12084 * @return estimated ECEF frame containing new body position, velocity and coordinate
12085 * transformation matrix.
12086 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12087 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12088 * body-to-ECEF-frame coordinate transformation matrix are
12089 * invalid.
12090 */
12091 public static ECEFFrame navigateECEFAndReturnNew(
12092 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12093 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
12094 final double angularRateX, final double angularRateY, final double angularRateZ)
12095 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12096 final var result = new ECEFFrame();
12097 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
12098 result);
12099 return result;
12100 }
12101
12102 /**
12103 * Runs precision ECEF-frame inertial navigation equations.
12104 *
12105 * @param timeInterval time interval between epochs.
12106 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12107 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12108 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12109 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12110 * resolved along body-frame axes, averaged over time interval.
12111 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12112 * resolved along body-frame axes, averaged over time interval.
12113 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12114 * resolved along body-frame axes, averaged over time interval.
12115 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12116 * resolved along body-frame axes, averaged over time interval and
12117 * expressed in radians per second (rad/s).
12118 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12119 * resolved along body-frame axes, averaged over time interval and
12120 * expressed in radians per second (rad/s).
12121 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12122 * resolved along body-frame axes, averaged over time interval and
12123 * expressed in radians per second (rad/s).
12124 * @return estimated ECEF frame containing new body position, velocity and coordinate
12125 * transformation matrix.
12126 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12127 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12128 * body-to-ECEF-frame coordinate transformation matrix are
12129 * invalid.
12130 */
12131 public static ECEFFrame navigateECEFAndReturnNew(
12132 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12133 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
12134 final double angularRateX, final double angularRateY, final double angularRateZ)
12135 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12136 final var result = new ECEFFrame();
12137 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz,
12138 angularRateX, angularRateY, angularRateZ, result);
12139 return result;
12140 }
12141
12142 /**
12143 * Runs precision ECEF-frame inertial navigation equations.
12144 *
12145 * @param timeInterval time interval between epochs expressed in seconds (s).
12146 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12147 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12148 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12149 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12150 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12151 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12152 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12153 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
12154 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12155 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
12156 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12157 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
12158 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12159 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12160 * resolved along body-frame axes, averaged over time interval and
12161 * expressed in meters per squared second (m/s^2).
12162 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12163 * resolved along body-frame axes, averaged over time interval and
12164 * expressed in meters per squared second (m/s^2).
12165 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12166 * resolved along body-frame axes, averaged over time interval and
12167 * expressed in meters per squared second (m/s^2).
12168 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12169 * resolved along body-frame axes, averaged over time interval.
12170 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12171 * resolved along body-frame axes, averaged over time interval.
12172 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12173 * resolved along body-frame axes, averaged over time interval.
12174 * @return estimated ECEF frame containing new body position, velocity and coordinate
12175 * transformation matrix.
12176 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12177 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12178 * body-to-ECEF-frame coordinate transformation matrix are
12179 * invalid.
12180 */
12181 public static ECEFFrame navigateECEFAndReturnNew(
12182 final double timeInterval, final double oldX, final double oldY, final double oldZ,
12183 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
12184 final double fx, final double fy, final double fz,
12185 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12186 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12187 final var result = new ECEFFrame();
12188 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
12189 angularRateX, angularRateY, angularRateZ, result);
12190 return result;
12191 }
12192
12193 /**
12194 * Runs precision ECEF-frame inertial navigation equations.
12195 *
12196 * @param timeInterval time interval between epochs.
12197 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12198 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12199 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12200 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12201 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12202 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12203 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12204 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
12205 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12206 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
12207 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12208 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
12209 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12210 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12211 * resolved along body-frame axes, averaged over time interval and
12212 * expressed in meters per squared second (m/s^2).
12213 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12214 * resolved along body-frame axes, averaged over time interval and
12215 * expressed in meters per squared second (m/s^2).
12216 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12217 * resolved along body-frame axes, averaged over time interval and
12218 * expressed in meters per squared second (m/s^2).
12219 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12220 * resolved along body-frame axes, averaged over time interval.
12221 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12222 * resolved along body-frame axes, averaged over time interval.
12223 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12224 * resolved along body-frame axes, averaged over time interval.
12225 * @return estimated ECEF frame containing new body position, velocity and coordinate
12226 * transformation matrix.
12227 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12228 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12229 * body-to-ECEF-frame coordinate transformation matrix are
12230 * invalid.
12231 */
12232 public static ECEFFrame navigateECEFAndReturnNew(
12233 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
12234 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
12235 final double fx, final double fy, final double fz,
12236 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12237 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12238 final var result = new ECEFFrame();
12239 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy,
12240 fz, angularRateX, angularRateY, angularRateZ, result);
12241 return result;
12242 }
12243
12244 /**
12245 * Runs precision ECEF-frame inertial navigation equations.
12246 *
12247 * @param timeInterval time interval between epochs expressed in seconds (s).
12248 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12249 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12250 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
12251 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12252 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
12253 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12254 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
12255 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12256 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12257 * resolved along body-frame axes, averaged over time interval and
12258 * expressed in meters per squared second (m/s^2).
12259 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12260 * resolved along body-frame axes, averaged over time interval and
12261 * expressed in meters per squared second (m/s^2).
12262 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12263 * resolved along body-frame axes, averaged over time interval and
12264 * expressed in meters per squared second (m/s^2).
12265 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12266 * resolved along body-frame axes, averaged over time interval.
12267 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12268 * resolved along body-frame axes, averaged over time interval.
12269 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12270 * resolved along body-frame axes, averaged over time interval.
12271 * @return estimated ECEF frame containing new body position, velocity and coordinate
12272 * transformation matrix.
12273 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12274 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12275 * body-to-ECEF-frame coordinate transformation matrix are
12276 * invalid.
12277 */
12278 public static ECEFFrame navigateECEFAndReturnNew(
12279 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12280 final double oldVx, final double oldVy, final double oldVz,
12281 final double fx, final double fy, final double fz,
12282 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12283 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12284 final var result = new ECEFFrame();
12285 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
12286 angularRateX, angularRateY, angularRateZ, result);
12287 return result;
12288 }
12289
12290 /**
12291 * Runs precision ECEF-frame inertial navigation equations.
12292 *
12293 * @param timeInterval time interval between epochs.
12294 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12295 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12296 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
12297 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12298 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
12299 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12300 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
12301 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12302 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12303 * resolved along body-frame axes, averaged over time interval and
12304 * expressed in meters per squared second (m/s^2).
12305 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12306 * resolved along body-frame axes, averaged over time interval and
12307 * expressed in meters per squared second (m/s^2).
12308 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12309 * resolved along body-frame axes, averaged over time interval and
12310 * expressed in meters per squared second (m/s^2).
12311 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12312 * resolved along body-frame axes, averaged over time interval.
12313 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12314 * resolved along body-frame axes, averaged over time interval.
12315 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12316 * resolved along body-frame axes, averaged over time interval.
12317 * @return estimated ECEF frame containing new body position, velocity and coordinate
12318 * transformation matrix.
12319 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12320 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12321 * body-to-ECEF-frame coordinate transformation matrix are
12322 * invalid.
12323 */
12324 public static ECEFFrame navigateECEFAndReturnNew(
12325 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12326 final double oldVx, final double oldVy, final double oldVz,
12327 final double fx, final double fy, final double fz,
12328 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12329 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12330 final var result = new ECEFFrame();
12331 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
12332 angularRateX, angularRateY, angularRateZ, result);
12333 return result;
12334 }
12335
12336 /**
12337 * Runs precision ECEF-frame inertial navigation equations.
12338 *
12339 * @param timeInterval time interval between epochs expressed in seconds (s).
12340 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12341 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12342 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12343 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12344 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12345 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12346 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12347 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12348 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12349 * resolved along body-frame axes, averaged over time interval and
12350 * expressed in meters per squared second (m/s^2).
12351 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12352 * resolved along body-frame axes, averaged over time interval and
12353 * expressed in meters per squared second (m/s^2).
12354 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12355 * resolved along body-frame axes, averaged over time interval and
12356 * expressed in meters per squared second (m/s^2).
12357 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12358 * resolved along body-frame axes, averaged over time interval.
12359 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12360 * resolved along body-frame axes, averaged over time interval.
12361 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12362 * resolved along body-frame axes, averaged over time interval.
12363 * @return estimated ECEF frame containing new body position, velocity and coordinate
12364 * transformation matrix.
12365 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12366 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12367 * body-to-ECEF-frame coordinate transformation matrix are
12368 * invalid.
12369 */
12370 public static ECEFFrame navigateECEFAndReturnNew(
12371 final double timeInterval, final double oldX, final double oldY, final double oldZ,
12372 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
12373 final double fx, final double fy, final double fz,
12374 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12375 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12376 final var result = new ECEFFrame();
12377 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
12378 angularRateX, angularRateY, angularRateZ, result);
12379 return result;
12380 }
12381
12382 /**
12383 * Runs precision ECEF-frame inertial navigation equations.
12384 *
12385 * @param timeInterval time interval between epochs.
12386 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12387 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12388 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12389 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12390 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12391 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12392 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12393 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12394 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12395 * resolved along body-frame axes, averaged over time interval and
12396 * expressed in meters per squared second (m/s^2).
12397 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12398 * resolved along body-frame axes, averaged over time interval and
12399 * expressed in meters per squared second (m/s^2).
12400 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12401 * resolved along body-frame axes, averaged over time interval and
12402 * expressed in meters per squared second (m/s^2).
12403 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12404 * resolved along body-frame axes, averaged over time interval.
12405 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12406 * resolved along body-frame axes, averaged over time interval.
12407 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12408 * resolved along body-frame axes, averaged over time interval.
12409 * @return estimated ECEF frame containing new body position, velocity and coordinate
12410 * transformation matrix.
12411 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12412 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12413 * body-to-ECEF-frame coordinate transformation matrix are
12414 * invalid.
12415 */
12416 public static ECEFFrame navigateECEFAndReturnNew(
12417 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
12418 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
12419 final double fx, final double fy, final double fz,
12420 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12421 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12422 final var result = new ECEFFrame();
12423 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
12424 angularRateX, angularRateY, angularRateZ, result);
12425 return result;
12426 }
12427
12428 /**
12429 * Runs precision ECEF-frame inertial navigation equations.
12430 *
12431 * @param timeInterval time interval between epochs expressed in seconds (s).
12432 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12433 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12434 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12435 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12436 * resolved along body-frame axes, averaged over time interval and
12437 * expressed in meters per squared second (m/s^2).
12438 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12439 * resolved along body-frame axes, averaged over time interval and
12440 * expressed in meters per squared second (m/s^2).
12441 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12442 * resolved along body-frame axes, averaged over time interval and
12443 * expressed in meters per squared second (m/s^2).
12444 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12445 * resolved along body-frame axes, averaged over time interval.
12446 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12447 * resolved along body-frame axes, averaged over time interval.
12448 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12449 * resolved along body-frame axes, averaged over time interval.
12450 * @return estimated ECEF frame containing new body position, velocity and coordinate
12451 * transformation matrix.
12452 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12453 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12454 * body-to-ECEF-frame coordinate transformation matrix are
12455 * invalid.
12456 */
12457 public static ECEFFrame navigateECEFAndReturnNew(
12458 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12459 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
12460 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12461 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12462 final var result = new ECEFFrame();
12463 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
12464 result);
12465 return result;
12466 }
12467
12468 /**
12469 * Runs precision ECEF-frame inertial navigation equations.
12470 *
12471 * @param timeInterval time interval between epochs expressed in seconds (s).
12472 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12473 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12474 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12475 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12476 * resolved along body-frame axes, averaged over time interval and
12477 * expressed in meters per squared second (m/s^2).
12478 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12479 * resolved along body-frame axes, averaged over time interval and
12480 * expressed in meters per squared second (m/s^2).
12481 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12482 * resolved along body-frame axes, averaged over time interval and
12483 * expressed in meters per squared second (m/s^2).
12484 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12485 * resolved along body-frame axes, averaged over time interval.
12486 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12487 * resolved along body-frame axes, averaged over time interval.
12488 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12489 * resolved along body-frame axes, averaged over time interval.
12490 * @return estimated ECEF frame containing new body position, velocity and coordinate
12491 * transformation matrix.
12492 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12493 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12494 * body-to-ECEF-frame coordinate transformation matrix are
12495 * invalid.
12496 */
12497 public static ECEFFrame navigateECEFAndReturnNew(
12498 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12499 final ECEFVelocity oldVelocity, final double fx, final double fy, final double fz,
12500 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12501 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12502 final var result = new ECEFFrame();
12503 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
12504 result);
12505 return result;
12506 }
12507
12508 /**
12509 * Runs precision ECEF-frame inertial navigation equations.
12510 *
12511 * @param timeInterval time interval between epochs expressed in seconds (s).
12512 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12513 * frame, resolved along ECEF-frame axes.
12514 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12515 * frame, resolved along ECEF-frame axes.
12516 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12517 * frame, resolved along ECEF-frame axes.
12518 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12519 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
12520 * resolved along ECEF-frame axes.
12521 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
12522 * resolved along ECEF-frame axes.
12523 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
12524 * resolved along ECEF-frame axes.
12525 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12526 * resolved along body-frame axes, averaged over time interval and
12527 * expressed in meters per squared second (m/s^2).
12528 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12529 * resolved along body-frame axes, averaged over time interval and
12530 * expressed in meters per squared second (m/s^2).
12531 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12532 * resolved along body-frame axes, averaged over time interval and
12533 * expressed in meters per squared second (m/s^2).
12534 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12535 * resolved along body-frame axes, averaged over time interval and
12536 * expressed in radians per second (rad/s).
12537 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12538 * resolved along body-frame axes, averaged over time interval and
12539 * expressed in radians per second (rad/s).
12540 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12541 * resolved along body-frame axes, averaged over time interval and
12542 * expressed in radians per second (rad/s).
12543 * @return estimated ECEF frame containing new body position, velocity and coordinate
12544 * transformation matrix.
12545 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12546 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12547 * body-to-ECEF-frame coordinate transformation matrix are
12548 * invalid.
12549 */
12550 public static ECEFFrame navigateECEFAndReturnNew(
12551 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
12552 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
12553 final double fx, final double fy, final double fz,
12554 final double angularRateX, final double angularRateY, final double angularRateZ)
12555 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12556 final var result = new ECEFFrame();
12557 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
12558 angularRateX, angularRateY, angularRateZ, result);
12559 return result;
12560 }
12561
12562 /**
12563 * Runs precision ECEF-frame inertial navigation equations.
12564 *
12565 * @param timeInterval time interval between epochs.
12566 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12567 * frame, resolved along ECEF-frame axes.
12568 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12569 * frame, resolved along ECEF-frame axes.
12570 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12571 * frame, resolved along ECEF-frame axes.
12572 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12573 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
12574 * resolved along ECEF-frame axes.
12575 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
12576 * resolved along ECEF-frame axes.
12577 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
12578 * resolved along ECEF-frame axes.
12579 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12580 * resolved along body-frame axes, averaged over time interval and
12581 * expressed in meters per squared second (m/s^2).
12582 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12583 * resolved along body-frame axes, averaged over time interval and
12584 * expressed in meters per squared second (m/s^2).
12585 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12586 * resolved along body-frame axes, averaged over time interval and
12587 * expressed in meters per squared second (m/s^2).
12588 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12589 * resolved along body-frame axes, averaged over time interval and
12590 * expressed in radians per second (rad/s).
12591 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12592 * resolved along body-frame axes, averaged over time interval and
12593 * expressed in radians per second (rad/s).
12594 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12595 * resolved along body-frame axes, averaged over time interval and
12596 * expressed in radians per second (rad/s).
12597 * @return estimated ECEF frame containing new body position, velocity and coordinate
12598 * transformation matrix.
12599 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12600 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12601 * body-to-ECEF-frame coordinate transformation matrix are
12602 * invalid.
12603 */
12604 public static ECEFFrame navigateECEFAndReturnNew(
12605 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
12606 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
12607 final double fx, final double fy, final double fz,
12608 final double angularRateX, final double angularRateY, final double angularRateZ)
12609 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12610 final var result = new ECEFFrame();
12611 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
12612 angularRateX, angularRateY, angularRateZ, result);
12613 return result;
12614 }
12615
12616 /**
12617 * Runs precision ECEF-frame inertial navigation equations.
12618 *
12619 * @param timeInterval time interval between epochs expressed in seconds (s).
12620 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12621 * frame, resolved along ECEF-frame axes.
12622 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12623 * frame, resolved along ECEF-frame axes.
12624 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12625 * frame, resolved along ECEF-frame axes.
12626 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12627 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
12628 * resolved along ECEF-frame axes.
12629 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
12630 * resolved along ECEF-frame axes.
12631 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
12632 * resolved along ECEF-frame axes.
12633 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12634 * resolved along body-frame axes, averaged over time interval.
12635 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12636 * resolved along body-frame axes, averaged over time interval.
12637 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12638 * resolved along body-frame axes, averaged over time interval.
12639 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12640 * resolved along body-frame axes, averaged over time interval.
12641 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12642 * resolved along body-frame axes, averaged over time interval.
12643 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12644 * resolved along body-frame axes, averaged over time interval.
12645 * @return estimated ECEF frame containing new body position, velocity and coordinate
12646 * transformation matrix.
12647 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12648 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12649 * body-to-ECEF-frame coordinate transformation matrix are
12650 * invalid.
12651 */
12652 public static ECEFFrame navigateECEFAndReturnNew(
12653 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
12654 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
12655 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12656 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12657 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12658 final var result = new ECEFFrame();
12659 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
12660 angularRateX, angularRateY, angularRateZ, result);
12661 return result;
12662 }
12663
12664 /**
12665 * Runs precision ECEF-frame inertial navigation equations.
12666 *
12667 * @param timeInterval time interval between epochs.
12668 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12669 * frame, resolved along ECEF-frame axes.
12670 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12671 * frame, resolved along ECEF-frame axes.
12672 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12673 * frame, resolved along ECEF-frame axes.
12674 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12675 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
12676 * resolved along ECEF-frame axes.
12677 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
12678 * resolved along ECEF-frame axes.
12679 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
12680 * resolved along ECEF-frame axes.
12681 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12682 * resolved along body-frame axes, averaged over time interval.
12683 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12684 * resolved along body-frame axes, averaged over time interval.
12685 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12686 * resolved along body-frame axes, averaged over time interval.
12687 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12688 * resolved along body-frame axes, averaged over time interval.
12689 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12690 * resolved along body-frame axes, averaged over time interval.
12691 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12692 * resolved along body-frame axes, averaged over time interval.
12693 * @return estimated ECEF frame containing new body position, velocity and coordinate
12694 * transformation matrix.
12695 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12696 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12697 * body-to-ECEF-frame coordinate transformation matrix are
12698 * invalid.
12699 */
12700 public static ECEFFrame navigateECEFAndReturnNew(
12701 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
12702 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
12703 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12704 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12705 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12706 final var result = new ECEFFrame();
12707 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
12708 angularRateX, angularRateY, angularRateZ, result);
12709 return result;
12710 }
12711
12712 /**
12713 * Runs precision ECEF-frame inertial navigation equations.
12714 *
12715 * @param timeInterval time interval between epochs expressed in seconds (s).
12716 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12717 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12718 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
12719 * resolved along ECEF-frame axes.
12720 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
12721 * resolved along ECEF-frame axes.
12722 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
12723 * resolved along ECEF-frame axes.
12724 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12725 * resolved along body-frame axes, averaged over time interval.
12726 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12727 * resolved along body-frame axes, averaged over time interval.
12728 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12729 * resolved along body-frame axes, averaged over time interval.
12730 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12731 * resolved along body-frame axes, averaged over time interval.
12732 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12733 * resolved along body-frame axes, averaged over time interval.
12734 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12735 * resolved along body-frame axes, averaged over time interval.
12736 * @return estimated ECEF frame containing new body position, velocity and coordinate
12737 * transformation matrix.
12738 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12739 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12740 * body-to-ECEF-frame coordinate transformation matrix are
12741 * invalid.
12742 */
12743 public static ECEFFrame navigateECEFAndReturnNew(
12744 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12745 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
12746 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12747 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12748 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12749 final var result = new ECEFFrame();
12750 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
12751 angularRateX, angularRateY, angularRateZ, result);
12752 return result;
12753 }
12754
12755 /**
12756 * Runs precision ECEF-frame inertial navigation equations.
12757 *
12758 * @param timeInterval time interval between epochs.
12759 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12760 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12761 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
12762 * resolved along ECEF-frame axes.
12763 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
12764 * resolved along ECEF-frame axes.
12765 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
12766 * resolved along ECEF-frame axes.
12767 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12768 * resolved along body-frame axes, averaged over time interval.
12769 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12770 * resolved along body-frame axes, averaged over time interval.
12771 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12772 * resolved along body-frame axes, averaged over time interval.
12773 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12774 * resolved along body-frame axes, averaged over time interval.
12775 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12776 * resolved along body-frame axes, averaged over time interval.
12777 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12778 * resolved along body-frame axes, averaged over time interval.
12779 * @return estimated ECEF frame containing new body position, velocity and coordinate
12780 * transformation matrix.
12781 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12782 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12783 * body-to-ECEF-frame coordinate transformation matrix are
12784 * invalid.
12785 */
12786 public static ECEFFrame navigateECEFAndReturnNew(
12787 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12788 final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
12789 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12790 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12791 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12792 final var result = new ECEFFrame();
12793 navigateECEF(timeInterval, oldPosition, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, fx, fy, fz,
12794 angularRateX, angularRateY, angularRateZ, result);
12795 return result;
12796 }
12797
12798 /**
12799 * Runs precision ECEF-frame inertial navigation equations.
12800 *
12801 * @param timeInterval time interval between epochs expressed in seconds (s).
12802 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12803 * frame, resolved along ECEF-frame axes.
12804 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12805 * frame, resolved along ECEF-frame axes.
12806 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12807 * frame, resolved along ECEF-frame axes.
12808 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12809 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12810 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12811 * resolved along body-frame axes, averaged over time interval.
12812 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12813 * resolved along body-frame axes, averaged over time interval.
12814 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12815 * resolved along body-frame axes, averaged over time interval.
12816 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12817 * resolved along body-frame axes, averaged over time interval.
12818 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12819 * resolved along body-frame axes, averaged over time interval.
12820 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12821 * resolved along body-frame axes, averaged over time interval.
12822 * @return estimated ECEF frame containing new body position, velocity and coordinate
12823 * transformation matrix.
12824 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12825 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12826 * body-to-ECEF-frame coordinate transformation matrix are
12827 * invalid.
12828 */
12829 public static ECEFFrame navigateECEFAndReturnNew(
12830 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
12831 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
12832 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12833 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12834 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12835 final var result = new ECEFFrame();
12836 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
12837 angularRateX, angularRateY, angularRateZ, result);
12838 return result;
12839 }
12840
12841 /**
12842 * Runs precision ECEF-frame inertial navigation equations.
12843 *
12844 * @param timeInterval time interval between epochs.
12845 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12846 * frame, resolved along ECEF-frame axes.
12847 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12848 * frame, resolved along ECEF-frame axes.
12849 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12850 * frame, resolved along ECEF-frame axes.
12851 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12852 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12853 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12854 * resolved along body-frame axes, averaged over time interval.
12855 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12856 * resolved along body-frame axes, averaged over time interval.
12857 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12858 * resolved along body-frame axes, averaged over time interval.
12859 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12860 * resolved along body-frame axes, averaged over time interval.
12861 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12862 * resolved along body-frame axes, averaged over time interval.
12863 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12864 * resolved along body-frame axes, averaged over time interval.
12865 * @return estimated ECEF frame containing new body position, velocity and coordinate
12866 * transformation matrix.
12867 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12868 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12869 * body-to-ECEF-frame coordinate transformation matrix are
12870 * invalid.
12871 */
12872 public static ECEFFrame navigateECEFAndReturnNew(
12873 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
12874 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
12875 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12876 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12877 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12878 final var result = new ECEFFrame();
12879 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
12880 angularRateX, angularRateY, angularRateZ, result);
12881 return result;
12882 }
12883
12884 /**
12885 * Runs precision ECEF-frame inertial navigation equations.
12886 *
12887 * @param timeInterval time interval between epochs expressed in seconds (s).
12888 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12889 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12890 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12891 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12892 * resolved along body-frame axes, averaged over time interval.
12893 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12894 * resolved along body-frame axes, averaged over time interval.
12895 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12896 * resolved along body-frame axes, averaged over time interval.
12897 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12898 * resolved along body-frame axes, averaged over time interval.
12899 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12900 * resolved along body-frame axes, averaged over time interval.
12901 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12902 * resolved along body-frame axes, averaged over time interval.
12903 * @return estimated ECEF frame containing new body position, velocity and coordinate
12904 * transformation matrix.
12905 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12906 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12907 * body-to-ECEF-frame coordinate transformation matrix are
12908 * invalid.
12909 */
12910 public static ECEFFrame navigateECEFAndReturnNew(
12911 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12912 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
12913 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12914 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12915 final var result = new ECEFFrame();
12916 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
12917 result);
12918 return result;
12919 }
12920
12921 /**
12922 * Runs precision ECEF-frame inertial navigation equations.
12923 *
12924 * @param timeInterval time interval between epochs.
12925 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
12926 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12927 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
12928 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12929 * resolved along body-frame axes, averaged over time interval.
12930 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12931 * resolved along body-frame axes, averaged over time interval.
12932 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12933 * resolved along body-frame axes, averaged over time interval.
12934 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12935 * resolved along body-frame axes, averaged over time interval.
12936 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12937 * resolved along body-frame axes, averaged over time interval.
12938 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12939 * resolved along body-frame axes, averaged over time interval.
12940 * @return estimated ECEF frame containing new body position, velocity and coordinate
12941 * transformation matrix.
12942 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12943 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12944 * body-to-ECEF-frame coordinate transformation matrix are
12945 * invalid.
12946 */
12947 public static ECEFFrame navigateECEFAndReturnNew(
12948 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
12949 final ECEFVelocity oldVelocity, final Acceleration fx, final Acceleration fy, final Acceleration fz,
12950 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12951 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
12952 final var result = new ECEFFrame();
12953 navigateECEF(timeInterval, oldPosition, oldC, oldVelocity, fx, fy, fz, angularRateX, angularRateY, angularRateZ,
12954 result);
12955 return result;
12956 }
12957
12958 /**
12959 * Runs precision ECEF-frame inertial navigation equations.
12960 *
12961 * @param timeInterval time interval between epochs expressed in seconds (s).
12962 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
12963 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12964 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
12965 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12966 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
12967 * frame, resolved along ECEF-frame axes and expressed in meters (m).
12968 * @param oldC previous body-to-ECEF-frame coordinate transformation.
12969 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
12970 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12971 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
12972 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12973 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
12974 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
12975 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
12976 * resolved along body-frame axes, averaged over time interval.
12977 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
12978 * resolved along body-frame axes, averaged over time interval.
12979 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
12980 * resolved along body-frame axes, averaged over time interval.
12981 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
12982 * resolved along body-frame axes, averaged over time interval.
12983 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
12984 * resolved along body-frame axes, averaged over time interval.
12985 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
12986 * resolved along body-frame axes, averaged over time interval.
12987 * @return estimated ECEF frame containing new body position, velocity and coordinate
12988 * transformation matrix.
12989 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
12990 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
12991 * body-to-ECEF-frame coordinate transformation matrix are
12992 * invalid.
12993 */
12994 public static ECEFFrame navigateECEFAndReturnNew(
12995 final double timeInterval, final double oldX, final double oldY, final double oldZ,
12996 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
12997 final Acceleration fx, final Acceleration fy, final Acceleration fz,
12998 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
12999 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13000 final var result = new ECEFFrame();
13001 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
13002 angularRateX, angularRateY, angularRateZ, result);
13003 return result;
13004 }
13005
13006 /**
13007 * Runs precision ECEF-frame inertial navigation equations.
13008 *
13009 * @param timeInterval time interval between epochs.
13010 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
13011 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13012 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
13013 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13014 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
13015 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13016 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13017 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
13018 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13019 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
13020 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13021 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
13022 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13023 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13024 * resolved along body-frame axes, averaged over time interval.
13025 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13026 * resolved along body-frame axes, averaged over time interval.
13027 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13028 * resolved along body-frame axes, averaged over time interval.
13029 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13030 * resolved along body-frame axes, averaged over time interval.
13031 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13032 * resolved along body-frame axes, averaged over time interval.
13033 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13034 * resolved along body-frame axes, averaged over time interval.
13035 * @return estimated ECEF frame containing new body position, velocity and coordinate
13036 * transformation matrix.
13037 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13038 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13039 * body-to-ECEF-frame coordinate transformation matrix are
13040 * invalid.
13041 */
13042 public static ECEFFrame navigateECEFAndReturnNew(
13043 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
13044 final CoordinateTransformation oldC, final double oldVx, final double oldVy, final double oldVz,
13045 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13046 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13047 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13048 final var result = new ECEFFrame();
13049 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVx, oldVy, oldVz, fx, fy,
13050 fz, angularRateX, angularRateY, angularRateZ, result);
13051 return result;
13052 }
13053
13054 /**
13055 * Runs precision ECEF-frame inertial navigation equations.
13056 *
13057 * @param timeInterval time interval between epochs expressed in seconds (s).
13058 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
13059 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13060 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
13061 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13062 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
13063 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13064 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
13065 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13066 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13067 * resolved along body-frame axes, averaged over time interval.
13068 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13069 * resolved along body-frame axes, averaged over time interval.
13070 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13071 * resolved along body-frame axes, averaged over time interval.
13072 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13073 * resolved along body-frame axes, averaged over time interval.
13074 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13075 * resolved along body-frame axes, averaged over time interval.
13076 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13077 * resolved along body-frame axes, averaged over time interval.
13078 * @return estimated ECEF frame containing new body position, velocity and coordinate
13079 * transformation matrix.
13080 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13081 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13082 * body-to-ECEF-frame coordinate transformation matrix are
13083 * invalid.
13084 */
13085 public static ECEFFrame navigateECEFAndReturnNew(
13086 final double timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
13087 final double oldVx, final double oldVy, final double oldVz,
13088 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13089 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13090 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13091 final var result = new ECEFFrame();
13092 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
13093 angularRateX, angularRateY, angularRateZ, result);
13094 return result;
13095 }
13096
13097 /**
13098 * Runs precision ECEF-frame inertial navigation equations.
13099 *
13100 * @param timeInterval time interval between epochs.
13101 * @param oldPosition previous cartesian position resolved along ECEF-frame axes.
13102 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13103 * @param oldVx previous velocity x-coordinate of body frame with respect ECEF frame,
13104 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13105 * @param oldVy previous velocity y-coordinate of body frame with respect ECEF frame,
13106 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13107 * @param oldVz previous velocity z-coordinate of body frame with respect ECEF frame,
13108 * resolved along ECEF-frame axes and expressed in meters per second (m/s).
13109 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13110 * resolved along body-frame axes, averaged over time interval.
13111 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13112 * resolved along body-frame axes, averaged over time interval.
13113 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13114 * resolved along body-frame axes, averaged over time interval.
13115 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13116 * resolved along body-frame axes, averaged over time interval.
13117 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13118 * resolved along body-frame axes, averaged over time interval.
13119 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13120 * resolved along body-frame axes, averaged over time interval.
13121 * @return estimated ECEF frame containing new body position, velocity and coordinate
13122 * transformation matrix.
13123 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13124 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13125 * body-to-ECEF-frame coordinate transformation matrix are
13126 * invalid.
13127 */
13128 public static ECEFFrame navigateECEFAndReturnNew(
13129 final Time timeInterval, final ECEFPosition oldPosition, final CoordinateTransformation oldC,
13130 final double oldVx, final double oldVy, final double oldVz,
13131 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13132 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13133 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13134 final var result = new ECEFFrame();
13135 navigateECEF(timeInterval, oldPosition, oldC, oldVx, oldVy, oldVz, fx, fy, fz,
13136 angularRateX, angularRateY, angularRateZ, result);
13137 return result;
13138 }
13139
13140 /**
13141 * Runs precision ECEF-frame inertial navigation equations.
13142 *
13143 * @param timeInterval time interval between epochs expressed in seconds (s).
13144 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
13145 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13146 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
13147 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13148 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
13149 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13150 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13151 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
13152 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13153 * resolved along body-frame axes, averaged over time interval.
13154 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13155 * resolved along body-frame axes, averaged over time interval.
13156 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13157 * resolved along body-frame axes, averaged over time interval.
13158 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13159 * resolved along body-frame axes, averaged over time interval.
13160 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13161 * resolved along body-frame axes, averaged over time interval.
13162 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13163 * resolved along body-frame axes, averaged over time interval.
13164 * @return estimated ECEF frame containing new body position, velocity and coordinate
13165 * transformation matrix.
13166 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13167 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13168 * body-to-ECEF-frame coordinate transformation matrix are
13169 * invalid.
13170 */
13171 public static ECEFFrame navigateECEFAndReturnNew(
13172 final double timeInterval, final double oldX, final double oldY, final double oldZ,
13173 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
13174 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13175 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13176 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13177 final var result = new ECEFFrame();
13178 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
13179 angularRateX, angularRateY, angularRateZ, result);
13180 return result;
13181 }
13182
13183 /**
13184 * Runs precision ECEF-frame inertial navigation equations.
13185 *
13186 * @param timeInterval time interval between epochs.
13187 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
13188 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13189 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
13190 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13191 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
13192 * frame, resolved along ECEF-frame axes and expressed in meters (m).
13193 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13194 * @param oldVelocity previous body velocity resolved along ECEF-frame axes.
13195 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13196 * resolved along body-frame axes, averaged over time interval.
13197 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13198 * resolved along body-frame axes, averaged over time interval.
13199 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13200 * resolved along body-frame axes, averaged over time interval.
13201 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13202 * resolved along body-frame axes, averaged over time interval.
13203 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13204 * resolved along body-frame axes, averaged over time interval.
13205 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13206 * resolved along body-frame axes, averaged over time interval.
13207 * @return estimated ECEF frame containing new body position, velocity and coordinate
13208 * transformation matrix.
13209 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13210 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13211 * body-to-ECEF-frame coordinate transformation matrix are
13212 * invalid.
13213 */
13214 public static ECEFFrame navigateECEFAndReturnNew(
13215 final Time timeInterval, final double oldX, final double oldY, final double oldZ,
13216 final CoordinateTransformation oldC, final ECEFVelocity oldVelocity,
13217 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13218 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13219 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13220 final var result = new ECEFFrame();
13221 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldVelocity, fx, fy, fz,
13222 angularRateX, angularRateY, angularRateZ, result);
13223 return result;
13224 }
13225
13226 /**
13227 * Runs precision ECEF-frame inertial navigation equations.
13228 *
13229 * @param timeInterval time interval between epochs expressed in seconds (s).
13230 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
13231 * frame, resolved along ECEF-frame axes.
13232 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
13233 * frame, resolved along ECEF-frame axes.
13234 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
13235 * frame, resolved along ECEF-frame axes.
13236 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13237 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
13238 * resolved along ECEF-frame axes.
13239 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
13240 * resolved along ECEF-frame axes.
13241 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
13242 * resolved along ECEF-frame axes.
13243 * @param kinematics body kinematics containing specific forces and angular rates applied to
13244 * the body.
13245 * @return estimated ECEF frame containing new body position, velocity and coordinate
13246 * transformation matrix.
13247 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13248 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13249 * body-to-ECEF-frame coordinate transformation matrix are
13250 * invalid.
13251 */
13252 public static ECEFFrame navigateECEFAndReturnNew(
13253 final double timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
13254 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
13255 final BodyKinematics kinematics)
13256 throws InertialNavigatorException, InvalidSourceAndDestinationFrameTypeException {
13257 final var result = new ECEFFrame();
13258 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
13259 return result;
13260 }
13261
13262 /**
13263 * Runs precision ECEF-frame inertial navigation equations.
13264 *
13265 * @param timeInterval time interval between epochs.
13266 * @param oldX previous cartesian x-coordinate position of body frame with respect ECEF
13267 * frame, resolved along ECEF-frame axes.
13268 * @param oldY previous cartesian y-coordinate position of body frame with respect ECEF
13269 * frame, resolved along ECEF-frame axes.
13270 * @param oldZ previous cartesian z-coordinate position of body frame with respect ECEF
13271 * frame, resolved along ECEF-frame axes.
13272 * @param oldC previous body-to-ECEF-frame coordinate transformation.
13273 * @param oldSpeedX previous velocity x-coordinate of body frame with respect ECEF frame,
13274 * resolved along ECEF-frame axes.
13275 * @param oldSpeedY previous velocity y-coordinate of body frame with respect ECEF frame,
13276 * resolved along ECEF-frame axes.
13277 * @param oldSpeedZ previous velocity z-coordinate of body frame with respect ECEF frame,
13278 * resolved along ECEF-frame axes.
13279 * @param kinematics body kinematics containing specific forces and angular rates applied to
13280 * the body.
13281 * @return estimated ECEF frame containing new body position, velocity and coordinate
13282 * transformation matrix.
13283 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13284 * @throws InvalidSourceAndDestinationFrameTypeException if source or destination frame types of previous
13285 * body-to-ECEF-frame coordinate transformation matrix are
13286 * invalid.
13287 */
13288 public static ECEFFrame navigateECEFAndReturnNew(
13289 final Time timeInterval, final Distance oldX, final Distance oldY, final Distance oldZ,
13290 final CoordinateTransformation oldC, final Speed oldSpeedX, final Speed oldSpeedY, final Speed oldSpeedZ,
13291 final BodyKinematics kinematics) throws InertialNavigatorException,
13292 InvalidSourceAndDestinationFrameTypeException {
13293 final var result = new ECEFFrame();
13294 navigateECEF(timeInterval, oldX, oldY, oldZ, oldC, oldSpeedX, oldSpeedY, oldSpeedZ, kinematics, result);
13295 return result;
13296 }
13297
13298 /**
13299 * Runs precision ECEF-frame inertial navigation equations.
13300 *
13301 * @param timeInterval time interval between epochs expressed in seconds (s).
13302 * @param oldFrame previous ECEF frame containing body position, velocity and
13303 * coordinate transformation matrix.
13304 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13305 * resolved along body-frame axes, averaged over time interval and
13306 * expressed in meters per squared second (m/s^2).
13307 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13308 * resolved along body-frame axes, averaged over time interval and
13309 * expressed in meters per squared second (m/s^2).
13310 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13311 * resolved along body-frame axes, averaged over time interval and
13312 * expressed in meters per squared second (m/s^2).
13313 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13314 * resolved along body-frame axes, averaged over time interval and
13315 * expressed in radians per second (rad/s).
13316 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13317 * resolved along body-frame axes, averaged over time interval and
13318 * expressed in radians per second (rad/s).
13319 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13320 * resolved along body-frame axes, averaged over time interval and
13321 * expressed in radians per second (rad/s).
13322 * @return estimated ECEF frame containing new body position, velocity and coordinate
13323 * transformation matrix.
13324 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13325 */
13326 public static ECEFFrame navigateECEFAndReturnNew(
13327 final double timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
13328 final double angularRateX, final double angularRateY, final double angularRateZ)
13329 throws InertialNavigatorException {
13330 final var result = new ECEFFrame();
13331 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13332 return result;
13333 }
13334
13335 /**
13336 * Runs precision ECEF-frame inertial navigation equations.
13337 *
13338 * @param timeInterval time interval between epochs.
13339 * @param oldFrame previous ECEF frame containing body position, velocity and
13340 * coordinate transformation matrix.
13341 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13342 * resolved along body-frame axes, averaged over time interval and
13343 * expressed in meters per squared second (m/s^2).
13344 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13345 * resolved along body-frame axes, averaged over time interval and
13346 * expressed in meters per squared second (m/s^2).
13347 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13348 * resolved along body-frame axes, averaged over time interval and
13349 * expressed in meters per squared second (m/s^2).
13350 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13351 * resolved along body-frame axes, averaged over time interval and
13352 * expressed in radians per second (rad/s).
13353 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13354 * resolved along body-frame axes, averaged over time interval and
13355 * expressed in radians per second (rad/s).
13356 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13357 * resolved along body-frame axes, averaged over time interval and
13358 * expressed in radians per second (rad/s).
13359 * @return estimated ECEF frame containing new body position, velocity and coordinate
13360 * transformation matrix.
13361 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13362 */
13363 public static ECEFFrame navigateECEFAndReturnNew(
13364 final Time timeInterval, final ECEFFrame oldFrame,
13365 final double fx, final double fy, final double fz,
13366 final double angularRateX, final double angularRateY, final double angularRateZ)
13367 throws InertialNavigatorException {
13368 final var result = new ECEFFrame();
13369 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13370 return result;
13371 }
13372
13373 /**
13374 * Runs precision ECEF-frame inertial navigation equations.
13375 *
13376 * @param timeInterval time interval between epochs expressed in seconds (s).
13377 * @param oldFrame previous ECEF frame containing body position, velocity and
13378 * coordinate transformation matrix.
13379 * @param kinematics body kinematics containing specific forces and angular rates applied to
13380 * the body.
13381 * @return estimated ECEF frame containing new body position, velocity and coordinate
13382 * transformation matrix.
13383 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13384 */
13385 public static ECEFFrame navigateECEFAndReturnNew(
13386 final double timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics)
13387 throws InertialNavigatorException {
13388 final var result = new ECEFFrame();
13389 navigateECEF(timeInterval, oldFrame, kinematics, result);
13390 return result;
13391 }
13392
13393 /**
13394 * Runs precision ECEF-frame inertial navigation equations.
13395 *
13396 * @param timeInterval time interval between epochs.
13397 * @param oldFrame previous ECEF frame containing body position, velocity and
13398 * coordinate transformation matrix.
13399 * @param kinematics body kinematics containing specific forces and angular rates applied to
13400 * the body.
13401 * @return estimated ECEF frame containing new body position, velocity and coordinate
13402 * transformation matrix.
13403 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13404 */
13405 public static ECEFFrame navigateECEFAndReturnNew(
13406 final Time timeInterval, final ECEFFrame oldFrame, final BodyKinematics kinematics)
13407 throws InertialNavigatorException {
13408 final var result = new ECEFFrame();
13409 navigateECEF(timeInterval, oldFrame, kinematics, result);
13410 return result;
13411 }
13412
13413 /**
13414 * Runs precision ECEF-frame inertial navigation equations.
13415 *
13416 * @param timeInterval time interval between epochs expressed in seconds (s).
13417 * @param oldFrame previous ECEF frame containing body position, velocity and
13418 * coordinate transformation matrix.
13419 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13420 * resolved along body-frame axes, averaged over time interval.
13421 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13422 * resolved along body-frame axes, averaged over time interval.
13423 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13424 * resolved along body-frame axes, averaged over time interval.
13425 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13426 * resolved along body-frame axes, averaged over time interval and
13427 * expressed in radians per second (rad/s).
13428 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13429 * resolved along body-frame axes, averaged over time interval and
13430 * expressed in radians per second (rad/s).
13431 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13432 * resolved along body-frame axes, averaged over time interval and
13433 * expressed in radians per second (rad/s).
13434 * @return estimated ECEF frame containing new body position, velocity and coordinate
13435 * transformation matrix.
13436 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13437 */
13438 public static ECEFFrame navigateECEFAndReturnNew(
13439 final double timeInterval, final ECEFFrame oldFrame,
13440 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13441 final double angularRateX, final double angularRateY, final double angularRateZ)
13442 throws InertialNavigatorException {
13443 final var result = new ECEFFrame();
13444 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13445 return result;
13446 }
13447
13448 /**
13449 * Runs precision ECEF-frame inertial navigation equations.
13450 *
13451 * @param timeInterval time interval between epochs.
13452 * @param oldFrame previous ECEF frame containing body position, velocity and
13453 * coordinate transformation matrix.
13454 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13455 * resolved along body-frame axes, averaged over time interval.
13456 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13457 * resolved along body-frame axes, averaged over time interval.
13458 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13459 * resolved along body-frame axes, averaged over time interval.
13460 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13461 * resolved along body-frame axes, averaged over time interval and
13462 * expressed in radians per second (rad/s).
13463 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13464 * resolved along body-frame axes, averaged over time interval and
13465 * expressed in radians per second (rad/s).
13466 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13467 * resolved along body-frame axes, averaged over time interval and
13468 * expressed in radians per second (rad/s).
13469 * @return estimated ECEF frame containing new body position, velocity and coordinate
13470 * transformation matrix.
13471 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13472 */
13473 public static ECEFFrame navigateECEFAndReturnNew(
13474 final Time timeInterval, final ECEFFrame oldFrame,
13475 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13476 final double angularRateX, final double angularRateY, final double angularRateZ)
13477 throws InertialNavigatorException {
13478 final var result = new ECEFFrame();
13479 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13480 return result;
13481 }
13482
13483 /**
13484 * Runs precision ECEF-frame inertial navigation equations.
13485 *
13486 * @param timeInterval time interval between epochs expressed in seconds (s).
13487 * @param oldFrame previous ECEF frame containing body position, velocity and
13488 * coordinate transformation matrix.
13489 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13490 * resolved along body-frame axes, averaged over time interval and
13491 * expressed in meters per squared second (m/s^2).
13492 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13493 * resolved along body-frame axes, averaged over time interval and
13494 * expressed in meters per squared second (m/s^2).
13495 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13496 * resolved along body-frame axes, averaged over time interval and
13497 * expressed in meters per squared second (m/s^2).
13498 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13499 * resolved along body-frame axes, averaged over time interval.
13500 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13501 * resolved along body-frame axes, averaged over time interval.
13502 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13503 * resolved along body-frame axes, averaged over time interval.
13504 * @return estimated ECEF frame containing new body position, velocity and coordinate
13505 * transformation matrix.
13506 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13507 */
13508 public static ECEFFrame navigateECEFAndReturnNew(
13509 final double timeInterval, final ECEFFrame oldFrame,
13510 final double fx, final double fy, final double fz,
13511 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13512 throws InertialNavigatorException {
13513 final var result = new ECEFFrame();
13514 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13515 return result;
13516 }
13517
13518 /**
13519 * Runs precision ECEF-frame inertial navigation equations.
13520 *
13521 * @param timeInterval time interval between epochs.
13522 * @param oldFrame previous ECEF frame containing body position, velocity and
13523 * coordinate transformation matrix.
13524 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13525 * resolved along body-frame axes, averaged over time interval and
13526 * expressed in meters per squared second (m/s^2).
13527 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13528 * resolved along body-frame axes, averaged over time interval and
13529 * expressed in meters per squared second (m/s^2).
13530 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13531 * resolved along body-frame axes, averaged over time interval and
13532 * expressed in meters per squared second (m/s^2).
13533 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13534 * resolved along body-frame axes, averaged over time interval.
13535 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13536 * resolved along body-frame axes, averaged over time interval.
13537 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13538 * resolved along body-frame axes, averaged over time interval.
13539 * @return estimated ECEF frame containing new body position, velocity and coordinate
13540 * transformation matrix.
13541 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13542 */
13543 public static ECEFFrame navigateECEFAndReturnNew(
13544 final Time timeInterval, final ECEFFrame oldFrame, final double fx, final double fy, final double fz,
13545 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13546 throws InertialNavigatorException {
13547 final var result = new ECEFFrame();
13548 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13549 return result;
13550 }
13551
13552 /**
13553 * Runs precision ECEF-frame inertial navigation equations.
13554 *
13555 * @param timeInterval time interval between epochs expressed in seconds (s).
13556 * @param oldFrame previous ECEF frame containing body position, velocity and
13557 * coordinate transformation matrix.
13558 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13559 * resolved along body-frame axes, averaged over time interval.
13560 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13561 * resolved along body-frame axes, averaged over time interval.
13562 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13563 * resolved along body-frame axes, averaged over time interval.
13564 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13565 * resolved along body-frame axes, averaged over time interval.
13566 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13567 * resolved along body-frame axes, averaged over time interval.
13568 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13569 * resolved along body-frame axes, averaged over time interval.
13570 * @return estimated ECEF frame containing new body position, velocity and coordinate
13571 * transformation matrix.
13572 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13573 */
13574 public static ECEFFrame navigateECEFAndReturnNew(
13575 final double timeInterval, final ECEFFrame oldFrame,
13576 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13577 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13578 throws InertialNavigatorException {
13579 final var result = new ECEFFrame();
13580 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13581 return result;
13582 }
13583
13584 /**
13585 * Runs precision ECEF-frame inertial navigation equations.
13586 *
13587 * @param timeInterval time interval between epochs.
13588 * @param oldFrame previous ECEF frame containing body position, velocity and
13589 * coordinate transformation matrix.
13590 * @param fx specific force x-coordinate of body frame with respect ECEF frame,
13591 * resolved along body-frame axes, averaged over time interval.
13592 * @param fy specific force y-coordinate of body frame with respect ECEF frame,
13593 * resolved along body-frame axes, averaged over time interval.
13594 * @param fz specific force z-coordinate of body frame with respect ECEF frame,
13595 * resolved along body-frame axes, averaged over time interval.
13596 * @param angularRateX angular rate x-coordinate of body frame with respect ECEF frame,
13597 * resolved along body-frame axes, averaged over time interval.
13598 * @param angularRateY angular rate y-coordinate of body frame with respect ECEF frame,
13599 * resolved along body-frame axes, averaged over time interval.
13600 * @param angularRateZ angular rate z-coordinate of body frame with respect ECEF frame,
13601 * resolved along body-frame axes, averaged over time interval.
13602 * @return estimated ECEF frame containing new body position, velocity and coordinate
13603 * transformation matrix.
13604 * @throws InertialNavigatorException if navigation fails due to numerical instabilities.
13605 */
13606 public static ECEFFrame navigateECEFAndReturnNew(
13607 final Time timeInterval, final ECEFFrame oldFrame,
13608 final Acceleration fx, final Acceleration fy, final Acceleration fz,
13609 final AngularSpeed angularRateX, final AngularSpeed angularRateY, final AngularSpeed angularRateZ)
13610 throws InertialNavigatorException {
13611 final var result = new ECEFFrame();
13612 navigateECEF(timeInterval, oldFrame, fx, fy, fz, angularRateX, angularRateY, angularRateZ, result);
13613 return result;
13614 }
13615
13616 /**
13617 * Checks whether provided coordinate transformation matrix is valid or not.
13618 * Only body to ECEF transformation matrices are considered to be valid.
13619 *
13620 * @param c coordinate transformation matrix to be checked.
13621 * @return true if provided value is valid, false otherwise.
13622 */
13623 public static boolean isValidBodyToEcefCoordinateTransformationMatrix(final CoordinateTransformation c) {
13624 return ECEFFrame.isValidCoordinateTransformation(c);
13625 }
13626
13627 /**
13628 * Converts provided time instance into its corresponding value expressed in
13629 * seconds.
13630 *
13631 * @param time time instance to be converted.
13632 * @return converted value expressed in seconds.
13633 */
13634 private static double convertTimeToDouble(final Time time) {
13635 return TimeConverter.convert(time.getValue().doubleValue(), time.getUnit(), TimeUnit.SECOND);
13636 }
13637
13638 /**
13639 * Converts provided distance instance into its corresponding value expressed in
13640 * meters.
13641 *
13642 * @param distance distance instance to be converted.
13643 * @return converted value expressed in meters.
13644 */
13645 private static double convertDistanceToDouble(final Distance distance) {
13646 return DistanceConverter.convert(distance.getValue().doubleValue(), distance.getUnit(), DistanceUnit.METER);
13647 }
13648
13649 /**
13650 * Converts provided speed instance into its corresponding value expressed in
13651 * meters per second.
13652 *
13653 * @param speed speed instance to be converted.
13654 * @return converted value expressed in meters per second.
13655 */
13656 private static double convertSpeedToDouble(final Speed speed) {
13657 return SpeedConverter.convert(speed.getValue().doubleValue(), speed.getUnit(), SpeedUnit.METERS_PER_SECOND);
13658 }
13659
13660 /**
13661 * Converts provided acceleration instance into its corresponding value expressed
13662 * in meters per squared second.
13663 *
13664 * @param acceleration acceleration instance to be converted.
13665 * @return converted value expressed in meters per squared second.
13666 */
13667 private static double convertAccelerationToDouble(final Acceleration acceleration) {
13668 return AccelerationConverter.convert(acceleration.getValue().doubleValue(), acceleration.getUnit(),
13669 AccelerationUnit.METERS_PER_SQUARED_SECOND);
13670 }
13671
13672 /**
13673 * Converts provided angular speed into its corresponding value expressed in
13674 * radians per second.
13675 *
13676 * @param angularSpeed angular speed instance to be converted.
13677 * @return converted value expressed in radians per second.
13678 */
13679 private static double convertAngularSpeedToDouble(final AngularSpeed angularSpeed) {
13680 return AngularSpeedConverter.convert(angularSpeed.getValue().doubleValue(), angularSpeed.getUnit(),
13681 AngularSpeedUnit.RADIANS_PER_SECOND);
13682 }
13683 }