View Javadoc
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 }