Skip to main content

lox_bodies/
generated.rs

1// SPDX-FileCopyrightText: 2024 Helge Eichhorn <git@helgeeichhorn.de>
2// SPDX-License-Identifier: MPL-2.0
3
4// Auto-generated by `lox-gen`. Do not edit!
5
6use crate::DynOrigin;
7use crate::Elements;
8use crate::MeanRadius;
9use crate::NaifId;
10use crate::Origin;
11use crate::PointMass;
12use crate::Radii;
13use crate::RotationalElement;
14use crate::RotationalElementType;
15use crate::RotationalElements;
16use crate::Spheroid;
17use crate::TriaxialEllipsoid;
18use crate::TryMeanRadius;
19use crate::TryPointMass;
20use crate::TryRotationalElements;
21use crate::TrySpheroid;
22use crate::TryTriaxialEllipsoid;
23use crate::UndefinedOriginPropertyError;
24use lox_core::elements::GravitationalParameter;
25use lox_core::units::Distance;
26use std::fmt::Display;
27use std::fmt::Formatter;
28#[doc = "Sun (NAIF ID: 10)."]
29#[derive(Debug, Copy, Clone, Eq, PartialEq)]
30#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
31pub struct Sun;
32impl Origin for Sun {
33    fn id(&self) -> NaifId {
34        NaifId(10i32)
35    }
36    fn name(&self) -> &'static str {
37        "Sun"
38    }
39}
40impl Display for Sun {
41    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
42        write!(f, "{}", self.name())
43    }
44}
45impl From<Sun> for DynOrigin {
46    fn from(_: Sun) -> Self {
47        DynOrigin::Sun
48    }
49}
50impl PointMass for Sun {
51    fn gravitational_parameter(&self) -> GravitationalParameter {
52        GravitationalParameter::km3_per_s2(132712440041.27942f64)
53    }
54}
55impl TriaxialEllipsoid for Sun {
56    fn radii(&self) -> Radii {
57        (
58            Distance::kilometers(695700f64),
59            Distance::kilometers(695700f64),
60            Distance::kilometers(695700f64),
61        )
62    }
63}
64impl Spheroid for Sun {}
65const RIGHT_ASCENSION_SUN: RotationalElement<0usize> = RotationalElement {
66    typ: RotationalElementType::RightAscension,
67    c0: 4.993910588731375f64,
68    c1: 0f64,
69    c2: 0f64,
70    c: [],
71    theta0: [],
72    theta1: [],
73};
74const DECLINATION_SUN: RotationalElement<0usize> = RotationalElement {
75    typ: RotationalElementType::Declination,
76    c0: 1.1147417932487782f64,
77    c1: 0f64,
78    c2: 0f64,
79    c: [],
80    theta0: [],
81    theta1: [],
82};
83const ROTATION_SUN: RotationalElement<0usize> = RotationalElement {
84    typ: RotationalElementType::Rotation,
85    c0: 1.4691483511587469f64,
86    c1: 0.24756448241988369f64,
87    c2: 0f64,
88    c: [],
89    theta0: [],
90    theta1: [],
91};
92impl RotationalElements for Sun {
93    fn rotational_elements(&self, t: f64) -> Elements {
94        (
95            RIGHT_ASCENSION_SUN.angle(t),
96            DECLINATION_SUN.angle(t),
97            ROTATION_SUN.angle(t),
98        )
99    }
100    fn rotational_element_rates(&self, t: f64) -> Elements {
101        (
102            RIGHT_ASCENSION_SUN.angle_dot(t),
103            DECLINATION_SUN.angle_dot(t),
104            ROTATION_SUN.angle_dot(t),
105        )
106    }
107}
108#[doc = "Mercury (NAIF ID: 199)."]
109#[derive(Debug, Copy, Clone, Eq, PartialEq)]
110#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
111pub struct Mercury;
112impl Origin for Mercury {
113    fn id(&self) -> NaifId {
114        NaifId(199i32)
115    }
116    fn name(&self) -> &'static str {
117        "Mercury"
118    }
119}
120impl Display for Mercury {
121    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
122        write!(f, "{}", self.name())
123    }
124}
125impl From<Mercury> for DynOrigin {
126    fn from(_: Mercury) -> Self {
127        DynOrigin::Mercury
128    }
129}
130impl PointMass for Mercury {
131    fn gravitational_parameter(&self) -> GravitationalParameter {
132        GravitationalParameter::km3_per_s2(22031.868551400003f64)
133    }
134}
135impl MeanRadius for Mercury {
136    fn mean_radius(&self) -> Distance {
137        Distance::kilometers(2439.4f64)
138    }
139}
140impl TriaxialEllipsoid for Mercury {
141    fn radii(&self) -> Radii {
142        (
143            Distance::kilometers(2440.53f64),
144            Distance::kilometers(2440.53f64),
145            Distance::kilometers(2438.26f64),
146        )
147    }
148}
149impl Spheroid for Mercury {}
150const RIGHT_ASCENSION_MERCURY: RotationalElement<5usize> = RotationalElement {
151    typ: RotationalElementType::RightAscension,
152    c0: 4.904554967017021f64,
153    c1: -0.0005724679946541401f64,
154    c2: 0f64,
155    c: [0f64, 0f64, 0f64, 0f64, 0f64],
156    theta0: [
157        3.0506799486005773f64,
158        6.101359897201155f64,
159        2.868854538622146f64,
160        5.919534488968053f64,
161        2.6870291303890443f64,
162    ],
163    theta1: [
164        2608.7878923240937f64,
165        5217.575784648187f64,
166        7826.363676972282f64,
167        10435.151569296375f64,
168        13043.939461620466f64,
169    ],
170};
171const DECLINATION_MERCURY: RotationalElement<5usize> = RotationalElement {
172    typ: RotationalElementType::Declination,
173    c0: 1.0719026867585775f64,
174    c1: -0.00008552113334772214f64,
175    c2: 0f64,
176    c: [0f64, 0f64, 0f64, 0f64, 0f64],
177    theta0: [
178        3.0506799486005773f64,
179        6.101359897201155f64,
180        2.868854538622146f64,
181        5.919534488968053f64,
182        2.6870291303890443f64,
183    ],
184    theta1: [
185        2608.7878923240937f64,
186        5217.575784648187f64,
187        7826.363676972282f64,
188        10435.151569296375f64,
189        13043.939461620466f64,
190    ],
191};
192const ROTATION_MERCURY: RotationalElement<5usize> = RotationalElement {
193    typ: RotationalElementType::Rotation,
194    c0: 5.752584270622286f64,
195    c1: 0.10713722462923113f64,
196    c2: 0f64,
197    c: [
198        0.0001862714861495712f64,
199        -0.000019601618296223117f64,
200        -0.00000192684349420174f64,
201        -0.00000044313909708136026f64,
202        -0.00000009965830028887623f64,
203    ],
204    theta0: [
205        3.0506799486005773f64,
206        6.101359897201155f64,
207        2.868854538622146f64,
208        5.919534488968053f64,
209        2.6870291303890443f64,
210    ],
211    theta1: [
212        2608.7878923240937f64,
213        5217.575784648187f64,
214        7826.363676972282f64,
215        10435.151569296375f64,
216        13043.939461620466f64,
217    ],
218};
219impl RotationalElements for Mercury {
220    fn rotational_elements(&self, t: f64) -> Elements {
221        (
222            RIGHT_ASCENSION_MERCURY.angle(t),
223            DECLINATION_MERCURY.angle(t),
224            ROTATION_MERCURY.angle(t),
225        )
226    }
227    fn rotational_element_rates(&self, t: f64) -> Elements {
228        (
229            RIGHT_ASCENSION_MERCURY.angle_dot(t),
230            DECLINATION_MERCURY.angle_dot(t),
231            ROTATION_MERCURY.angle_dot(t),
232        )
233    }
234}
235#[doc = "Venus (NAIF ID: 299)."]
236#[derive(Debug, Copy, Clone, Eq, PartialEq)]
237#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
238pub struct Venus;
239impl Origin for Venus {
240    fn id(&self) -> NaifId {
241        NaifId(299i32)
242    }
243    fn name(&self) -> &'static str {
244        "Venus"
245    }
246}
247impl Display for Venus {
248    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
249        write!(f, "{}", self.name())
250    }
251}
252impl From<Venus> for DynOrigin {
253    fn from(_: Venus) -> Self {
254        DynOrigin::Venus
255    }
256}
257impl PointMass for Venus {
258    fn gravitational_parameter(&self) -> GravitationalParameter {
259        GravitationalParameter::km3_per_s2(324858.592f64)
260    }
261}
262impl MeanRadius for Venus {
263    fn mean_radius(&self) -> Distance {
264        Distance::kilometers(6051.8f64)
265    }
266}
267impl TriaxialEllipsoid for Venus {
268    fn radii(&self) -> Radii {
269        (
270            Distance::kilometers(6051.8f64),
271            Distance::kilometers(6051.8f64),
272            Distance::kilometers(6051.8f64),
273        )
274    }
275}
276impl Spheroid for Venus {}
277const RIGHT_ASCENSION_VENUS: RotationalElement<0usize> = RotationalElement {
278    typ: RotationalElementType::RightAscension,
279    c0: 4.760560067739733f64,
280    c1: 0f64,
281    c2: 0f64,
282    c: [],
283    theta0: [],
284    theta1: [],
285};
286const DECLINATION_VENUS: RotationalElement<0usize> = RotationalElement {
287    typ: RotationalElementType::Declination,
288    c0: 1.1721631256393916f64,
289    c1: 0f64,
290    c2: 0f64,
291    c: [],
292    theta0: [],
293    theta1: [],
294};
295const ROTATION_VENUS: RotationalElement<0usize> = RotationalElement {
296    typ: RotationalElementType::Rotation,
297    c0: 2.7960174616949156f64,
298    c1: -0.025854762996317376f64,
299    c2: 0f64,
300    c: [],
301    theta0: [],
302    theta1: [],
303};
304impl RotationalElements for Venus {
305    fn rotational_elements(&self, t: f64) -> Elements {
306        (
307            RIGHT_ASCENSION_VENUS.angle(t),
308            DECLINATION_VENUS.angle(t),
309            ROTATION_VENUS.angle(t),
310        )
311    }
312    fn rotational_element_rates(&self, t: f64) -> Elements {
313        (
314            RIGHT_ASCENSION_VENUS.angle_dot(t),
315            DECLINATION_VENUS.angle_dot(t),
316            ROTATION_VENUS.angle_dot(t),
317        )
318    }
319}
320#[doc = "Earth (NAIF ID: 399)."]
321#[derive(Debug, Copy, Clone, Eq, PartialEq)]
322#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
323pub struct Earth;
324impl Origin for Earth {
325    fn id(&self) -> NaifId {
326        NaifId(399i32)
327    }
328    fn name(&self) -> &'static str {
329        "Earth"
330    }
331}
332impl Display for Earth {
333    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
334        write!(f, "{}", self.name())
335    }
336}
337impl From<Earth> for DynOrigin {
338    fn from(_: Earth) -> Self {
339        DynOrigin::Earth
340    }
341}
342impl PointMass for Earth {
343    fn gravitational_parameter(&self) -> GravitationalParameter {
344        GravitationalParameter::km3_per_s2(398600.43550702266f64)
345    }
346}
347impl MeanRadius for Earth {
348    fn mean_radius(&self) -> Distance {
349        Distance::kilometers(6371.0084f64)
350    }
351}
352impl TriaxialEllipsoid for Earth {
353    fn radii(&self) -> Radii {
354        (
355            Distance::kilometers(6378.1366f64),
356            Distance::kilometers(6378.1366f64),
357            Distance::kilometers(6356.7519f64),
358        )
359    }
360}
361impl Spheroid for Earth {}
362const RIGHT_ASCENSION_EARTH: RotationalElement<0usize> = RotationalElement {
363    typ: RotationalElementType::RightAscension,
364    c0: 0f64,
365    c1: -0.011187560505283653f64,
366    c2: 0f64,
367    c: [],
368    theta0: [],
369    theta1: [],
370};
371const DECLINATION_EARTH: RotationalElement<0usize> = RotationalElement {
372    typ: RotationalElementType::Declination,
373    c0: 1.5707963267948966f64,
374    c1: -0.009721483933608416f64,
375    c2: 0f64,
376    c: [],
377    theta0: [],
378    theta1: [],
379};
380const ROTATION_EARTH: RotationalElement<0usize> = RotationalElement {
381    typ: RotationalElementType::Rotation,
382    c0: 3.3186912127896577f64,
383    c1: 6.3003876824396166f64,
384    c2: 0f64,
385    c: [],
386    theta0: [],
387    theta1: [],
388};
389impl RotationalElements for Earth {
390    fn rotational_elements(&self, t: f64) -> Elements {
391        (
392            RIGHT_ASCENSION_EARTH.angle(t),
393            DECLINATION_EARTH.angle(t),
394            ROTATION_EARTH.angle(t),
395        )
396    }
397    fn rotational_element_rates(&self, t: f64) -> Elements {
398        (
399            RIGHT_ASCENSION_EARTH.angle_dot(t),
400            DECLINATION_EARTH.angle_dot(t),
401            ROTATION_EARTH.angle_dot(t),
402        )
403    }
404}
405#[doc = "Mars (NAIF ID: 499)."]
406#[derive(Debug, Copy, Clone, Eq, PartialEq)]
407#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
408pub struct Mars;
409impl Origin for Mars {
410    fn id(&self) -> NaifId {
411        NaifId(499i32)
412    }
413    fn name(&self) -> &'static str {
414        "Mars"
415    }
416}
417impl Display for Mars {
418    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
419        write!(f, "{}", self.name())
420    }
421}
422impl From<Mars> for DynOrigin {
423    fn from(_: Mars) -> Self {
424        DynOrigin::Mars
425    }
426}
427impl PointMass for Mars {
428    fn gravitational_parameter(&self) -> GravitationalParameter {
429        GravitationalParameter::km3_per_s2(42828.37362069909f64)
430    }
431}
432impl MeanRadius for Mars {
433    fn mean_radius(&self) -> Distance {
434        Distance::kilometers(3389.5f64)
435    }
436}
437impl TriaxialEllipsoid for Mars {
438    fn radii(&self) -> Radii {
439        (
440            Distance::kilometers(3396.19f64),
441            Distance::kilometers(3396.19f64),
442            Distance::kilometers(3376.2f64),
443        )
444    }
445}
446impl Spheroid for Mars {}
447const RIGHT_ASCENSION_MARS: RotationalElement<15usize> = RotationalElement {
448    typ: RotationalElementType::RightAscension,
449    c0: 5.5373921900749785f64,
450    c1: -0.001907216743164288f64,
451    c2: 0f64,
452    c: [
453        0f64,
454        0f64,
455        0f64,
456        0f64,
457        0f64,
458        0f64,
459        0f64,
460        0f64,
461        0f64,
462        0f64,
463        0.000001186823891356144f64,
464        0.000004153883619746505f64,
465        0.0000009075712110370513f64,
466        0.00000015707963267948966f64,
467        0.007313924403529878f64,
468    ],
469    theta0: [
470        3.328804809897935f64,
471        0.37470342287773584f64,
472        5.809517398292802f64,
473        6.892873571600945f64,
474        3.3097152567180146f64,
475        2.120032883264378f64,
476        4.032588225058434f64,
477        4.387288948439982f64,
478        3.8045796985836846f64,
479        3.424288764152381f64,
480        3.4730520762801462f64,
481        3.9495523217086292f64,
482        4.357448194643978f64,
483        4.645778664015252f64,
484        1.3857704297725961f64,
485    ],
486    theta1: [
487        277.80594525842264f64,
488        555.6129894920322f64,
489        334.05422022489097f64,
490        668.125936040531f64,
491        719340.2120445863f64,
492        11.523153020184504f64,
493        11.536473384554899f64,
494        23.047098122619843f64,
495        668.1113614443373f64,
496        334.05316148477937f64,
497        334.0469780000094f64,
498        668.1268926511307f64,
499        1002.1807129125305f64,
500        1336.235189496269f64,
501        0.008801023466045386f64,
502    ],
503};
504const DECLINATION_MARS: RotationalElement<20usize> = RotationalElement {
505    typ: RotationalElementType::Declination,
506    c0: 0.9500266243444937f64,
507    c1: -0.0010170216810942417f64,
508    c2: 0f64,
509    c: [
510        0f64,
511        0f64,
512        0f64,
513        0f64,
514        0f64,
515        0f64,
516        0f64,
517        0f64,
518        0f64,
519        0f64,
520        0f64,
521        0f64,
522        0f64,
523        0f64,
524        0f64,
525        0.000000890117918517108f64,
526        0.000002460914245312005f64,
527        0.0000005410520681182422f64,
528        0.00000008726646259971648f64,
529        0.02777297060138025f64,
530    ],
531    theta0: [
532        3.328804809897935f64,
533        0.37470342287773584f64,
534        5.809517398292802f64,
535        6.892873571600945f64,
536        3.3097152567180146f64,
537        2.120032883264378f64,
538        4.032588225058434f64,
539        4.387288948439982f64,
540        3.8045796985836846f64,
541        3.424288764152381f64,
542        3.4730520762801462f64,
543        3.9495523217086292f64,
544        4.357448194643978f64,
545        4.645778664015252f64,
546        1.3857704297725961f64,
547        2.136869016190709f64,
548        0.751510868094019f64,
549        1.0064158213753553f64,
550        1.3871248750853138f64,
551        2.9029314796567682f64,
552    ],
553    theta1: [
554        277.80594525842264f64,
555        555.6129894920322f64,
556        334.05422022489097f64,
557        668.125936040531f64,
558        719340.2120445863f64,
559        11.523153020184504f64,
560        11.536473384554899f64,
561        23.047098122619843f64,
562        668.1113614443373f64,
563        334.05316148477937f64,
564        334.0469780000094f64,
565        668.1268926511307f64,
566        1002.1807129125305f64,
567        1336.235189496269f64,
568        0.008801023466045386f64,
569        334.054984682245f64,
570        668.1273150051017f64,
571        1002.1811764929237f64,
572        1336.2354112473317f64,
573        0.008801023466045386f64,
574    ],
575};
576const ROTATION_MARS: RotationalElement<26usize> = RotationalElement {
577    typ: RotationalElementType::Rotation,
578    c0: 3.0726497570349416f64,
579    c1: 6.12422041248567f64,
580    c2: 0f64,
581    c: [
582        0f64,
583        0f64,
584        0f64,
585        0f64,
586        0f64,
587        0f64,
588        0f64,
589        0f64,
590        0f64,
591        0f64,
592        0f64,
593        0f64,
594        0f64,
595        0f64,
596        0f64,
597        0f64,
598        0f64,
599        0f64,
600        0f64,
601        0f64,
602        0.000002530727415391778f64,
603        0.0000027401669256310974f64,
604        0.0000006981317007977319f64,
605        0.000000017453292519943295f64,
606        0.000000017453292519943295f64,
607        0.010202182516192693f64,
608    ],
609    theta0: [
610        3.328804809897935f64,
611        0.37470342287773584f64,
612        5.809517398292802f64,
613        6.892873571600945f64,
614        3.3097152567180146f64,
615        2.120032883264378f64,
616        4.032588225058434f64,
617        4.387288948439982f64,
618        3.8045796985836846f64,
619        3.424288764152381f64,
620        3.4730520762801462f64,
621        3.9495523217086292f64,
622        4.357448194643978f64,
623        4.645778664015252f64,
624        1.3857704297725961f64,
625        2.136869016190709f64,
626        0.751510868094019f64,
627        1.0064158213753553f64,
628        1.3871248750853138f64,
629        2.9029314796567682f64,
630        2.252727410236719f64,
631        0.6344650043848296f64,
632        0.9890544553471146f64,
633        1.1757236496733376f64,
634        1.8289772979888115f64,
635        1.664898441223219f64,
636    ],
637    theta1: [
638        277.80594525842264f64,
639        555.6129894920322f64,
640        334.05422022489097f64,
641        668.125936040531f64,
642        719340.2120445863f64,
643        11.523153020184504f64,
644        11.536473384554899f64,
645        23.047098122619843f64,
646        668.1113614443373f64,
647        334.05316148477937f64,
648        334.0469780000094f64,
649        668.1268926511307f64,
650        1002.1807129125305f64,
651        1336.235189496269f64,
652        0.008801023466045386f64,
653        334.054984682245f64,
654        668.1273150051017f64,
655        1002.1811764929237f64,
656        1336.2354112473317f64,
657        0.008801023466045386f64,
658        334.05659172556966f64,
659        668.130317528175f64,
660        1002.1842799588599f64,
661        1336.2285297823557f64,
662        1670.2877519268022f64,
663        0.008801023466045386f64,
664    ],
665};
666impl RotationalElements for Mars {
667    fn rotational_elements(&self, t: f64) -> Elements {
668        (
669            RIGHT_ASCENSION_MARS.angle(t),
670            DECLINATION_MARS.angle(t),
671            ROTATION_MARS.angle(t),
672        )
673    }
674    fn rotational_element_rates(&self, t: f64) -> Elements {
675        (
676            RIGHT_ASCENSION_MARS.angle_dot(t),
677            DECLINATION_MARS.angle_dot(t),
678            ROTATION_MARS.angle_dot(t),
679        )
680    }
681}
682#[doc = "Jupiter (NAIF ID: 599)."]
683#[derive(Debug, Copy, Clone, Eq, PartialEq)]
684#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
685pub struct Jupiter;
686impl Origin for Jupiter {
687    fn id(&self) -> NaifId {
688        NaifId(599i32)
689    }
690    fn name(&self) -> &'static str {
691        "Jupiter"
692    }
693}
694impl Display for Jupiter {
695    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
696        write!(f, "{}", self.name())
697    }
698}
699impl From<Jupiter> for DynOrigin {
700    fn from(_: Jupiter) -> Self {
701        DynOrigin::Jupiter
702    }
703}
704impl PointMass for Jupiter {
705    fn gravitational_parameter(&self) -> GravitationalParameter {
706        GravitationalParameter::km3_per_s2(126686531.9003704f64)
707    }
708}
709impl MeanRadius for Jupiter {
710    fn mean_radius(&self) -> Distance {
711        Distance::kilometers(69911f64)
712    }
713}
714impl TriaxialEllipsoid for Jupiter {
715    fn radii(&self) -> Radii {
716        (
717            Distance::kilometers(71492f64),
718            Distance::kilometers(71492f64),
719            Distance::kilometers(66854f64),
720        )
721    }
722}
723impl Spheroid for Jupiter {}
724const RIGHT_ASCENSION_JUPITER: RotationalElement<15usize> = RotationalElement {
725    typ: RotationalElementType::RightAscension,
726    c0: 4.6784701644349695f64,
727    c1: -0.00011342894808711148f64,
728    c2: 0f64,
729    c: [
730        0f64,
731        0f64,
732        0f64,
733        0f64,
734        0f64,
735        0f64,
736        0f64,
737        0f64,
738        0f64,
739        0f64,
740        0.0000020420352248333656f64,
741        0.000016371188383706813f64,
742        0.000024993114888558796f64,
743        0.0000005235987755982989f64,
744        0.00003752457891787809f64,
745    ],
746    theta0: [
747        1.2796754075622423f64,
748        0.42970006184100396f64,
749        4.9549897464119015f64,
750        6.2098814785958245f64,
751        2.092649773141201f64,
752        4.010766621082969f64,
753        6.147922290150026f64,
754        1.9783307071355725f64,
755        2.5593508151244846f64,
756        0.8594001236820079f64,
757        1.734171606432425f64,
758        3.0699533280603655f64,
759        5.241627996900319f64,
760        1.9898901100379935f64,
761        0.864134346731335f64,
762    ],
763    theta1: [
764        1596.503281347521f64,
765        787.7927551311844f64,
766        84.66068602648895f64,
767        20.792107379008446f64,
768        4.574507969477138f64,
769        1.1222467090323538f64,
770        41.58421475801689f64,
771        105.9414855960558f64,
772        3193.006562695042f64,
773        1575.5855102623689f64,
774        84.65553032387855f64,
775        20.80363527871787f64,
776        4.582318317879813f64,
777        105.94580703128374f64,
778        1.1222467090323538f64,
779    ],
780};
781const DECLINATION_JUPITER: RotationalElement<15usize> = RotationalElement {
782    typ: RotationalElementType::Declination,
783    c0: 1.1256553894213766f64,
784    c1: 0.00004211479485062318f64,
785    c2: 0f64,
786    c: [
787        0f64,
788        0f64,
789        0f64,
790        0f64,
791        0f64,
792        0f64,
793        0f64,
794        0f64,
795        0f64,
796        0f64,
797        0.0000008726646259971648f64,
798        0.000007051130178057092f64,
799        0.000010768681484805013f64,
800        -0.00000022689280275926283f64,
801        0.00001616174887346749f64,
802    ],
803    theta0: [
804        1.2796754075622423f64,
805        0.42970006184100396f64,
806        4.9549897464119015f64,
807        6.2098814785958245f64,
808        2.092649773141201f64,
809        4.010766621082969f64,
810        6.147922290150026f64,
811        1.9783307071355725f64,
812        2.5593508151244846f64,
813        0.8594001236820079f64,
814        1.734171606432425f64,
815        3.0699533280603655f64,
816        5.241627996900319f64,
817        1.9898901100379935f64,
818        0.864134346731335f64,
819    ],
820    theta1: [
821        1596.503281347521f64,
822        787.7927551311844f64,
823        84.66068602648895f64,
824        20.792107379008446f64,
825        4.574507969477138f64,
826        1.1222467090323538f64,
827        41.58421475801689f64,
828        105.9414855960558f64,
829        3193.006562695042f64,
830        1575.5855102623689f64,
831        84.65553032387855f64,
832        20.80363527871787f64,
833        4.582318317879813f64,
834        105.94580703128374f64,
835        1.1222467090323538f64,
836    ],
837};
838const ROTATION_JUPITER: RotationalElement<15usize> = RotationalElement {
839    typ: RotationalElementType::Rotation,
840    c0: 4.973315703557842f64,
841    c1: 15.193719457141356f64,
842    c2: 0f64,
843    c: [
844        0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64,
845    ],
846    theta0: [
847        1.2796754075622423f64,
848        0.42970006184100396f64,
849        4.9549897464119015f64,
850        6.2098814785958245f64,
851        2.092649773141201f64,
852        4.010766621082969f64,
853        6.147922290150026f64,
854        1.9783307071355725f64,
855        2.5593508151244846f64,
856        0.8594001236820079f64,
857        1.734171606432425f64,
858        3.0699533280603655f64,
859        5.241627996900319f64,
860        1.9898901100379935f64,
861        0.864134346731335f64,
862    ],
863    theta1: [
864        1596.503281347521f64,
865        787.7927551311844f64,
866        84.66068602648895f64,
867        20.792107379008446f64,
868        4.574507969477138f64,
869        1.1222467090323538f64,
870        41.58421475801689f64,
871        105.9414855960558f64,
872        3193.006562695042f64,
873        1575.5855102623689f64,
874        84.65553032387855f64,
875        20.80363527871787f64,
876        4.582318317879813f64,
877        105.94580703128374f64,
878        1.1222467090323538f64,
879    ],
880};
881impl RotationalElements for Jupiter {
882    fn rotational_elements(&self, t: f64) -> Elements {
883        (
884            RIGHT_ASCENSION_JUPITER.angle(t),
885            DECLINATION_JUPITER.angle(t),
886            ROTATION_JUPITER.angle(t),
887        )
888    }
889    fn rotational_element_rates(&self, t: f64) -> Elements {
890        (
891            RIGHT_ASCENSION_JUPITER.angle_dot(t),
892            DECLINATION_JUPITER.angle_dot(t),
893            ROTATION_JUPITER.angle_dot(t),
894        )
895    }
896}
897#[doc = "Saturn (NAIF ID: 699)."]
898#[derive(Debug, Copy, Clone, Eq, PartialEq)]
899#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
900pub struct Saturn;
901impl Origin for Saturn {
902    fn id(&self) -> NaifId {
903        NaifId(699i32)
904    }
905    fn name(&self) -> &'static str {
906        "Saturn"
907    }
908}
909impl Display for Saturn {
910    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
911        write!(f, "{}", self.name())
912    }
913}
914impl From<Saturn> for DynOrigin {
915    fn from(_: Saturn) -> Self {
916        DynOrigin::Saturn
917    }
918}
919impl PointMass for Saturn {
920    fn gravitational_parameter(&self) -> GravitationalParameter {
921        GravitationalParameter::km3_per_s2(37931206.23436167f64)
922    }
923}
924impl MeanRadius for Saturn {
925    fn mean_radius(&self) -> Distance {
926        Distance::kilometers(58232f64)
927    }
928}
929impl TriaxialEllipsoid for Saturn {
930    fn radii(&self) -> Radii {
931        (
932            Distance::kilometers(60268f64),
933            Distance::kilometers(60268f64),
934            Distance::kilometers(54364f64),
935        )
936    }
937}
938impl Spheroid for Saturn {}
939const RIGHT_ASCENSION_SATURN: RotationalElement<0usize> = RotationalElement {
940    typ: RotationalElementType::RightAscension,
941    c0: 0.7084116900919784f64,
942    c1: -0.0006283185307179586f64,
943    c2: 0f64,
944    c: [],
945    theta0: [],
946    theta1: [],
947};
948const DECLINATION_SATURN: RotationalElement<0usize> = RotationalElement {
949    typ: RotationalElementType::Declination,
950    c0: 1.457995697238503f64,
951    c1: -0.00006981317007977319f64,
952    c2: 0f64,
953    c: [],
954    theta0: [],
955    theta1: [],
956};
957const ROTATION_SATURN: RotationalElement<0usize> = RotationalElement {
958    typ: RotationalElementType::Rotation,
959    c0: 0.6789330790257941f64,
960    c1: 14.151023151973554f64,
961    c2: 0f64,
962    c: [],
963    theta0: [],
964    theta1: [],
965};
966impl RotationalElements for Saturn {
967    fn rotational_elements(&self, t: f64) -> Elements {
968        (
969            RIGHT_ASCENSION_SATURN.angle(t),
970            DECLINATION_SATURN.angle(t),
971            ROTATION_SATURN.angle(t),
972        )
973    }
974    fn rotational_element_rates(&self, t: f64) -> Elements {
975        (
976            RIGHT_ASCENSION_SATURN.angle_dot(t),
977            DECLINATION_SATURN.angle_dot(t),
978            ROTATION_SATURN.angle_dot(t),
979        )
980    }
981}
982#[doc = "Uranus (NAIF ID: 799)."]
983#[derive(Debug, Copy, Clone, Eq, PartialEq)]
984#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
985pub struct Uranus;
986impl Origin for Uranus {
987    fn id(&self) -> NaifId {
988        NaifId(799i32)
989    }
990    fn name(&self) -> &'static str {
991        "Uranus"
992    }
993}
994impl Display for Uranus {
995    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
996        write!(f, "{}", self.name())
997    }
998}
999impl From<Uranus> for DynOrigin {
1000    fn from(_: Uranus) -> Self {
1001        DynOrigin::Uranus
1002    }
1003}
1004impl PointMass for Uranus {
1005    fn gravitational_parameter(&self) -> GravitationalParameter {
1006        GravitationalParameter::km3_per_s2(5793951.256527211f64)
1007    }
1008}
1009impl MeanRadius for Uranus {
1010    fn mean_radius(&self) -> Distance {
1011        Distance::kilometers(25362f64)
1012    }
1013}
1014impl TriaxialEllipsoid for Uranus {
1015    fn radii(&self) -> Radii {
1016        (
1017            Distance::kilometers(25559f64),
1018            Distance::kilometers(25559f64),
1019            Distance::kilometers(24973f64),
1020        )
1021    }
1022}
1023impl Spheroid for Uranus {}
1024const RIGHT_ASCENSION_URANUS: RotationalElement<0usize> = RotationalElement {
1025    typ: RotationalElementType::RightAscension,
1026    c0: 4.4909241515991285f64,
1027    c1: 0f64,
1028    c2: 0f64,
1029    c: [],
1030    theta0: [],
1031    theta1: [],
1032};
1033const DECLINATION_URANUS: RotationalElement<0usize> = RotationalElement {
1034    typ: RotationalElementType::Declination,
1035    c0: -0.2648537139901395f64,
1036    c1: 0f64,
1037    c2: 0f64,
1038    c: [],
1039    theta0: [],
1040    theta1: [],
1041};
1042const ROTATION_URANUS: RotationalElement<0usize> = RotationalElement {
1043    typ: RotationalElementType::Rotation,
1044    c0: 3.557155548489643f64,
1045    c1: -8.746893698960328f64,
1046    c2: 0f64,
1047    c: [],
1048    theta0: [],
1049    theta1: [],
1050};
1051impl RotationalElements for Uranus {
1052    fn rotational_elements(&self, t: f64) -> Elements {
1053        (
1054            RIGHT_ASCENSION_URANUS.angle(t),
1055            DECLINATION_URANUS.angle(t),
1056            ROTATION_URANUS.angle(t),
1057        )
1058    }
1059    fn rotational_element_rates(&self, t: f64) -> Elements {
1060        (
1061            RIGHT_ASCENSION_URANUS.angle_dot(t),
1062            DECLINATION_URANUS.angle_dot(t),
1063            ROTATION_URANUS.angle_dot(t),
1064        )
1065    }
1066}
1067#[doc = "Neptune (NAIF ID: 899)."]
1068#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1069#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1070pub struct Neptune;
1071impl Origin for Neptune {
1072    fn id(&self) -> NaifId {
1073        NaifId(899i32)
1074    }
1075    fn name(&self) -> &'static str {
1076        "Neptune"
1077    }
1078}
1079impl Display for Neptune {
1080    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1081        write!(f, "{}", self.name())
1082    }
1083}
1084impl From<Neptune> for DynOrigin {
1085    fn from(_: Neptune) -> Self {
1086        DynOrigin::Neptune
1087    }
1088}
1089impl PointMass for Neptune {
1090    fn gravitational_parameter(&self) -> GravitationalParameter {
1091        GravitationalParameter::km3_per_s2(6835103.145462294f64)
1092    }
1093}
1094impl MeanRadius for Neptune {
1095    fn mean_radius(&self) -> Distance {
1096        Distance::kilometers(24622f64)
1097    }
1098}
1099impl TriaxialEllipsoid for Neptune {
1100    fn radii(&self) -> Radii {
1101        (
1102            Distance::kilometers(24764f64),
1103            Distance::kilometers(24764f64),
1104            Distance::kilometers(24341f64),
1105        )
1106    }
1107}
1108impl Spheroid for Neptune {}
1109const RIGHT_ASCENSION_NEPTUNE: RotationalElement<8usize> = RotationalElement {
1110    typ: RotationalElementType::RightAscension,
1111    c0: 5.224817648770225f64,
1112    c1: 0f64,
1113    c2: 0f64,
1114    c: [
1115        0.012217304763960306f64,
1116        0f64,
1117        0f64,
1118        0f64,
1119        0f64,
1120        0f64,
1121        0f64,
1122        0f64,
1123    ],
1124    theta0: [
1125        6.245660728261709f64,
1126        5.653470513060032f64,
1127        3.848625533572696f64,
1128        6.183177941040311f64,
1129        1.3144074596769295f64,
1130        0.6171484235051949f64,
1131        2.4890140462691135f64,
1132        3.104068074671915f64,
1133    ],
1134    theta1: [
1135        0.9130864514733535f64,
1136        1092.6913034790819f64,
1137        961.0515899766616f64,
1138        812.7038395448996f64,
1139        455.6949957202075f64,
1140        250.02539666519567f64,
1141        49.29857005183183f64,
1142        0.9130864514733535f64,
1143    ],
1144};
1145const DECLINATION_NEPTUNE: RotationalElement<8usize> = RotationalElement {
1146    typ: RotationalElementType::Declination,
1147    c0: 0.7585200929167356f64,
1148    c1: 0f64,
1149    c2: 0f64,
1150    c: [
1151        -0.00890117918517108f64,
1152        0f64,
1153        0f64,
1154        0f64,
1155        0f64,
1156        0f64,
1157        0f64,
1158        0f64,
1159    ],
1160    theta0: [
1161        6.245660728261709f64,
1162        5.653470513060032f64,
1163        3.848625533572696f64,
1164        6.183177941040311f64,
1165        1.3144074596769295f64,
1166        0.6171484235051949f64,
1167        2.4890140462691135f64,
1168        3.104068074671915f64,
1169    ],
1170    theta1: [
1171        0.9130864514733535f64,
1172        1092.6913034790819f64,
1173        961.0515899766616f64,
1174        812.7038395448996f64,
1175        455.6949957202075f64,
1176        250.02539666519567f64,
1177        49.29857005183183f64,
1178        0.9130864514733535f64,
1179    ],
1180};
1181const ROTATION_NEPTUNE: RotationalElement<8usize> = RotationalElement {
1182    typ: RotationalElementType::Rotation,
1183    c0: 4.362939157550385f64,
1184    c1: 9.444670799468602f64,
1185    c2: 0f64,
1186    c: [
1187        -0.008377580409572781f64,
1188        0f64,
1189        0f64,
1190        0f64,
1191        0f64,
1192        0f64,
1193        0f64,
1194        0f64,
1195    ],
1196    theta0: [
1197        6.245660728261709f64,
1198        5.653470513060032f64,
1199        3.848625533572696f64,
1200        6.183177941040311f64,
1201        1.3144074596769295f64,
1202        0.6171484235051949f64,
1203        2.4890140462691135f64,
1204        3.104068074671915f64,
1205    ],
1206    theta1: [
1207        0.9130864514733535f64,
1208        1092.6913034790819f64,
1209        961.0515899766616f64,
1210        812.7038395448996f64,
1211        455.6949957202075f64,
1212        250.02539666519567f64,
1213        49.29857005183183f64,
1214        0.9130864514733535f64,
1215    ],
1216};
1217impl RotationalElements for Neptune {
1218    fn rotational_elements(&self, t: f64) -> Elements {
1219        (
1220            RIGHT_ASCENSION_NEPTUNE.angle(t),
1221            DECLINATION_NEPTUNE.angle(t),
1222            ROTATION_NEPTUNE.angle(t),
1223        )
1224    }
1225    fn rotational_element_rates(&self, t: f64) -> Elements {
1226        (
1227            RIGHT_ASCENSION_NEPTUNE.angle_dot(t),
1228            DECLINATION_NEPTUNE.angle_dot(t),
1229            ROTATION_NEPTUNE.angle_dot(t),
1230        )
1231    }
1232}
1233#[doc = "Pluto (NAIF ID: 999)."]
1234#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1235#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1236pub struct Pluto;
1237impl Origin for Pluto {
1238    fn id(&self) -> NaifId {
1239        NaifId(999i32)
1240    }
1241    fn name(&self) -> &'static str {
1242        "Pluto"
1243    }
1244}
1245impl Display for Pluto {
1246    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1247        write!(f, "{}", self.name())
1248    }
1249}
1250impl From<Pluto> for DynOrigin {
1251    fn from(_: Pluto) -> Self {
1252        DynOrigin::Pluto
1253    }
1254}
1255impl PointMass for Pluto {
1256    fn gravitational_parameter(&self) -> GravitationalParameter {
1257        GravitationalParameter::km3_per_s2(869.6138177608748f64)
1258    }
1259}
1260impl MeanRadius for Pluto {
1261    fn mean_radius(&self) -> Distance {
1262        Distance::kilometers(1188.3f64)
1263    }
1264}
1265impl TriaxialEllipsoid for Pluto {
1266    fn radii(&self) -> Radii {
1267        (
1268            Distance::kilometers(1188.3f64),
1269            Distance::kilometers(1188.3f64),
1270            Distance::kilometers(1188.3f64),
1271        )
1272    }
1273}
1274impl Spheroid for Pluto {}
1275const RIGHT_ASCENSION_PLUTO: RotationalElement<0usize> = RotationalElement {
1276    typ: RotationalElementType::RightAscension,
1277    c0: 2.3211657321048187f64,
1278    c1: 0f64,
1279    c2: 0f64,
1280    c: [],
1281    theta0: [],
1282    theta1: [],
1283};
1284const DECLINATION_PLUTO: RotationalElement<0usize> = RotationalElement {
1285    typ: RotationalElementType::Declination,
1286    c0: -0.10756464180041053f64,
1287    c1: 0f64,
1288    c2: 0f64,
1289    c: [],
1290    theta0: [],
1291    theta1: [],
1292};
1293const ROTATION_PLUTO: RotationalElement<0usize> = RotationalElement {
1294    typ: RotationalElementType::Rotation,
1295    c0: 5.283024379324235f64,
1296    c1: 0.9837115923543857f64,
1297    c2: 0f64,
1298    c: [],
1299    theta0: [],
1300    theta1: [],
1301};
1302impl RotationalElements for Pluto {
1303    fn rotational_elements(&self, t: f64) -> Elements {
1304        (
1305            RIGHT_ASCENSION_PLUTO.angle(t),
1306            DECLINATION_PLUTO.angle(t),
1307            ROTATION_PLUTO.angle(t),
1308        )
1309    }
1310    fn rotational_element_rates(&self, t: f64) -> Elements {
1311        (
1312            RIGHT_ASCENSION_PLUTO.angle_dot(t),
1313            DECLINATION_PLUTO.angle_dot(t),
1314            ROTATION_PLUTO.angle_dot(t),
1315        )
1316    }
1317}
1318#[doc = "Solar System Barycenter (NAIF ID: 0)."]
1319#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1320#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1321pub struct SolarSystemBarycenter;
1322impl Origin for SolarSystemBarycenter {
1323    fn id(&self) -> NaifId {
1324        NaifId(0i32)
1325    }
1326    fn name(&self) -> &'static str {
1327        "Solar System Barycenter"
1328    }
1329}
1330impl Display for SolarSystemBarycenter {
1331    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1332        write!(f, "{}", self.name())
1333    }
1334}
1335impl From<SolarSystemBarycenter> for DynOrigin {
1336    fn from(_: SolarSystemBarycenter) -> Self {
1337        DynOrigin::SolarSystemBarycenter
1338    }
1339}
1340impl PointMass for SolarSystemBarycenter {
1341    fn gravitational_parameter(&self) -> GravitationalParameter {
1342        GravitationalParameter::km3_per_s2(132712440041.27942f64)
1343    }
1344}
1345#[doc = "Mercury Barycenter (NAIF ID: 1)."]
1346#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1347#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1348pub struct MercuryBarycenter;
1349impl Origin for MercuryBarycenter {
1350    fn id(&self) -> NaifId {
1351        NaifId(1i32)
1352    }
1353    fn name(&self) -> &'static str {
1354        "Mercury Barycenter"
1355    }
1356}
1357impl Display for MercuryBarycenter {
1358    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1359        write!(f, "{}", self.name())
1360    }
1361}
1362impl From<MercuryBarycenter> for DynOrigin {
1363    fn from(_: MercuryBarycenter) -> Self {
1364        DynOrigin::MercuryBarycenter
1365    }
1366}
1367impl PointMass for MercuryBarycenter {
1368    fn gravitational_parameter(&self) -> GravitationalParameter {
1369        GravitationalParameter::km3_per_s2(22031.868551400003f64)
1370    }
1371}
1372#[doc = "Venus Barycenter (NAIF ID: 2)."]
1373#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1374#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1375pub struct VenusBarycenter;
1376impl Origin for VenusBarycenter {
1377    fn id(&self) -> NaifId {
1378        NaifId(2i32)
1379    }
1380    fn name(&self) -> &'static str {
1381        "Venus Barycenter"
1382    }
1383}
1384impl Display for VenusBarycenter {
1385    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1386        write!(f, "{}", self.name())
1387    }
1388}
1389impl From<VenusBarycenter> for DynOrigin {
1390    fn from(_: VenusBarycenter) -> Self {
1391        DynOrigin::VenusBarycenter
1392    }
1393}
1394impl PointMass for VenusBarycenter {
1395    fn gravitational_parameter(&self) -> GravitationalParameter {
1396        GravitationalParameter::km3_per_s2(324858.592f64)
1397    }
1398}
1399#[doc = "Earth Barycenter (NAIF ID: 3)."]
1400#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1401#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1402pub struct EarthBarycenter;
1403impl Origin for EarthBarycenter {
1404    fn id(&self) -> NaifId {
1405        NaifId(3i32)
1406    }
1407    fn name(&self) -> &'static str {
1408        "Earth Barycenter"
1409    }
1410}
1411impl Display for EarthBarycenter {
1412    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1413        write!(f, "{}", self.name())
1414    }
1415}
1416impl From<EarthBarycenter> for DynOrigin {
1417    fn from(_: EarthBarycenter) -> Self {
1418        DynOrigin::EarthBarycenter
1419    }
1420}
1421impl PointMass for EarthBarycenter {
1422    fn gravitational_parameter(&self) -> GravitationalParameter {
1423        GravitationalParameter::km3_per_s2(403503.2356254802f64)
1424    }
1425}
1426#[doc = "Mars Barycenter (NAIF ID: 4)."]
1427#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1428#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1429pub struct MarsBarycenter;
1430impl Origin for MarsBarycenter {
1431    fn id(&self) -> NaifId {
1432        NaifId(4i32)
1433    }
1434    fn name(&self) -> &'static str {
1435        "Mars Barycenter"
1436    }
1437}
1438impl Display for MarsBarycenter {
1439    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1440        write!(f, "{}", self.name())
1441    }
1442}
1443impl From<MarsBarycenter> for DynOrigin {
1444    fn from(_: MarsBarycenter) -> Self {
1445        DynOrigin::MarsBarycenter
1446    }
1447}
1448impl PointMass for MarsBarycenter {
1449    fn gravitational_parameter(&self) -> GravitationalParameter {
1450        GravitationalParameter::km3_per_s2(42828.3758157561f64)
1451    }
1452}
1453#[doc = "Jupiter Barycenter (NAIF ID: 5)."]
1454#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1455#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1456pub struct JupiterBarycenter;
1457impl Origin for JupiterBarycenter {
1458    fn id(&self) -> NaifId {
1459        NaifId(5i32)
1460    }
1461    fn name(&self) -> &'static str {
1462        "Jupiter Barycenter"
1463    }
1464}
1465impl Display for JupiterBarycenter {
1466    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1467        write!(f, "{}", self.name())
1468    }
1469}
1470impl From<JupiterBarycenter> for DynOrigin {
1471    fn from(_: JupiterBarycenter) -> Self {
1472        DynOrigin::JupiterBarycenter
1473    }
1474}
1475impl PointMass for JupiterBarycenter {
1476    fn gravitational_parameter(&self) -> GravitationalParameter {
1477        GravitationalParameter::km3_per_s2(126712764.09999998f64)
1478    }
1479}
1480#[doc = "Saturn Barycenter (NAIF ID: 6)."]
1481#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1482#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1483pub struct SaturnBarycenter;
1484impl Origin for SaturnBarycenter {
1485    fn id(&self) -> NaifId {
1486        NaifId(6i32)
1487    }
1488    fn name(&self) -> &'static str {
1489        "Saturn Barycenter"
1490    }
1491}
1492impl Display for SaturnBarycenter {
1493    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1494        write!(f, "{}", self.name())
1495    }
1496}
1497impl From<SaturnBarycenter> for DynOrigin {
1498    fn from(_: SaturnBarycenter) -> Self {
1499        DynOrigin::SaturnBarycenter
1500    }
1501}
1502impl PointMass for SaturnBarycenter {
1503    fn gravitational_parameter(&self) -> GravitationalParameter {
1504        GravitationalParameter::km3_per_s2(37940584.8418f64)
1505    }
1506}
1507#[doc = "Uranus Barycenter (NAIF ID: 7)."]
1508#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1509#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1510pub struct UranusBarycenter;
1511impl Origin for UranusBarycenter {
1512    fn id(&self) -> NaifId {
1513        NaifId(7i32)
1514    }
1515    fn name(&self) -> &'static str {
1516        "Uranus Barycenter"
1517    }
1518}
1519impl Display for UranusBarycenter {
1520    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1521        write!(f, "{}", self.name())
1522    }
1523}
1524impl From<UranusBarycenter> for DynOrigin {
1525    fn from(_: UranusBarycenter) -> Self {
1526        DynOrigin::UranusBarycenter
1527    }
1528}
1529impl PointMass for UranusBarycenter {
1530    fn gravitational_parameter(&self) -> GravitationalParameter {
1531        GravitationalParameter::km3_per_s2(5794556.3999999985f64)
1532    }
1533}
1534#[doc = "Neptune Barycenter (NAIF ID: 8)."]
1535#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1536#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1537pub struct NeptuneBarycenter;
1538impl Origin for NeptuneBarycenter {
1539    fn id(&self) -> NaifId {
1540        NaifId(8i32)
1541    }
1542    fn name(&self) -> &'static str {
1543        "Neptune Barycenter"
1544    }
1545}
1546impl Display for NeptuneBarycenter {
1547    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1548        write!(f, "{}", self.name())
1549    }
1550}
1551impl From<NeptuneBarycenter> for DynOrigin {
1552    fn from(_: NeptuneBarycenter) -> Self {
1553        DynOrigin::NeptuneBarycenter
1554    }
1555}
1556impl PointMass for NeptuneBarycenter {
1557    fn gravitational_parameter(&self) -> GravitationalParameter {
1558        GravitationalParameter::km3_per_s2(6836527.100580399f64)
1559    }
1560}
1561#[doc = "Pluto Barycenter (NAIF ID: 9)."]
1562#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1563#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1564pub struct PlutoBarycenter;
1565impl Origin for PlutoBarycenter {
1566    fn id(&self) -> NaifId {
1567        NaifId(9i32)
1568    }
1569    fn name(&self) -> &'static str {
1570        "Pluto Barycenter"
1571    }
1572}
1573impl Display for PlutoBarycenter {
1574    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1575        write!(f, "{}", self.name())
1576    }
1577}
1578impl From<PlutoBarycenter> for DynOrigin {
1579    fn from(_: PlutoBarycenter) -> Self {
1580        DynOrigin::PlutoBarycenter
1581    }
1582}
1583impl PointMass for PlutoBarycenter {
1584    fn gravitational_parameter(&self) -> GravitationalParameter {
1585        GravitationalParameter::km3_per_s2(975.5f64)
1586    }
1587}
1588#[doc = "Moon (NAIF ID: 301)."]
1589#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1590#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1591pub struct Moon;
1592impl Origin for Moon {
1593    fn id(&self) -> NaifId {
1594        NaifId(301i32)
1595    }
1596    fn name(&self) -> &'static str {
1597        "Moon"
1598    }
1599}
1600impl Display for Moon {
1601    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1602        write!(f, "{}", self.name())
1603    }
1604}
1605impl From<Moon> for DynOrigin {
1606    fn from(_: Moon) -> Self {
1607        DynOrigin::Moon
1608    }
1609}
1610impl PointMass for Moon {
1611    fn gravitational_parameter(&self) -> GravitationalParameter {
1612        GravitationalParameter::km3_per_s2(4902.80011845755f64)
1613    }
1614}
1615impl MeanRadius for Moon {
1616    fn mean_radius(&self) -> Distance {
1617        Distance::kilometers(1737.4f64)
1618    }
1619}
1620impl TriaxialEllipsoid for Moon {
1621    fn radii(&self) -> Radii {
1622        (
1623            Distance::kilometers(1737.4f64),
1624            Distance::kilometers(1737.4f64),
1625            Distance::kilometers(1737.4f64),
1626        )
1627    }
1628}
1629impl Spheroid for Moon {}
1630const RIGHT_ASCENSION_MOON: RotationalElement<13usize> = RotationalElement {
1631    typ: RotationalElementType::RightAscension,
1632    c0: 4.712299968592838f64,
1633    c1: 0.000054105206811824215f64,
1634    c2: 0f64,
1635    c: [
1636        -0.06769608569710406f64,
1637        -0.0021013764194011725f64,
1638        0.0012217304763960308f64,
1639        -0.0003001966313430247f64,
1640        0f64,
1641        0.0001256637061435917f64,
1642        0f64,
1643        0f64,
1644        0f64,
1645        -0.00009075712110370513f64,
1646        0f64,
1647        0f64,
1648        0.00007504915783575618f64,
1649    ],
1650    theta0: [
1651        2.1824469631563095f64,
1652        4.364876473020098f64,
1653        4.537995681525416f64,
1654        3.0826877913349846f64,
1655        6.240058221362807f64,
1656        5.438253962996612f64,
1657        2.355548718369107f64,
1658        4.827877416989155f64,
1659        0.5973563897875792f64,
1660        0.2641381289968218f64,
1661        2.0899096062155698f64,
1662        4.188109526378113f64,
1663        0.4372573375021394f64,
1664    ],
1665    theta1: [
1666        -33.781483888495835f64,
1667        -67.56296777699167f64,
1668        8294.909972626925f64,
1669        8504.459388212737f64,
1670        628.3019668015924f64,
1671        16833.15084472816f64,
1672        8328.69145651542f64,
1673        209.54947933396397f64,
1674        1114.6285779726247f64,
1675        -101.3444516654875f64,
1676        2.301053255936537f64,
1677        104.77473966698199f64,
1678        8261.12848873843f64,
1679    ],
1680};
1681const DECLINATION_MOON: RotationalElement<13usize> = RotationalElement {
1682    typ: RotationalElementType::Declination,
1683    c0: 1.161328121643011f64,
1684    c1: 0.00022689280275926284f64,
1685    c2: 0f64,
1686    c: [
1687        0.02691123173650057f64,
1688        0.0004171336912266448f64,
1689        -0.00048520153205442357f64,
1690        0.0001186823891356144f64,
1691        0f64,
1692        -0.00005061454830783555f64,
1693        0.000015707963267948964f64,
1694        0f64,
1695        0f64,
1696        0.000013962634015954637f64,
1697        0f64,
1698        0f64,
1699        -0.000015707963267948964f64,
1700    ],
1701    theta0: [
1702        2.1824469631563095f64,
1703        4.364876473020098f64,
1704        4.537995681525416f64,
1705        3.0826877913349846f64,
1706        6.240058221362807f64,
1707        5.438253962996612f64,
1708        2.355548718369107f64,
1709        4.827877416989155f64,
1710        0.5973563897875792f64,
1711        0.2641381289968218f64,
1712        2.0899096062155698f64,
1713        4.188109526378113f64,
1714        0.4372573375021394f64,
1715    ],
1716    theta1: [
1717        -33.781483888495835f64,
1718        -67.56296777699167f64,
1719        8294.909972626925f64,
1720        8504.459388212737f64,
1721        628.3019668015924f64,
1722        16833.15084472816f64,
1723        8328.69145651542f64,
1724        209.54947933396397f64,
1725        1114.6285779726247f64,
1726        -101.3444516654875f64,
1727        2.301053255936537f64,
1728        104.77473966698199f64,
1729        8261.12848873843f64,
1730    ],
1731};
1732const ROTATION_MOON: RotationalElement<13usize> = RotationalElement {
1733    typ: RotationalElementType::Rotation,
1734    c0: 0.668832858644503f64,
1735    c1: 0.22997083313948888f64,
1736    c2: -0.000000000000024434609527920614f64,
1737    c: [
1738        0.06215117466351808f64,
1739        0.00210835773640915f64,
1740        -0.0011205013797803594f64,
1741        0.0002757620218151041f64,
1742        0.0004398229715025711f64,
1743        -0.00011519173063162575f64,
1744        -0.00008203047484373349f64,
1745        -0.00008028514559173915f64,
1746        0.000048869219055841225f64,
1747        0.00009075712110370513f64,
1748        0.00006981317007977319f64,
1749        0.00003316125578789226f64,
1750        -0.0000767944870877505f64,
1751    ],
1752    theta0: [
1753        2.1824469631563095f64,
1754        4.364876473020098f64,
1755        4.537995681525416f64,
1756        3.0826877913349846f64,
1757        6.240058221362807f64,
1758        5.438253962996612f64,
1759        2.355548718369107f64,
1760        4.827877416989155f64,
1761        0.5973563897875792f64,
1762        0.2641381289968218f64,
1763        2.0899096062155698f64,
1764        4.188109526378113f64,
1765        0.4372573375021394f64,
1766    ],
1767    theta1: [
1768        -33.781483888495835f64,
1769        -67.56296777699167f64,
1770        8294.909972626925f64,
1771        8504.459388212737f64,
1772        628.3019668015924f64,
1773        16833.15084472816f64,
1774        8328.69145651542f64,
1775        209.54947933396397f64,
1776        1114.6285779726247f64,
1777        -101.3444516654875f64,
1778        2.301053255936537f64,
1779        104.77473966698199f64,
1780        8261.12848873843f64,
1781    ],
1782};
1783impl RotationalElements for Moon {
1784    fn rotational_elements(&self, t: f64) -> Elements {
1785        (
1786            RIGHT_ASCENSION_MOON.angle(t),
1787            DECLINATION_MOON.angle(t),
1788            ROTATION_MOON.angle(t),
1789        )
1790    }
1791    fn rotational_element_rates(&self, t: f64) -> Elements {
1792        (
1793            RIGHT_ASCENSION_MOON.angle_dot(t),
1794            DECLINATION_MOON.angle_dot(t),
1795            ROTATION_MOON.angle_dot(t),
1796        )
1797    }
1798}
1799#[doc = "Phobos (NAIF ID: 401)."]
1800#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1801#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1802pub struct Phobos;
1803impl Origin for Phobos {
1804    fn id(&self) -> NaifId {
1805        NaifId(401i32)
1806    }
1807    fn name(&self) -> &'static str {
1808        "Phobos"
1809    }
1810}
1811impl Display for Phobos {
1812    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1813        write!(f, "{}", self.name())
1814    }
1815}
1816impl From<Phobos> for DynOrigin {
1817    fn from(_: Phobos) -> Self {
1818        DynOrigin::Phobos
1819    }
1820}
1821impl PointMass for Phobos {
1822    fn gravitational_parameter(&self) -> GravitationalParameter {
1823        GravitationalParameter::km3_per_s2(0.0007087546066894452f64)
1824    }
1825}
1826impl MeanRadius for Phobos {
1827    fn mean_radius(&self) -> Distance {
1828        Distance::kilometers(11.08f64)
1829    }
1830}
1831impl TriaxialEllipsoid for Phobos {
1832    fn radii(&self) -> Radii {
1833        (
1834            Distance::kilometers(13f64),
1835            Distance::kilometers(11.4f64),
1836            Distance::kilometers(9.1f64),
1837        )
1838    }
1839}
1840const RIGHT_ASCENSION_PHOBOS: RotationalElement<4usize> = RotationalElement {
1841    typ: RotationalElementType::RightAscension,
1842    c0: 5.544399941316208f64,
1843    c1: -0.001892691938596266f64,
1844    c2: 0f64,
1845    c: [
1846        -0.031141630416121578f64,
1847        0.00038621064567151f64,
1848        -0.00017946365486924213f64,
1849        -0.00008300698656022431f64,
1850    ],
1851    theta0: [
1852        3.328804809897935f64,
1853        0.37470342287773584f64,
1854        5.809517398292802f64,
1855        6.892873571600945f64,
1856    ],
1857    theta1: [
1858        277.80594525842264f64,
1859        555.6129894920322f64,
1860        334.05422022489097f64,
1861        668.125936040531f64,
1862    ],
1863};
1864const DECLINATION_PHOBOS: RotationalElement<4usize> = RotationalElement {
1865    typ: RotationalElementType::Declination,
1866    c0: 0.9230395870244597f64,
1867    c1: -0.0010707081834185127f64,
1868    c2: 0f64,
1869    c: [
1870        -0.018765175709923063f64,
1871        0.00011669725164439606f64,
1872        -0.00011322648989388013f64,
1873        0.000049144282945955534f64,
1874    ],
1875    theta0: [
1876        3.328804809897935f64,
1877        0.37470342287773584f64,
1878        5.809517398292802f64,
1879        6.892873571600945f64,
1880    ],
1881    theta1: [
1882        277.80594525842264f64,
1883        555.6129894920322f64,
1884        334.05422022489097f64,
1885        668.125936040531f64,
1886    ],
1887};
1888const ROTATION_PHOBOS: RotationalElement<5usize> = RotationalElement {
1889    typ: RotationalElementType::Rotation,
1890    c0: 0.6141419961301966f64,
1891    c1: 19.702057793318815f64,
1892    c2: 0.00000000016643698911600935f64,
1893    c: [
1894        0.02485728795564792f64,
1895        -0.0003968499982587423f64,
1896        0.0000716825922415843f64,
1897        0.00011029852554073445f64,
1898        -0.019949113350295186f64,
1899    ],
1900    theta0: [
1901        3.328804809897935f64,
1902        0.37470342287773584f64,
1903        5.809517398292802f64,
1904        6.892873571600945f64,
1905        3.3097152567180146f64,
1906    ],
1907    theta1: [
1908        277.80594525842264f64,
1909        555.6129894920322f64,
1910        334.05422022489097f64,
1911        668.125936040531f64,
1912        719340.2120445863f64,
1913    ],
1914};
1915impl RotationalElements for Phobos {
1916    fn rotational_elements(&self, t: f64) -> Elements {
1917        (
1918            RIGHT_ASCENSION_PHOBOS.angle(t),
1919            DECLINATION_PHOBOS.angle(t),
1920            ROTATION_PHOBOS.angle(t),
1921        )
1922    }
1923    fn rotational_element_rates(&self, t: f64) -> Elements {
1924        (
1925            RIGHT_ASCENSION_PHOBOS.angle_dot(t),
1926            DECLINATION_PHOBOS.angle_dot(t),
1927            ROTATION_PHOBOS.angle_dot(t),
1928        )
1929    }
1930}
1931#[doc = "Deimos (NAIF ID: 402)."]
1932#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1933#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1934pub struct Deimos;
1935impl Origin for Deimos {
1936    fn id(&self) -> NaifId {
1937        NaifId(402i32)
1938    }
1939    fn name(&self) -> &'static str {
1940        "Deimos"
1941    }
1942}
1943impl Display for Deimos {
1944    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
1945        write!(f, "{}", self.name())
1946    }
1947}
1948impl From<Deimos> for DynOrigin {
1949    fn from(_: Deimos) -> Self {
1950        DynOrigin::Deimos
1951    }
1952}
1953impl PointMass for Deimos {
1954    fn gravitational_parameter(&self) -> GravitationalParameter {
1955        GravitationalParameter::km3_per_s2(0.00009615569648120313f64)
1956    }
1957}
1958impl MeanRadius for Deimos {
1959    fn mean_radius(&self) -> Distance {
1960        Distance::kilometers(6.2f64)
1961    }
1962}
1963impl TriaxialEllipsoid for Deimos {
1964    fn radii(&self) -> Radii {
1965        (
1966            Distance::kilometers(7.8f64),
1967            Distance::kilometers(6f64),
1968            Distance::kilometers(5.1f64),
1969        )
1970    }
1971}
1972const RIGHT_ASCENSION_DEIMOS: RotationalElement<10usize> = RotationalElement {
1973    typ: RotationalElementType::RightAscension,
1974    c0: 5.526708263174914f64,
1975    c1: -0.0018357397507085887f64,
1976    c2: 0f64,
1977    c: [
1978        0f64,
1979        0f64,
1980        0f64,
1981        0f64,
1982        0f64,
1983        0.05396867424229676f64,
1984        0.004010877798556321f64,
1985        0.0011202666329959662f64,
1986        0.00044218562371099577f64,
1987        0.00013590791618817245f64,
1988    ],
1989    theta0: [
1990        3.328804809897935f64,
1991        0.37470342287773584f64,
1992        5.809517398292802f64,
1993        6.892873571600945f64,
1994        3.3097152567180146f64,
1995        2.120032883264378f64,
1996        4.032588225058434f64,
1997        4.387288948439982f64,
1998        3.8045796985836846f64,
1999        3.424288764152381f64,
2000    ],
2001    theta1: [
2002        277.80594525842264f64,
2003        555.6129894920322f64,
2004        334.05422022489097f64,
2005        668.125936040531f64,
2006        719340.2120445863f64,
2007        11.523153020184504f64,
2008        11.536473384554899f64,
2009        23.047098122619843f64,
2010        668.1113614443373f64,
2011        334.05316148477937f64,
2012    ],
2013};
2014const DECLINATION_DEIMOS: RotationalElement<10usize> = RotationalElement {
2015    typ: RotationalElementType::Declination,
2016    c0: 0.9339242922383507f64,
2017    c1: -0.0010435487658623783f64,
2018    c2: 0f64,
2019    c: [
2020        0f64,
2021        0f64,
2022        0f64,
2023        0f64,
2024        0f64,
2025        0.032102888827614605f64,
2026        0.002500240004017941f64,
2027        0.00033360380402252296f64,
2028        -0.0002587607695714273f64,
2029        0.00003358537079612689f64,
2030    ],
2031    theta0: [
2032        3.328804809897935f64,
2033        0.37470342287773584f64,
2034        5.809517398292802f64,
2035        6.892873571600945f64,
2036        3.3097152567180146f64,
2037        2.120032883264378f64,
2038        4.032588225058434f64,
2039        4.387288948439982f64,
2040        3.8045796985836846f64,
2041        3.424288764152381f64,
2042    ],
2043    theta1: [
2044        277.80594525842264f64,
2045        555.6129894920322f64,
2046        334.05422022489097f64,
2047        668.125936040531f64,
2048        719340.2120445863f64,
2049        11.523153020184504f64,
2050        11.536473384554899f64,
2051        23.047098122619843f64,
2052        668.1113614443373f64,
2053        334.05316148477937f64,
2054    ],
2055};
2056const ROTATION_DEIMOS: RotationalElement<10usize> = RotationalElement {
2057    typ: RotationalElementType::Rotation,
2058    c0: 1.3857797243489947f64,
2059    c1: 4.977013864082068f64,
2060    c2: 0f64,
2061    c: [
2062        0f64,
2063        0f64,
2064        0f64,
2065        0f64,
2066        0f64,
2067        -0.047814137677880446f64,
2068        -0.006975837721323607f64,
2069        -0.0011455047921115052f64,
2070        -0.0005084039391304362f64,
2071        0.0002965593651818685f64,
2072    ],
2073    theta0: [
2074        3.328804809897935f64,
2075        0.37470342287773584f64,
2076        5.809517398292802f64,
2077        6.892873571600945f64,
2078        3.3097152567180146f64,
2079        2.120032883264378f64,
2080        4.032588225058434f64,
2081        4.387288948439982f64,
2082        3.8045796985836846f64,
2083        3.424288764152381f64,
2084    ],
2085    theta1: [
2086        277.80594525842264f64,
2087        555.6129894920322f64,
2088        334.05422022489097f64,
2089        668.125936040531f64,
2090        719340.2120445863f64,
2091        11.523153020184504f64,
2092        11.536473384554899f64,
2093        23.047098122619843f64,
2094        668.1113614443373f64,
2095        334.05316148477937f64,
2096    ],
2097};
2098impl RotationalElements for Deimos {
2099    fn rotational_elements(&self, t: f64) -> Elements {
2100        (
2101            RIGHT_ASCENSION_DEIMOS.angle(t),
2102            DECLINATION_DEIMOS.angle(t),
2103            ROTATION_DEIMOS.angle(t),
2104        )
2105    }
2106    fn rotational_element_rates(&self, t: f64) -> Elements {
2107        (
2108            RIGHT_ASCENSION_DEIMOS.angle_dot(t),
2109            DECLINATION_DEIMOS.angle_dot(t),
2110            ROTATION_DEIMOS.angle_dot(t),
2111        )
2112    }
2113}
2114#[doc = "Io (NAIF ID: 501)."]
2115#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2116#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2117pub struct Io;
2118impl Origin for Io {
2119    fn id(&self) -> NaifId {
2120        NaifId(501i32)
2121    }
2122    fn name(&self) -> &'static str {
2123        "Io"
2124    }
2125}
2126impl Display for Io {
2127    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2128        write!(f, "{}", self.name())
2129    }
2130}
2131impl From<Io> for DynOrigin {
2132    fn from(_: Io) -> Self {
2133        DynOrigin::Io
2134    }
2135}
2136impl PointMass for Io {
2137    fn gravitational_parameter(&self) -> GravitationalParameter {
2138        GravitationalParameter::km3_per_s2(5959.915466180539f64)
2139    }
2140}
2141impl MeanRadius for Io {
2142    fn mean_radius(&self) -> Distance {
2143        Distance::kilometers(1821.49f64)
2144    }
2145}
2146impl TriaxialEllipsoid for Io {
2147    fn radii(&self) -> Radii {
2148        (
2149            Distance::kilometers(1829.4f64),
2150            Distance::kilometers(1819.4f64),
2151            Distance::kilometers(1815.7f64),
2152        )
2153    }
2154}
2155const RIGHT_ASCENSION_IO: RotationalElement<4usize> = RotationalElement {
2156    typ: RotationalElementType::RightAscension,
2157    c0: 4.678355059970801f64,
2158    c1: -0.00015707963267948965f64,
2159    c2: 0f64,
2160    c: [
2161        0f64,
2162        0f64,
2163        0.0016406094968746698f64,
2164        0.0004188790204786391f64,
2165    ],
2166    theta0: [
2167        1.2796754075622423f64,
2168        0.42970006184100396f64,
2169        4.9549897464119015f64,
2170        6.2098814785958245f64,
2171    ],
2172    theta1: [
2173        1596.503281347521f64,
2174        787.7927551311844f64,
2175        84.66068602648895f64,
2176        20.792107379008446f64,
2177    ],
2178};
2179const DECLINATION_IO: RotationalElement<4usize> = RotationalElement {
2180    typ: RotationalElementType::Declination,
2181    c0: 1.1257373675363425f64,
2182    c1: 0.00005235987755982989f64,
2183    c2: 0f64,
2184    c: [
2185        0f64,
2186        0f64,
2187        0.0006981317007977319f64,
2188        0.00019198621771937625f64,
2189    ],
2190    theta0: [
2191        1.2796754075622423f64,
2192        0.42970006184100396f64,
2193        4.9549897464119015f64,
2194        6.2098814785958245f64,
2195    ],
2196    theta1: [
2197        1596.503281347521f64,
2198        787.7927551311844f64,
2199        84.66068602648895f64,
2200        20.792107379008446f64,
2201    ],
2202};
2203const ROTATION_IO: RotationalElement<4usize> = RotationalElement {
2204    typ: RotationalElementType::Rotation,
2205    c0: 3.4974652880714365f64,
2206    c1: 3.551552235248627f64,
2207    c2: 0f64,
2208    c: [
2209        0f64,
2210        0f64,
2211        -0.0014835298641951802f64,
2212        -0.0003839724354387525f64,
2213    ],
2214    theta0: [
2215        1.2796754075622423f64,
2216        0.42970006184100396f64,
2217        4.9549897464119015f64,
2218        6.2098814785958245f64,
2219    ],
2220    theta1: [
2221        1596.503281347521f64,
2222        787.7927551311844f64,
2223        84.66068602648895f64,
2224        20.792107379008446f64,
2225    ],
2226};
2227impl RotationalElements for Io {
2228    fn rotational_elements(&self, t: f64) -> Elements {
2229        (
2230            RIGHT_ASCENSION_IO.angle(t),
2231            DECLINATION_IO.angle(t),
2232            ROTATION_IO.angle(t),
2233        )
2234    }
2235    fn rotational_element_rates(&self, t: f64) -> Elements {
2236        (
2237            RIGHT_ASCENSION_IO.angle_dot(t),
2238            DECLINATION_IO.angle_dot(t),
2239            ROTATION_IO.angle_dot(t),
2240        )
2241    }
2242}
2243#[doc = "Europa (NAIF ID: 502)."]
2244#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2245#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2246pub struct Europa;
2247impl Origin for Europa {
2248    fn id(&self) -> NaifId {
2249        NaifId(502i32)
2250    }
2251    fn name(&self) -> &'static str {
2252        "Europa"
2253    }
2254}
2255impl Display for Europa {
2256    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2257        write!(f, "{}", self.name())
2258    }
2259}
2260impl From<Europa> for DynOrigin {
2261    fn from(_: Europa) -> Self {
2262        DynOrigin::Europa
2263    }
2264}
2265impl PointMass for Europa {
2266    fn gravitational_parameter(&self) -> GravitationalParameter {
2267        GravitationalParameter::km3_per_s2(3202.712099607295f64)
2268    }
2269}
2270impl MeanRadius for Europa {
2271    fn mean_radius(&self) -> Distance {
2272        Distance::kilometers(1560.8f64)
2273    }
2274}
2275impl TriaxialEllipsoid for Europa {
2276    fn radii(&self) -> Radii {
2277        (
2278            Distance::kilometers(1562.6f64),
2279            Distance::kilometers(1560.3f64),
2280            Distance::kilometers(1559.5f64),
2281        )
2282    }
2283}
2284const RIGHT_ASCENSION_EUROPA: RotationalElement<7usize> = RotationalElement {
2285    typ: RotationalElementType::RightAscension,
2286    c0: 4.678878658746398f64,
2287    c1: -0.00015707963267948965f64,
2288    c2: 0f64,
2289    c: [
2290        0f64,
2291        0f64,
2292        0f64,
2293        0.01895427567665842f64,
2294        0.0010471975511965976f64,
2295        0.0002617993877991494f64,
2296        0.00015707963267948965f64,
2297    ],
2298    theta0: [
2299        1.2796754075622423f64,
2300        0.42970006184100396f64,
2301        4.9549897464119015f64,
2302        6.2098814785958245f64,
2303        2.092649773141201f64,
2304        4.010766621082969f64,
2305        6.147922290150026f64,
2306    ],
2307    theta1: [
2308        1596.503281347521f64,
2309        787.7927551311844f64,
2310        84.66068602648895f64,
2311        20.792107379008446f64,
2312        4.574507969477138f64,
2313        1.1222467090323538f64,
2314        41.58421475801689f64,
2315    ],
2316};
2317const DECLINATION_EUROPA: RotationalElement<7usize> = RotationalElement {
2318    typ: RotationalElementType::Declination,
2319    c0: 1.125911900461542f64,
2320    c1: 0.00005235987755982989f64,
2321    c2: 0f64,
2322    c: [
2323        0f64,
2324        0f64,
2325        0f64,
2326        0.008168140899333463f64,
2327        0.0004537856055185257f64,
2328        0.00012217304763960306f64,
2329        0.00003490658503988659f64,
2330    ],
2331    theta0: [
2332        1.2796754075622423f64,
2333        0.42970006184100396f64,
2334        4.9549897464119015f64,
2335        6.2098814785958245f64,
2336        2.092649773141201f64,
2337        4.010766621082969f64,
2338        6.147922290150026f64,
2339    ],
2340    theta1: [
2341        1596.503281347521f64,
2342        787.7927551311844f64,
2343        84.66068602648895f64,
2344        20.792107379008446f64,
2345        4.574507969477138f64,
2346        1.1222467090323538f64,
2347        41.58421475801689f64,
2348    ],
2349};
2350const ROTATION_EUROPA: RotationalElement<7usize> = RotationalElement {
2351    typ: RotationalElementType::Rotation,
2352    c0: 0.6287025031533974f64,
2353    c1: 1.7693227033738699f64,
2354    c2: 0f64,
2355    c: [
2356        0f64,
2357        0f64,
2358        0f64,
2359        -0.01710422666954443f64,
2360        -0.0009424777960769379f64,
2361        -0.0002443460952792061f64,
2362        -0.00013962634015954637f64,
2363    ],
2364    theta0: [
2365        1.2796754075622423f64,
2366        0.42970006184100396f64,
2367        4.9549897464119015f64,
2368        6.2098814785958245f64,
2369        2.092649773141201f64,
2370        4.010766621082969f64,
2371        6.147922290150026f64,
2372    ],
2373    theta1: [
2374        1596.503281347521f64,
2375        787.7927551311844f64,
2376        84.66068602648895f64,
2377        20.792107379008446f64,
2378        4.574507969477138f64,
2379        1.1222467090323538f64,
2380        41.58421475801689f64,
2381    ],
2382};
2383impl RotationalElements for Europa {
2384    fn rotational_elements(&self, t: f64) -> Elements {
2385        (
2386            RIGHT_ASCENSION_EUROPA.angle(t),
2387            DECLINATION_EUROPA.angle(t),
2388            ROTATION_EUROPA.angle(t),
2389        )
2390    }
2391    fn rotational_element_rates(&self, t: f64) -> Elements {
2392        (
2393            RIGHT_ASCENSION_EUROPA.angle_dot(t),
2394            DECLINATION_EUROPA.angle_dot(t),
2395            ROTATION_EUROPA.angle_dot(t),
2396        )
2397    }
2398}
2399#[doc = "Ganymede (NAIF ID: 503)."]
2400#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2401#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2402pub struct Ganymede;
2403impl Origin for Ganymede {
2404    fn id(&self) -> NaifId {
2405        NaifId(503i32)
2406    }
2407    fn name(&self) -> &'static str {
2408        "Ganymede"
2409    }
2410}
2411impl Display for Ganymede {
2412    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2413        write!(f, "{}", self.name())
2414    }
2415}
2416impl From<Ganymede> for DynOrigin {
2417    fn from(_: Ganymede) -> Self {
2418        DynOrigin::Ganymede
2419    }
2420}
2421impl PointMass for Ganymede {
2422    fn gravitational_parameter(&self) -> GravitationalParameter {
2423        GravitationalParameter::km3_per_s2(9887.832752719638f64)
2424    }
2425}
2426impl MeanRadius for Ganymede {
2427    fn mean_radius(&self) -> Distance {
2428        Distance::kilometers(2631.2f64)
2429    }
2430}
2431impl TriaxialEllipsoid for Ganymede {
2432    fn radii(&self) -> Radii {
2433        (
2434            Distance::kilometers(2631.2f64),
2435            Distance::kilometers(2631.2f64),
2436            Distance::kilometers(2631.2f64),
2437        )
2438    }
2439}
2440impl Spheroid for Ganymede {}
2441const RIGHT_ASCENSION_GANYMEDE: RotationalElement<6usize> = RotationalElement {
2442    typ: RotationalElementType::RightAscension,
2443    c0: 4.680973053848792f64,
2444    c1: -0.00015707963267948965f64,
2445    c2: 0f64,
2446    c: [
2447        0f64,
2448        0f64,
2449        0f64,
2450        -0.0006457718232379018f64,
2451        0.0075223690760955605f64,
2452        0.0015882496193148398f64,
2453    ],
2454    theta0: [
2455        1.2796754075622423f64,
2456        0.42970006184100396f64,
2457        4.9549897464119015f64,
2458        6.2098814785958245f64,
2459        2.092649773141201f64,
2460        4.010766621082969f64,
2461    ],
2462    theta1: [
2463        1596.503281347521f64,
2464        787.7927551311844f64,
2465        84.66068602648895f64,
2466        20.792107379008446f64,
2467        4.574507969477138f64,
2468        1.1222467090323538f64,
2469    ],
2470};
2471const DECLINATION_GANYMEDE: RotationalElement<6usize> = RotationalElement {
2472    typ: RotationalElementType::Declination,
2473    c0: 1.1269590980127384f64,
2474    c1: 0.00005235987755982989f64,
2475    c2: 0f64,
2476    c: [
2477        0f64,
2478        0f64,
2479        0f64,
2480        -0.00027925268031909274f64,
2481        0.003246312408709453f64,
2482        0.0006806784082777885f64,
2483    ],
2484    theta0: [
2485        1.2796754075622423f64,
2486        0.42970006184100396f64,
2487        4.9549897464119015f64,
2488        6.2098814785958245f64,
2489        2.092649773141201f64,
2490        4.010766621082969f64,
2491    ],
2492    theta1: [
2493        1596.503281347521f64,
2494        787.7927551311844f64,
2495        84.66068602648895f64,
2496        20.792107379008446f64,
2497        4.574507969477138f64,
2498        1.1222467090323538f64,
2499    ],
2500};
2501const ROTATION_GANYMEDE: RotationalElement<6usize> = RotationalElement {
2502    typ: RotationalElementType::Rotation,
2503    c0: 0.7690618815987814f64,
2504    c1: 0.8782079330731682f64,
2505    c2: 0f64,
2506    c: [
2507        0f64,
2508        0f64,
2509        0f64,
2510        0.0005759586531581288f64,
2511        -0.006789330790257942f64,
2512        -0.0014311699866353504f64,
2513    ],
2514    theta0: [
2515        1.2796754075622423f64,
2516        0.42970006184100396f64,
2517        4.9549897464119015f64,
2518        6.2098814785958245f64,
2519        2.092649773141201f64,
2520        4.010766621082969f64,
2521    ],
2522    theta1: [
2523        1596.503281347521f64,
2524        787.7927551311844f64,
2525        84.66068602648895f64,
2526        20.792107379008446f64,
2527        4.574507969477138f64,
2528        1.1222467090323538f64,
2529    ],
2530};
2531impl RotationalElements for Ganymede {
2532    fn rotational_elements(&self, t: f64) -> Elements {
2533        (
2534            RIGHT_ASCENSION_GANYMEDE.angle(t),
2535            DECLINATION_GANYMEDE.angle(t),
2536            ROTATION_GANYMEDE.angle(t),
2537        )
2538    }
2539    fn rotational_element_rates(&self, t: f64) -> Elements {
2540        (
2541            RIGHT_ASCENSION_GANYMEDE.angle_dot(t),
2542            DECLINATION_GANYMEDE.angle_dot(t),
2543            ROTATION_GANYMEDE.angle_dot(t),
2544        )
2545    }
2546}
2547#[doc = "Callisto (NAIF ID: 504)."]
2548#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2549#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2550pub struct Callisto;
2551impl Origin for Callisto {
2552    fn id(&self) -> NaifId {
2553        NaifId(504i32)
2554    }
2555    fn name(&self) -> &'static str {
2556        "Callisto"
2557    }
2558}
2559impl Display for Callisto {
2560    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2561        write!(f, "{}", self.name())
2562    }
2563}
2564impl From<Callisto> for DynOrigin {
2565    fn from(_: Callisto) -> Self {
2566        DynOrigin::Callisto
2567    }
2568}
2569impl PointMass for Callisto {
2570    fn gravitational_parameter(&self) -> GravitationalParameter {
2571        GravitationalParameter::km3_per_s2(7179.283402579837f64)
2572    }
2573}
2574impl MeanRadius for Callisto {
2575    fn mean_radius(&self) -> Distance {
2576        Distance::kilometers(2410.3f64)
2577    }
2578}
2579impl TriaxialEllipsoid for Callisto {
2580    fn radii(&self) -> Radii {
2581        (
2582            Distance::kilometers(2410.3f64),
2583            Distance::kilometers(2410.3f64),
2584            Distance::kilometers(2410.3f64),
2585        )
2586    }
2587}
2588impl Spheroid for Callisto {}
2589const RIGHT_ASCENSION_CALLISTO: RotationalElement<8usize> = RotationalElement {
2590    typ: RotationalElementType::RightAscension,
2591    c0: 4.690048765959163f64,
2592    c1: -0.00015707963267948965f64,
2593    c2: 0f64,
2594    c: [
2595        0f64,
2596        0f64,
2597        0f64,
2598        0f64,
2599        -0.001186823891356144f64,
2600        0.010297442586766544f64,
2601        0f64,
2602        0.00017453292519943296f64,
2603    ],
2604    theta0: [
2605        1.2796754075622423f64,
2606        0.42970006184100396f64,
2607        4.9549897464119015f64,
2608        6.2098814785958245f64,
2609        2.092649773141201f64,
2610        4.010766621082969f64,
2611        6.147922290150026f64,
2612        1.9783307071355725f64,
2613    ],
2614    theta1: [
2615        1596.503281347521f64,
2616        787.7927551311844f64,
2617        84.66068602648895f64,
2618        20.792107379008446f64,
2619        4.574507969477138f64,
2620        1.1222467090323538f64,
2621        41.58421475801689f64,
2622        105.9414855960558f64,
2623    ],
2624};
2625const DECLINATION_CALLISTO: RotationalElement<8usize> = RotationalElement {
2626    typ: RotationalElementType::Declination,
2627    c0: 1.1314969540679238f64,
2628    c1: 0.00005235987755982989f64,
2629    c2: 0f64,
2630    c: [
2631        0f64,
2632        0f64,
2633        0f64,
2634        0f64,
2635        -0.0005061454830783556f64,
2636        0.004433136300065597f64,
2637        0f64,
2638        -0.00006981317007977319f64,
2639    ],
2640    theta0: [
2641        1.2796754075622423f64,
2642        0.42970006184100396f64,
2643        4.9549897464119015f64,
2644        6.2098814785958245f64,
2645        2.092649773141201f64,
2646        4.010766621082969f64,
2647        6.147922290150026f64,
2648        1.9783307071355725f64,
2649    ],
2650    theta1: [
2651        1596.503281347521f64,
2652        787.7927551311844f64,
2653        84.66068602648895f64,
2654        20.792107379008446f64,
2655        4.574507969477138f64,
2656        1.1222467090323538f64,
2657        41.58421475801689f64,
2658        105.9414855960558f64,
2659    ],
2660};
2661const ROTATION_CALLISTO: RotationalElement<8usize> = RotationalElement {
2662    typ: RotationalElementType::Rotation,
2663    c0: 4.529303941850484f64,
2664    c1: 0.37648622085811195f64,
2665    c2: 0f64,
2666    c: [
2667        0f64,
2668        0f64,
2669        0f64,
2670        0f64,
2671        0.001064650843716541f64,
2672        -0.009302604913129777f64,
2673        0f64,
2674        -0.00015707963267948965f64,
2675    ],
2676    theta0: [
2677        1.2796754075622423f64,
2678        0.42970006184100396f64,
2679        4.9549897464119015f64,
2680        6.2098814785958245f64,
2681        2.092649773141201f64,
2682        4.010766621082969f64,
2683        6.147922290150026f64,
2684        1.9783307071355725f64,
2685    ],
2686    theta1: [
2687        1596.503281347521f64,
2688        787.7927551311844f64,
2689        84.66068602648895f64,
2690        20.792107379008446f64,
2691        4.574507969477138f64,
2692        1.1222467090323538f64,
2693        41.58421475801689f64,
2694        105.9414855960558f64,
2695    ],
2696};
2697impl RotationalElements for Callisto {
2698    fn rotational_elements(&self, t: f64) -> Elements {
2699        (
2700            RIGHT_ASCENSION_CALLISTO.angle(t),
2701            DECLINATION_CALLISTO.angle(t),
2702            ROTATION_CALLISTO.angle(t),
2703        )
2704    }
2705    fn rotational_element_rates(&self, t: f64) -> Elements {
2706        (
2707            RIGHT_ASCENSION_CALLISTO.angle_dot(t),
2708            DECLINATION_CALLISTO.angle_dot(t),
2709            ROTATION_CALLISTO.angle_dot(t),
2710        )
2711    }
2712}
2713#[doc = "Amalthea (NAIF ID: 505)."]
2714#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2715#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2716pub struct Amalthea;
2717impl Origin for Amalthea {
2718    fn id(&self) -> NaifId {
2719        NaifId(505i32)
2720    }
2721    fn name(&self) -> &'static str {
2722        "Amalthea"
2723    }
2724}
2725impl Display for Amalthea {
2726    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2727        write!(f, "{}", self.name())
2728    }
2729}
2730impl From<Amalthea> for DynOrigin {
2731    fn from(_: Amalthea) -> Self {
2732        DynOrigin::Amalthea
2733    }
2734}
2735impl PointMass for Amalthea {
2736    fn gravitational_parameter(&self) -> GravitationalParameter {
2737        GravitationalParameter::km3_per_s2(0.1645634534798259f64)
2738    }
2739}
2740impl MeanRadius for Amalthea {
2741    fn mean_radius(&self) -> Distance {
2742        Distance::kilometers(83.5f64)
2743    }
2744}
2745impl TriaxialEllipsoid for Amalthea {
2746    fn radii(&self) -> Radii {
2747        (
2748            Distance::kilometers(125f64),
2749            Distance::kilometers(73f64),
2750            Distance::kilometers(64f64),
2751        )
2752    }
2753}
2754const RIGHT_ASCENSION_AMALTHEA: RotationalElement<10usize> = RotationalElement {
2755    typ: RotationalElementType::RightAscension,
2756    c0: 4.678355059970801f64,
2757    c1: -0.00015707963267948965f64,
2758    c2: 0f64,
2759    c: [
2760        -0.014660765716752368f64,
2761        0f64,
2762        0f64,
2763        0f64,
2764        0f64,
2765        0f64,
2766        0f64,
2767        0f64,
2768        0.00017453292519943296f64,
2769        0f64,
2770    ],
2771    theta0: [
2772        1.2796754075622423f64,
2773        0.42970006184100396f64,
2774        4.9549897464119015f64,
2775        6.2098814785958245f64,
2776        2.092649773141201f64,
2777        4.010766621082969f64,
2778        6.147922290150026f64,
2779        1.9783307071355725f64,
2780        2.5593508151244846f64,
2781        0.8594001236820079f64,
2782    ],
2783    theta1: [
2784        1596.503281347521f64,
2785        787.7927551311844f64,
2786        84.66068602648895f64,
2787        20.792107379008446f64,
2788        4.574507969477138f64,
2789        1.1222467090323538f64,
2790        41.58421475801689f64,
2791        105.9414855960558f64,
2792        3193.006562695042f64,
2793        1575.5855102623689f64,
2794    ],
2795};
2796const DECLINATION_AMALTHEA: RotationalElement<10usize> = RotationalElement {
2797    typ: RotationalElementType::Declination,
2798    c0: 1.125562834611143f64,
2799    c1: 0.00005235987755982989f64,
2800    c2: 0f64,
2801    c: [
2802        -0.006283185307179586f64,
2803        0f64,
2804        0f64,
2805        0f64,
2806        0f64,
2807        0f64,
2808        0f64,
2809        0f64,
2810        0f64,
2811        0f64,
2812    ],
2813    theta0: [
2814        1.2796754075622423f64,
2815        0.42970006184100396f64,
2816        4.9549897464119015f64,
2817        6.2098814785958245f64,
2818        2.092649773141201f64,
2819        4.010766621082969f64,
2820        6.147922290150026f64,
2821        1.9783307071355725f64,
2822        2.5593508151244846f64,
2823        0.8594001236820079f64,
2824    ],
2825    theta1: [
2826        1596.503281347521f64,
2827        787.7927551311844f64,
2828        84.66068602648895f64,
2829        20.792107379008446f64,
2830        4.574507969477138f64,
2831        1.1222467090323538f64,
2832        41.58421475801689f64,
2833        105.9414855960558f64,
2834        3193.006562695042f64,
2835        1575.5855102623689f64,
2836    ],
2837};
2838const ROTATION_AMALTHEA: RotationalElement<10usize> = RotationalElement {
2839    typ: RotationalElementType::Rotation,
2840    c0: 4.043404278095263f64,
2841    c1: 12.612298185680531f64,
2842    c2: 0f64,
2843    c: [
2844        0.013264502315156905f64,
2845        0f64,
2846        0f64,
2847        0f64,
2848        0f64,
2849        0f64,
2850        0f64,
2851        0f64,
2852        -0.00017453292519943296f64,
2853        0f64,
2854    ],
2855    theta0: [
2856        1.2796754075622423f64,
2857        0.42970006184100396f64,
2858        4.9549897464119015f64,
2859        6.2098814785958245f64,
2860        2.092649773141201f64,
2861        4.010766621082969f64,
2862        6.147922290150026f64,
2863        1.9783307071355725f64,
2864        2.5593508151244846f64,
2865        0.8594001236820079f64,
2866    ],
2867    theta1: [
2868        1596.503281347521f64,
2869        787.7927551311844f64,
2870        84.66068602648895f64,
2871        20.792107379008446f64,
2872        4.574507969477138f64,
2873        1.1222467090323538f64,
2874        41.58421475801689f64,
2875        105.9414855960558f64,
2876        3193.006562695042f64,
2877        1575.5855102623689f64,
2878    ],
2879};
2880impl RotationalElements for Amalthea {
2881    fn rotational_elements(&self, t: f64) -> Elements {
2882        (
2883            RIGHT_ASCENSION_AMALTHEA.angle(t),
2884            DECLINATION_AMALTHEA.angle(t),
2885            ROTATION_AMALTHEA.angle(t),
2886        )
2887    }
2888    fn rotational_element_rates(&self, t: f64) -> Elements {
2889        (
2890            RIGHT_ASCENSION_AMALTHEA.angle_dot(t),
2891            DECLINATION_AMALTHEA.angle_dot(t),
2892            ROTATION_AMALTHEA.angle_dot(t),
2893        )
2894    }
2895}
2896#[doc = "Himalia (NAIF ID: 506)."]
2897#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2898#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2899pub struct Himalia;
2900impl Origin for Himalia {
2901    fn id(&self) -> NaifId {
2902        NaifId(506i32)
2903    }
2904    fn name(&self) -> &'static str {
2905        "Himalia"
2906    }
2907}
2908impl Display for Himalia {
2909    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2910        write!(f, "{}", self.name())
2911    }
2912}
2913impl From<Himalia> for DynOrigin {
2914    fn from(_: Himalia) -> Self {
2915        DynOrigin::Himalia
2916    }
2917}
2918impl PointMass for Himalia {
2919    fn gravitational_parameter(&self) -> GravitationalParameter {
2920        GravitationalParameter::km3_per_s2(0.1515524299611265f64)
2921    }
2922}
2923impl MeanRadius for Himalia {
2924    fn mean_radius(&self) -> Distance {
2925        Distance::kilometers(85f64)
2926    }
2927}
2928impl TriaxialEllipsoid for Himalia {
2929    fn radii(&self) -> Radii {
2930        (
2931            Distance::kilometers(85f64),
2932            Distance::kilometers(85f64),
2933            Distance::kilometers(85f64),
2934        )
2935    }
2936}
2937impl Spheroid for Himalia {}
2938#[doc = "Elara (NAIF ID: 507)."]
2939#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2940#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2941pub struct Elara;
2942impl Origin for Elara {
2943    fn id(&self) -> NaifId {
2944        NaifId(507i32)
2945    }
2946    fn name(&self) -> &'static str {
2947        "Elara"
2948    }
2949}
2950impl Display for Elara {
2951    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2952        write!(f, "{}", self.name())
2953    }
2954}
2955impl From<Elara> for DynOrigin {
2956    fn from(_: Elara) -> Self {
2957        DynOrigin::Elara
2958    }
2959}
2960impl MeanRadius for Elara {
2961    fn mean_radius(&self) -> Distance {
2962        Distance::kilometers(40f64)
2963    }
2964}
2965impl TriaxialEllipsoid for Elara {
2966    fn radii(&self) -> Radii {
2967        (
2968            Distance::kilometers(40f64),
2969            Distance::kilometers(40f64),
2970            Distance::kilometers(40f64),
2971        )
2972    }
2973}
2974impl Spheroid for Elara {}
2975#[doc = "Pasiphae (NAIF ID: 508)."]
2976#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2977#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2978pub struct Pasiphae;
2979impl Origin for Pasiphae {
2980    fn id(&self) -> NaifId {
2981        NaifId(508i32)
2982    }
2983    fn name(&self) -> &'static str {
2984        "Pasiphae"
2985    }
2986}
2987impl Display for Pasiphae {
2988    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
2989        write!(f, "{}", self.name())
2990    }
2991}
2992impl From<Pasiphae> for DynOrigin {
2993    fn from(_: Pasiphae) -> Self {
2994        DynOrigin::Pasiphae
2995    }
2996}
2997impl MeanRadius for Pasiphae {
2998    fn mean_radius(&self) -> Distance {
2999        Distance::kilometers(18f64)
3000    }
3001}
3002impl TriaxialEllipsoid for Pasiphae {
3003    fn radii(&self) -> Radii {
3004        (
3005            Distance::kilometers(18f64),
3006            Distance::kilometers(18f64),
3007            Distance::kilometers(18f64),
3008        )
3009    }
3010}
3011impl Spheroid for Pasiphae {}
3012#[doc = "Sinope (NAIF ID: 509)."]
3013#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3014#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3015pub struct Sinope;
3016impl Origin for Sinope {
3017    fn id(&self) -> NaifId {
3018        NaifId(509i32)
3019    }
3020    fn name(&self) -> &'static str {
3021        "Sinope"
3022    }
3023}
3024impl Display for Sinope {
3025    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3026        write!(f, "{}", self.name())
3027    }
3028}
3029impl From<Sinope> for DynOrigin {
3030    fn from(_: Sinope) -> Self {
3031        DynOrigin::Sinope
3032    }
3033}
3034impl MeanRadius for Sinope {
3035    fn mean_radius(&self) -> Distance {
3036        Distance::kilometers(14f64)
3037    }
3038}
3039impl TriaxialEllipsoid for Sinope {
3040    fn radii(&self) -> Radii {
3041        (
3042            Distance::kilometers(14f64),
3043            Distance::kilometers(14f64),
3044            Distance::kilometers(14f64),
3045        )
3046    }
3047}
3048impl Spheroid for Sinope {}
3049#[doc = "Lysithea (NAIF ID: 510)."]
3050#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3051#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3052pub struct Lysithea;
3053impl Origin for Lysithea {
3054    fn id(&self) -> NaifId {
3055        NaifId(510i32)
3056    }
3057    fn name(&self) -> &'static str {
3058        "Lysithea"
3059    }
3060}
3061impl Display for Lysithea {
3062    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3063        write!(f, "{}", self.name())
3064    }
3065}
3066impl From<Lysithea> for DynOrigin {
3067    fn from(_: Lysithea) -> Self {
3068        DynOrigin::Lysithea
3069    }
3070}
3071impl MeanRadius for Lysithea {
3072    fn mean_radius(&self) -> Distance {
3073        Distance::kilometers(12f64)
3074    }
3075}
3076impl TriaxialEllipsoid for Lysithea {
3077    fn radii(&self) -> Radii {
3078        (
3079            Distance::kilometers(12f64),
3080            Distance::kilometers(12f64),
3081            Distance::kilometers(12f64),
3082        )
3083    }
3084}
3085impl Spheroid for Lysithea {}
3086#[doc = "Carme (NAIF ID: 511)."]
3087#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3088#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3089pub struct Carme;
3090impl Origin for Carme {
3091    fn id(&self) -> NaifId {
3092        NaifId(511i32)
3093    }
3094    fn name(&self) -> &'static str {
3095        "Carme"
3096    }
3097}
3098impl Display for Carme {
3099    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3100        write!(f, "{}", self.name())
3101    }
3102}
3103impl From<Carme> for DynOrigin {
3104    fn from(_: Carme) -> Self {
3105        DynOrigin::Carme
3106    }
3107}
3108impl MeanRadius for Carme {
3109    fn mean_radius(&self) -> Distance {
3110        Distance::kilometers(15f64)
3111    }
3112}
3113impl TriaxialEllipsoid for Carme {
3114    fn radii(&self) -> Radii {
3115        (
3116            Distance::kilometers(15f64),
3117            Distance::kilometers(15f64),
3118            Distance::kilometers(15f64),
3119        )
3120    }
3121}
3122impl Spheroid for Carme {}
3123#[doc = "Ananke (NAIF ID: 512)."]
3124#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3125#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3126pub struct Ananke;
3127impl Origin for Ananke {
3128    fn id(&self) -> NaifId {
3129        NaifId(512i32)
3130    }
3131    fn name(&self) -> &'static str {
3132        "Ananke"
3133    }
3134}
3135impl Display for Ananke {
3136    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3137        write!(f, "{}", self.name())
3138    }
3139}
3140impl From<Ananke> for DynOrigin {
3141    fn from(_: Ananke) -> Self {
3142        DynOrigin::Ananke
3143    }
3144}
3145impl MeanRadius for Ananke {
3146    fn mean_radius(&self) -> Distance {
3147        Distance::kilometers(10f64)
3148    }
3149}
3150impl TriaxialEllipsoid for Ananke {
3151    fn radii(&self) -> Radii {
3152        (
3153            Distance::kilometers(10f64),
3154            Distance::kilometers(10f64),
3155            Distance::kilometers(10f64),
3156        )
3157    }
3158}
3159impl Spheroid for Ananke {}
3160#[doc = "Leda (NAIF ID: 513)."]
3161#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3162#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3163pub struct Leda;
3164impl Origin for Leda {
3165    fn id(&self) -> NaifId {
3166        NaifId(513i32)
3167    }
3168    fn name(&self) -> &'static str {
3169        "Leda"
3170    }
3171}
3172impl Display for Leda {
3173    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3174        write!(f, "{}", self.name())
3175    }
3176}
3177impl From<Leda> for DynOrigin {
3178    fn from(_: Leda) -> Self {
3179        DynOrigin::Leda
3180    }
3181}
3182impl MeanRadius for Leda {
3183    fn mean_radius(&self) -> Distance {
3184        Distance::kilometers(5f64)
3185    }
3186}
3187impl TriaxialEllipsoid for Leda {
3188    fn radii(&self) -> Radii {
3189        (
3190            Distance::kilometers(5f64),
3191            Distance::kilometers(5f64),
3192            Distance::kilometers(5f64),
3193        )
3194    }
3195}
3196impl Spheroid for Leda {}
3197#[doc = "Thebe (NAIF ID: 514)."]
3198#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3199#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3200pub struct Thebe;
3201impl Origin for Thebe {
3202    fn id(&self) -> NaifId {
3203        NaifId(514i32)
3204    }
3205    fn name(&self) -> &'static str {
3206        "Thebe"
3207    }
3208}
3209impl Display for Thebe {
3210    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3211        write!(f, "{}", self.name())
3212    }
3213}
3214impl From<Thebe> for DynOrigin {
3215    fn from(_: Thebe) -> Self {
3216        DynOrigin::Thebe
3217    }
3218}
3219impl PointMass for Thebe {
3220    fn gravitational_parameter(&self) -> GravitationalParameter {
3221        GravitationalParameter::km3_per_s2(0.030148f64)
3222    }
3223}
3224impl MeanRadius for Thebe {
3225    fn mean_radius(&self) -> Distance {
3226        Distance::kilometers(49.3f64)
3227    }
3228}
3229impl TriaxialEllipsoid for Thebe {
3230    fn radii(&self) -> Radii {
3231        (
3232            Distance::kilometers(58f64),
3233            Distance::kilometers(49f64),
3234            Distance::kilometers(42f64),
3235        )
3236    }
3237}
3238const RIGHT_ASCENSION_THEBE: RotationalElement<10usize> = RotationalElement {
3239    typ: RotationalElementType::RightAscension,
3240    c0: 4.678355059970801f64,
3241    c1: -0.00015707963267948965f64,
3242    c2: 0f64,
3243    c: [
3244        0f64,
3245        -0.03682644721708035f64,
3246        0f64,
3247        0f64,
3248        0f64,
3249        0f64,
3250        0f64,
3251        0f64,
3252        0f64,
3253        0.0006981317007977319f64,
3254    ],
3255    theta0: [
3256        1.2796754075622423f64,
3257        0.42970006184100396f64,
3258        4.9549897464119015f64,
3259        6.2098814785958245f64,
3260        2.092649773141201f64,
3261        4.010766621082969f64,
3262        6.147922290150026f64,
3263        1.9783307071355725f64,
3264        2.5593508151244846f64,
3265        0.8594001236820079f64,
3266    ],
3267    theta1: [
3268        1596.503281347521f64,
3269        787.7927551311844f64,
3270        84.66068602648895f64,
3271        20.792107379008446f64,
3272        4.574507969477138f64,
3273        1.1222467090323538f64,
3274        41.58421475801689f64,
3275        105.9414855960558f64,
3276        3193.006562695042f64,
3277        1575.5855102623689f64,
3278    ],
3279};
3280const DECLINATION_THEBE: RotationalElement<10usize> = RotationalElement {
3281    typ: RotationalElementType::Declination,
3282    c0: 1.125562834611143f64,
3283    c1: 0.00005235987755982989f64,
3284    c2: 0f64,
3285    c: [
3286        0f64,
3287        -0.0158824961931484f64,
3288        0f64,
3289        0f64,
3290        0f64,
3291        0f64,
3292        0f64,
3293        0f64,
3294        0f64,
3295        0.00017453292519943296f64,
3296    ],
3297    theta0: [
3298        1.2796754075622423f64,
3299        0.42970006184100396f64,
3300        4.9549897464119015f64,
3301        6.2098814785958245f64,
3302        2.092649773141201f64,
3303        4.010766621082969f64,
3304        6.147922290150026f64,
3305        1.9783307071355725f64,
3306        2.5593508151244846f64,
3307        0.8594001236820079f64,
3308    ],
3309    theta1: [
3310        1596.503281347521f64,
3311        787.7927551311844f64,
3312        84.66068602648895f64,
3313        20.792107379008446f64,
3314        4.574507969477138f64,
3315        1.1222467090323538f64,
3316        41.58421475801689f64,
3317        105.9414855960558f64,
3318        3193.006562695042f64,
3319        1575.5855102623689f64,
3320    ],
3321};
3322const ROTATION_THEBE: RotationalElement<10usize> = RotationalElement {
3323    typ: RotationalElementType::Rotation,
3324    c0: 0.1494001839707146f64,
3325    c1: 9.31482937374367f64,
3326    c2: 0f64,
3327    c: [
3328        0f64,
3329        0.033335788713091695f64,
3330        0f64,
3331        0f64,
3332        0f64,
3333        0f64,
3334        0f64,
3335        0f64,
3336        0f64,
3337        -0.0006981317007977319f64,
3338    ],
3339    theta0: [
3340        1.2796754075622423f64,
3341        0.42970006184100396f64,
3342        4.9549897464119015f64,
3343        6.2098814785958245f64,
3344        2.092649773141201f64,
3345        4.010766621082969f64,
3346        6.147922290150026f64,
3347        1.9783307071355725f64,
3348        2.5593508151244846f64,
3349        0.8594001236820079f64,
3350    ],
3351    theta1: [
3352        1596.503281347521f64,
3353        787.7927551311844f64,
3354        84.66068602648895f64,
3355        20.792107379008446f64,
3356        4.574507969477138f64,
3357        1.1222467090323538f64,
3358        41.58421475801689f64,
3359        105.9414855960558f64,
3360        3193.006562695042f64,
3361        1575.5855102623689f64,
3362    ],
3363};
3364impl RotationalElements for Thebe {
3365    fn rotational_elements(&self, t: f64) -> Elements {
3366        (
3367            RIGHT_ASCENSION_THEBE.angle(t),
3368            DECLINATION_THEBE.angle(t),
3369            ROTATION_THEBE.angle(t),
3370        )
3371    }
3372    fn rotational_element_rates(&self, t: f64) -> Elements {
3373        (
3374            RIGHT_ASCENSION_THEBE.angle_dot(t),
3375            DECLINATION_THEBE.angle_dot(t),
3376            ROTATION_THEBE.angle_dot(t),
3377        )
3378    }
3379}
3380#[doc = "Adrastea (NAIF ID: 515)."]
3381#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3382#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3383pub struct Adrastea;
3384impl Origin for Adrastea {
3385    fn id(&self) -> NaifId {
3386        NaifId(515i32)
3387    }
3388    fn name(&self) -> &'static str {
3389        "Adrastea"
3390    }
3391}
3392impl Display for Adrastea {
3393    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3394        write!(f, "{}", self.name())
3395    }
3396}
3397impl From<Adrastea> for DynOrigin {
3398    fn from(_: Adrastea) -> Self {
3399        DynOrigin::Adrastea
3400    }
3401}
3402impl PointMass for Adrastea {
3403    fn gravitational_parameter(&self) -> GravitationalParameter {
3404        GravitationalParameter::km3_per_s2(0.000139f64)
3405    }
3406}
3407impl MeanRadius for Adrastea {
3408    fn mean_radius(&self) -> Distance {
3409        Distance::kilometers(8.2f64)
3410    }
3411}
3412impl TriaxialEllipsoid for Adrastea {
3413    fn radii(&self) -> Radii {
3414        (
3415            Distance::kilometers(10f64),
3416            Distance::kilometers(8f64),
3417            Distance::kilometers(7f64),
3418        )
3419    }
3420}
3421const RIGHT_ASCENSION_ADRASTEA: RotationalElement<0usize> = RotationalElement {
3422    typ: RotationalElementType::RightAscension,
3423    c0: 4.678355059970801f64,
3424    c1: -0.00015707963267948965f64,
3425    c2: 0f64,
3426    c: [],
3427    theta0: [],
3428    theta1: [],
3429};
3430const DECLINATION_ADRASTEA: RotationalElement<0usize> = RotationalElement {
3431    typ: RotationalElementType::Declination,
3432    c0: 1.125562834611143f64,
3433    c1: 0.00005235987755982989f64,
3434    c2: 0f64,
3435    c: [],
3436    theta0: [],
3437    theta1: [],
3438};
3439const ROTATION_ADRASTEA: RotationalElement<0usize> = RotationalElement {
3440    typ: RotationalElementType::Rotation,
3441    c0: 0.5810201079889122f64,
3442    c1: 21.066100687650238f64,
3443    c2: 0f64,
3444    c: [],
3445    theta0: [],
3446    theta1: [],
3447};
3448impl RotationalElements for Adrastea {
3449    fn rotational_elements(&self, t: f64) -> Elements {
3450        (
3451            RIGHT_ASCENSION_ADRASTEA.angle(t),
3452            DECLINATION_ADRASTEA.angle(t),
3453            ROTATION_ADRASTEA.angle(t),
3454        )
3455    }
3456    fn rotational_element_rates(&self, t: f64) -> Elements {
3457        (
3458            RIGHT_ASCENSION_ADRASTEA.angle_dot(t),
3459            DECLINATION_ADRASTEA.angle_dot(t),
3460            ROTATION_ADRASTEA.angle_dot(t),
3461        )
3462    }
3463}
3464#[doc = "Metis (NAIF ID: 516)."]
3465#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3466#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3467pub struct Metis;
3468impl Origin for Metis {
3469    fn id(&self) -> NaifId {
3470        NaifId(516i32)
3471    }
3472    fn name(&self) -> &'static str {
3473        "Metis"
3474    }
3475}
3476impl Display for Metis {
3477    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3478        write!(f, "{}", self.name())
3479    }
3480}
3481impl From<Metis> for DynOrigin {
3482    fn from(_: Metis) -> Self {
3483        DynOrigin::Metis
3484    }
3485}
3486impl PointMass for Metis {
3487    fn gravitational_parameter(&self) -> GravitationalParameter {
3488        GravitationalParameter::km3_per_s2(0.002501f64)
3489    }
3490}
3491impl MeanRadius for Metis {
3492    fn mean_radius(&self) -> Distance {
3493        Distance::kilometers(21.5f64)
3494    }
3495}
3496impl TriaxialEllipsoid for Metis {
3497    fn radii(&self) -> Radii {
3498        (
3499            Distance::kilometers(30f64),
3500            Distance::kilometers(20f64),
3501            Distance::kilometers(17f64),
3502        )
3503    }
3504}
3505const RIGHT_ASCENSION_METIS: RotationalElement<0usize> = RotationalElement {
3506    typ: RotationalElementType::RightAscension,
3507    c0: 4.678355059970801f64,
3508    c1: -0.00015707963267948965f64,
3509    c2: 0f64,
3510    c: [],
3511    theta0: [],
3512    theta1: [],
3513};
3514const DECLINATION_METIS: RotationalElement<0usize> = RotationalElement {
3515    typ: RotationalElementType::Declination,
3516    c0: 1.125562834611143f64,
3517    c1: 0.00005235987755982989f64,
3518    c2: 0f64,
3519    c: [],
3520    theta0: [],
3521    theta1: [],
3522};
3523const ROTATION_METIS: RotationalElement<0usize> = RotationalElement {
3524    typ: RotationalElementType::Rotation,
3525    c0: 6.040410008227175f64,
3526    c1: 21.3149160457997f64,
3527    c2: 0f64,
3528    c: [],
3529    theta0: [],
3530    theta1: [],
3531};
3532impl RotationalElements for Metis {
3533    fn rotational_elements(&self, t: f64) -> Elements {
3534        (
3535            RIGHT_ASCENSION_METIS.angle(t),
3536            DECLINATION_METIS.angle(t),
3537            ROTATION_METIS.angle(t),
3538        )
3539    }
3540    fn rotational_element_rates(&self, t: f64) -> Elements {
3541        (
3542            RIGHT_ASCENSION_METIS.angle_dot(t),
3543            DECLINATION_METIS.angle_dot(t),
3544            ROTATION_METIS.angle_dot(t),
3545        )
3546    }
3547}
3548#[doc = "Callirrhoe (NAIF ID: 517)."]
3549#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3550#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3551pub struct Callirrhoe;
3552impl Origin for Callirrhoe {
3553    fn id(&self) -> NaifId {
3554        NaifId(517i32)
3555    }
3556    fn name(&self) -> &'static str {
3557        "Callirrhoe"
3558    }
3559}
3560impl Display for Callirrhoe {
3561    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3562        write!(f, "{}", self.name())
3563    }
3564}
3565impl From<Callirrhoe> for DynOrigin {
3566    fn from(_: Callirrhoe) -> Self {
3567        DynOrigin::Callirrhoe
3568    }
3569}
3570#[doc = "Themisto (NAIF ID: 518)."]
3571#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3572#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3573pub struct Themisto;
3574impl Origin for Themisto {
3575    fn id(&self) -> NaifId {
3576        NaifId(518i32)
3577    }
3578    fn name(&self) -> &'static str {
3579        "Themisto"
3580    }
3581}
3582impl Display for Themisto {
3583    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3584        write!(f, "{}", self.name())
3585    }
3586}
3587impl From<Themisto> for DynOrigin {
3588    fn from(_: Themisto) -> Self {
3589        DynOrigin::Themisto
3590    }
3591}
3592#[doc = "Magaclite (NAIF ID: 519)."]
3593#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3594#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3595pub struct Magaclite;
3596impl Origin for Magaclite {
3597    fn id(&self) -> NaifId {
3598        NaifId(519i32)
3599    }
3600    fn name(&self) -> &'static str {
3601        "Magaclite"
3602    }
3603}
3604impl Display for Magaclite {
3605    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3606        write!(f, "{}", self.name())
3607    }
3608}
3609impl From<Magaclite> for DynOrigin {
3610    fn from(_: Magaclite) -> Self {
3611        DynOrigin::Magaclite
3612    }
3613}
3614#[doc = "Taygete (NAIF ID: 520)."]
3615#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3616#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3617pub struct Taygete;
3618impl Origin for Taygete {
3619    fn id(&self) -> NaifId {
3620        NaifId(520i32)
3621    }
3622    fn name(&self) -> &'static str {
3623        "Taygete"
3624    }
3625}
3626impl Display for Taygete {
3627    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3628        write!(f, "{}", self.name())
3629    }
3630}
3631impl From<Taygete> for DynOrigin {
3632    fn from(_: Taygete) -> Self {
3633        DynOrigin::Taygete
3634    }
3635}
3636#[doc = "Chaldene (NAIF ID: 521)."]
3637#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3638#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3639pub struct Chaldene;
3640impl Origin for Chaldene {
3641    fn id(&self) -> NaifId {
3642        NaifId(521i32)
3643    }
3644    fn name(&self) -> &'static str {
3645        "Chaldene"
3646    }
3647}
3648impl Display for Chaldene {
3649    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3650        write!(f, "{}", self.name())
3651    }
3652}
3653impl From<Chaldene> for DynOrigin {
3654    fn from(_: Chaldene) -> Self {
3655        DynOrigin::Chaldene
3656    }
3657}
3658#[doc = "Harpalyke (NAIF ID: 522)."]
3659#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3660#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3661pub struct Harpalyke;
3662impl Origin for Harpalyke {
3663    fn id(&self) -> NaifId {
3664        NaifId(522i32)
3665    }
3666    fn name(&self) -> &'static str {
3667        "Harpalyke"
3668    }
3669}
3670impl Display for Harpalyke {
3671    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3672        write!(f, "{}", self.name())
3673    }
3674}
3675impl From<Harpalyke> for DynOrigin {
3676    fn from(_: Harpalyke) -> Self {
3677        DynOrigin::Harpalyke
3678    }
3679}
3680#[doc = "Kalyke (NAIF ID: 523)."]
3681#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3682#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3683pub struct Kalyke;
3684impl Origin for Kalyke {
3685    fn id(&self) -> NaifId {
3686        NaifId(523i32)
3687    }
3688    fn name(&self) -> &'static str {
3689        "Kalyke"
3690    }
3691}
3692impl Display for Kalyke {
3693    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3694        write!(f, "{}", self.name())
3695    }
3696}
3697impl From<Kalyke> for DynOrigin {
3698    fn from(_: Kalyke) -> Self {
3699        DynOrigin::Kalyke
3700    }
3701}
3702#[doc = "Iocaste (NAIF ID: 524)."]
3703#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3704#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3705pub struct Iocaste;
3706impl Origin for Iocaste {
3707    fn id(&self) -> NaifId {
3708        NaifId(524i32)
3709    }
3710    fn name(&self) -> &'static str {
3711        "Iocaste"
3712    }
3713}
3714impl Display for Iocaste {
3715    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3716        write!(f, "{}", self.name())
3717    }
3718}
3719impl From<Iocaste> for DynOrigin {
3720    fn from(_: Iocaste) -> Self {
3721        DynOrigin::Iocaste
3722    }
3723}
3724#[doc = "Erinome (NAIF ID: 525)."]
3725#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3726#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3727pub struct Erinome;
3728impl Origin for Erinome {
3729    fn id(&self) -> NaifId {
3730        NaifId(525i32)
3731    }
3732    fn name(&self) -> &'static str {
3733        "Erinome"
3734    }
3735}
3736impl Display for Erinome {
3737    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3738        write!(f, "{}", self.name())
3739    }
3740}
3741impl From<Erinome> for DynOrigin {
3742    fn from(_: Erinome) -> Self {
3743        DynOrigin::Erinome
3744    }
3745}
3746#[doc = "Isonoe (NAIF ID: 526)."]
3747#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3748#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3749pub struct Isonoe;
3750impl Origin for Isonoe {
3751    fn id(&self) -> NaifId {
3752        NaifId(526i32)
3753    }
3754    fn name(&self) -> &'static str {
3755        "Isonoe"
3756    }
3757}
3758impl Display for Isonoe {
3759    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3760        write!(f, "{}", self.name())
3761    }
3762}
3763impl From<Isonoe> for DynOrigin {
3764    fn from(_: Isonoe) -> Self {
3765        DynOrigin::Isonoe
3766    }
3767}
3768#[doc = "Praxidike (NAIF ID: 527)."]
3769#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3770#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3771pub struct Praxidike;
3772impl Origin for Praxidike {
3773    fn id(&self) -> NaifId {
3774        NaifId(527i32)
3775    }
3776    fn name(&self) -> &'static str {
3777        "Praxidike"
3778    }
3779}
3780impl Display for Praxidike {
3781    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3782        write!(f, "{}", self.name())
3783    }
3784}
3785impl From<Praxidike> for DynOrigin {
3786    fn from(_: Praxidike) -> Self {
3787        DynOrigin::Praxidike
3788    }
3789}
3790#[doc = "Autonoe (NAIF ID: 528)."]
3791#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3792#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3793pub struct Autonoe;
3794impl Origin for Autonoe {
3795    fn id(&self) -> NaifId {
3796        NaifId(528i32)
3797    }
3798    fn name(&self) -> &'static str {
3799        "Autonoe"
3800    }
3801}
3802impl Display for Autonoe {
3803    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3804        write!(f, "{}", self.name())
3805    }
3806}
3807impl From<Autonoe> for DynOrigin {
3808    fn from(_: Autonoe) -> Self {
3809        DynOrigin::Autonoe
3810    }
3811}
3812#[doc = "Thyone (NAIF ID: 529)."]
3813#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3814#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3815pub struct Thyone;
3816impl Origin for Thyone {
3817    fn id(&self) -> NaifId {
3818        NaifId(529i32)
3819    }
3820    fn name(&self) -> &'static str {
3821        "Thyone"
3822    }
3823}
3824impl Display for Thyone {
3825    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3826        write!(f, "{}", self.name())
3827    }
3828}
3829impl From<Thyone> for DynOrigin {
3830    fn from(_: Thyone) -> Self {
3831        DynOrigin::Thyone
3832    }
3833}
3834#[doc = "Hermippe (NAIF ID: 530)."]
3835#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3836#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3837pub struct Hermippe;
3838impl Origin for Hermippe {
3839    fn id(&self) -> NaifId {
3840        NaifId(530i32)
3841    }
3842    fn name(&self) -> &'static str {
3843        "Hermippe"
3844    }
3845}
3846impl Display for Hermippe {
3847    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3848        write!(f, "{}", self.name())
3849    }
3850}
3851impl From<Hermippe> for DynOrigin {
3852    fn from(_: Hermippe) -> Self {
3853        DynOrigin::Hermippe
3854    }
3855}
3856#[doc = "Aitne (NAIF ID: 531)."]
3857#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3858#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3859pub struct Aitne;
3860impl Origin for Aitne {
3861    fn id(&self) -> NaifId {
3862        NaifId(531i32)
3863    }
3864    fn name(&self) -> &'static str {
3865        "Aitne"
3866    }
3867}
3868impl Display for Aitne {
3869    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3870        write!(f, "{}", self.name())
3871    }
3872}
3873impl From<Aitne> for DynOrigin {
3874    fn from(_: Aitne) -> Self {
3875        DynOrigin::Aitne
3876    }
3877}
3878#[doc = "Eurydome (NAIF ID: 532)."]
3879#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3880#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3881pub struct Eurydome;
3882impl Origin for Eurydome {
3883    fn id(&self) -> NaifId {
3884        NaifId(532i32)
3885    }
3886    fn name(&self) -> &'static str {
3887        "Eurydome"
3888    }
3889}
3890impl Display for Eurydome {
3891    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3892        write!(f, "{}", self.name())
3893    }
3894}
3895impl From<Eurydome> for DynOrigin {
3896    fn from(_: Eurydome) -> Self {
3897        DynOrigin::Eurydome
3898    }
3899}
3900#[doc = "Euanthe (NAIF ID: 533)."]
3901#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3902#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3903pub struct Euanthe;
3904impl Origin for Euanthe {
3905    fn id(&self) -> NaifId {
3906        NaifId(533i32)
3907    }
3908    fn name(&self) -> &'static str {
3909        "Euanthe"
3910    }
3911}
3912impl Display for Euanthe {
3913    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3914        write!(f, "{}", self.name())
3915    }
3916}
3917impl From<Euanthe> for DynOrigin {
3918    fn from(_: Euanthe) -> Self {
3919        DynOrigin::Euanthe
3920    }
3921}
3922#[doc = "Euporie (NAIF ID: 534)."]
3923#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3924#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3925pub struct Euporie;
3926impl Origin for Euporie {
3927    fn id(&self) -> NaifId {
3928        NaifId(534i32)
3929    }
3930    fn name(&self) -> &'static str {
3931        "Euporie"
3932    }
3933}
3934impl Display for Euporie {
3935    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3936        write!(f, "{}", self.name())
3937    }
3938}
3939impl From<Euporie> for DynOrigin {
3940    fn from(_: Euporie) -> Self {
3941        DynOrigin::Euporie
3942    }
3943}
3944#[doc = "Orthosie (NAIF ID: 535)."]
3945#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3946#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3947pub struct Orthosie;
3948impl Origin for Orthosie {
3949    fn id(&self) -> NaifId {
3950        NaifId(535i32)
3951    }
3952    fn name(&self) -> &'static str {
3953        "Orthosie"
3954    }
3955}
3956impl Display for Orthosie {
3957    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3958        write!(f, "{}", self.name())
3959    }
3960}
3961impl From<Orthosie> for DynOrigin {
3962    fn from(_: Orthosie) -> Self {
3963        DynOrigin::Orthosie
3964    }
3965}
3966#[doc = "Sponde (NAIF ID: 536)."]
3967#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3968#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3969pub struct Sponde;
3970impl Origin for Sponde {
3971    fn id(&self) -> NaifId {
3972        NaifId(536i32)
3973    }
3974    fn name(&self) -> &'static str {
3975        "Sponde"
3976    }
3977}
3978impl Display for Sponde {
3979    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
3980        write!(f, "{}", self.name())
3981    }
3982}
3983impl From<Sponde> for DynOrigin {
3984    fn from(_: Sponde) -> Self {
3985        DynOrigin::Sponde
3986    }
3987}
3988#[doc = "Kale (NAIF ID: 537)."]
3989#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3990#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
3991pub struct Kale;
3992impl Origin for Kale {
3993    fn id(&self) -> NaifId {
3994        NaifId(537i32)
3995    }
3996    fn name(&self) -> &'static str {
3997        "Kale"
3998    }
3999}
4000impl Display for Kale {
4001    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4002        write!(f, "{}", self.name())
4003    }
4004}
4005impl From<Kale> for DynOrigin {
4006    fn from(_: Kale) -> Self {
4007        DynOrigin::Kale
4008    }
4009}
4010#[doc = "Pasithee (NAIF ID: 538)."]
4011#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4012#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4013pub struct Pasithee;
4014impl Origin for Pasithee {
4015    fn id(&self) -> NaifId {
4016        NaifId(538i32)
4017    }
4018    fn name(&self) -> &'static str {
4019        "Pasithee"
4020    }
4021}
4022impl Display for Pasithee {
4023    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4024        write!(f, "{}", self.name())
4025    }
4026}
4027impl From<Pasithee> for DynOrigin {
4028    fn from(_: Pasithee) -> Self {
4029        DynOrigin::Pasithee
4030    }
4031}
4032#[doc = "Hegemone (NAIF ID: 539)."]
4033#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4034#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4035pub struct Hegemone;
4036impl Origin for Hegemone {
4037    fn id(&self) -> NaifId {
4038        NaifId(539i32)
4039    }
4040    fn name(&self) -> &'static str {
4041        "Hegemone"
4042    }
4043}
4044impl Display for Hegemone {
4045    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4046        write!(f, "{}", self.name())
4047    }
4048}
4049impl From<Hegemone> for DynOrigin {
4050    fn from(_: Hegemone) -> Self {
4051        DynOrigin::Hegemone
4052    }
4053}
4054#[doc = "Mneme (NAIF ID: 540)."]
4055#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4056#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4057pub struct Mneme;
4058impl Origin for Mneme {
4059    fn id(&self) -> NaifId {
4060        NaifId(540i32)
4061    }
4062    fn name(&self) -> &'static str {
4063        "Mneme"
4064    }
4065}
4066impl Display for Mneme {
4067    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4068        write!(f, "{}", self.name())
4069    }
4070}
4071impl From<Mneme> for DynOrigin {
4072    fn from(_: Mneme) -> Self {
4073        DynOrigin::Mneme
4074    }
4075}
4076#[doc = "Aoede (NAIF ID: 541)."]
4077#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4078#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4079pub struct Aoede;
4080impl Origin for Aoede {
4081    fn id(&self) -> NaifId {
4082        NaifId(541i32)
4083    }
4084    fn name(&self) -> &'static str {
4085        "Aoede"
4086    }
4087}
4088impl Display for Aoede {
4089    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4090        write!(f, "{}", self.name())
4091    }
4092}
4093impl From<Aoede> for DynOrigin {
4094    fn from(_: Aoede) -> Self {
4095        DynOrigin::Aoede
4096    }
4097}
4098#[doc = "Thelxinoe (NAIF ID: 542)."]
4099#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4100#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4101pub struct Thelxinoe;
4102impl Origin for Thelxinoe {
4103    fn id(&self) -> NaifId {
4104        NaifId(542i32)
4105    }
4106    fn name(&self) -> &'static str {
4107        "Thelxinoe"
4108    }
4109}
4110impl Display for Thelxinoe {
4111    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4112        write!(f, "{}", self.name())
4113    }
4114}
4115impl From<Thelxinoe> for DynOrigin {
4116    fn from(_: Thelxinoe) -> Self {
4117        DynOrigin::Thelxinoe
4118    }
4119}
4120#[doc = "Arche (NAIF ID: 543)."]
4121#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4122#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4123pub struct Arche;
4124impl Origin for Arche {
4125    fn id(&self) -> NaifId {
4126        NaifId(543i32)
4127    }
4128    fn name(&self) -> &'static str {
4129        "Arche"
4130    }
4131}
4132impl Display for Arche {
4133    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4134        write!(f, "{}", self.name())
4135    }
4136}
4137impl From<Arche> for DynOrigin {
4138    fn from(_: Arche) -> Self {
4139        DynOrigin::Arche
4140    }
4141}
4142#[doc = "Kallichore (NAIF ID: 544)."]
4143#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4144#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4145pub struct Kallichore;
4146impl Origin for Kallichore {
4147    fn id(&self) -> NaifId {
4148        NaifId(544i32)
4149    }
4150    fn name(&self) -> &'static str {
4151        "Kallichore"
4152    }
4153}
4154impl Display for Kallichore {
4155    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4156        write!(f, "{}", self.name())
4157    }
4158}
4159impl From<Kallichore> for DynOrigin {
4160    fn from(_: Kallichore) -> Self {
4161        DynOrigin::Kallichore
4162    }
4163}
4164#[doc = "Helike (NAIF ID: 545)."]
4165#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4166#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4167pub struct Helike;
4168impl Origin for Helike {
4169    fn id(&self) -> NaifId {
4170        NaifId(545i32)
4171    }
4172    fn name(&self) -> &'static str {
4173        "Helike"
4174    }
4175}
4176impl Display for Helike {
4177    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4178        write!(f, "{}", self.name())
4179    }
4180}
4181impl From<Helike> for DynOrigin {
4182    fn from(_: Helike) -> Self {
4183        DynOrigin::Helike
4184    }
4185}
4186#[doc = "Carpo (NAIF ID: 546)."]
4187#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4188#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4189pub struct Carpo;
4190impl Origin for Carpo {
4191    fn id(&self) -> NaifId {
4192        NaifId(546i32)
4193    }
4194    fn name(&self) -> &'static str {
4195        "Carpo"
4196    }
4197}
4198impl Display for Carpo {
4199    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4200        write!(f, "{}", self.name())
4201    }
4202}
4203impl From<Carpo> for DynOrigin {
4204    fn from(_: Carpo) -> Self {
4205        DynOrigin::Carpo
4206    }
4207}
4208#[doc = "Eukelade (NAIF ID: 547)."]
4209#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4210#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4211pub struct Eukelade;
4212impl Origin for Eukelade {
4213    fn id(&self) -> NaifId {
4214        NaifId(547i32)
4215    }
4216    fn name(&self) -> &'static str {
4217        "Eukelade"
4218    }
4219}
4220impl Display for Eukelade {
4221    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4222        write!(f, "{}", self.name())
4223    }
4224}
4225impl From<Eukelade> for DynOrigin {
4226    fn from(_: Eukelade) -> Self {
4227        DynOrigin::Eukelade
4228    }
4229}
4230#[doc = "Cyllene (NAIF ID: 548)."]
4231#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4232#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4233pub struct Cyllene;
4234impl Origin for Cyllene {
4235    fn id(&self) -> NaifId {
4236        NaifId(548i32)
4237    }
4238    fn name(&self) -> &'static str {
4239        "Cyllene"
4240    }
4241}
4242impl Display for Cyllene {
4243    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4244        write!(f, "{}", self.name())
4245    }
4246}
4247impl From<Cyllene> for DynOrigin {
4248    fn from(_: Cyllene) -> Self {
4249        DynOrigin::Cyllene
4250    }
4251}
4252#[doc = "Kore (NAIF ID: 549)."]
4253#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4254#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4255pub struct Kore;
4256impl Origin for Kore {
4257    fn id(&self) -> NaifId {
4258        NaifId(549i32)
4259    }
4260    fn name(&self) -> &'static str {
4261        "Kore"
4262    }
4263}
4264impl Display for Kore {
4265    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4266        write!(f, "{}", self.name())
4267    }
4268}
4269impl From<Kore> for DynOrigin {
4270    fn from(_: Kore) -> Self {
4271        DynOrigin::Kore
4272    }
4273}
4274#[doc = "Herse (NAIF ID: 550)."]
4275#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4276#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4277pub struct Herse;
4278impl Origin for Herse {
4279    fn id(&self) -> NaifId {
4280        NaifId(550i32)
4281    }
4282    fn name(&self) -> &'static str {
4283        "Herse"
4284    }
4285}
4286impl Display for Herse {
4287    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4288        write!(f, "{}", self.name())
4289    }
4290}
4291impl From<Herse> for DynOrigin {
4292    fn from(_: Herse) -> Self {
4293        DynOrigin::Herse
4294    }
4295}
4296#[doc = "Dia (NAIF ID: 553)."]
4297#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4298#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4299pub struct Dia;
4300impl Origin for Dia {
4301    fn id(&self) -> NaifId {
4302        NaifId(553i32)
4303    }
4304    fn name(&self) -> &'static str {
4305        "Dia"
4306    }
4307}
4308impl Display for Dia {
4309    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4310        write!(f, "{}", self.name())
4311    }
4312}
4313impl From<Dia> for DynOrigin {
4314    fn from(_: Dia) -> Self {
4315        DynOrigin::Dia
4316    }
4317}
4318#[doc = "Mimas (NAIF ID: 601)."]
4319#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4320#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4321pub struct Mimas;
4322impl Origin for Mimas {
4323    fn id(&self) -> NaifId {
4324        NaifId(601i32)
4325    }
4326    fn name(&self) -> &'static str {
4327        "Mimas"
4328    }
4329}
4330impl Display for Mimas {
4331    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4332        write!(f, "{}", self.name())
4333    }
4334}
4335impl From<Mimas> for DynOrigin {
4336    fn from(_: Mimas) -> Self {
4337        DynOrigin::Mimas
4338    }
4339}
4340impl PointMass for Mimas {
4341    fn gravitational_parameter(&self) -> GravitationalParameter {
4342        GravitationalParameter::km3_per_s2(2.503488768152587f64)
4343    }
4344}
4345impl MeanRadius for Mimas {
4346    fn mean_radius(&self) -> Distance {
4347        Distance::kilometers(198.2f64)
4348    }
4349}
4350impl TriaxialEllipsoid for Mimas {
4351    fn radii(&self) -> Radii {
4352        (
4353            Distance::kilometers(207.8f64),
4354            Distance::kilometers(196.7f64),
4355            Distance::kilometers(190.6f64),
4356        )
4357    }
4358}
4359const RIGHT_ASCENSION_MIMAS: RotationalElement<8usize> = RotationalElement {
4360    typ: RotationalElementType::RightAscension,
4361    c0: 0.7096508738608943f64,
4362    c1: -0.0006283185307179586f64,
4363    c2: 0f64,
4364    c: [
4365        0f64,
4366        0f64,
4367        0.2366666465704311f64,
4368        0f64,
4369        0f64,
4370        0f64,
4371        0f64,
4372        0f64,
4373    ],
4374    theta0: [
4375        6.166597313146365f64,
4376        0.5012585611727715f64,
4377        3.0962140930379407f64,
4378        5.235987755982989f64,
4379        5.523094417936056f64,
4380        6.0248765778844255f64,
4381        12.33319462629273f64,
4382        1.002517122345543f64,
4383    ],
4384    theta1: [
4385        1321.331180819591f64,
4386        1321.331180819591f64,
4387        -637.14117008679f64,
4388        -126.11574641985825f64,
4389        8.834856673595295f64,
4390        -17.73778118801837f64,
4391        2642.662361639182f64,
4392        2642.662361639182f64,
4393    ],
4394};
4395const DECLINATION_MIMAS: RotationalElement<8usize> = RotationalElement {
4396    typ: RotationalElementType::Declination,
4397    c0: 1.457698991265664f64,
4398    c1: -0.00006981317007977319f64,
4399    c2: 0f64,
4400    c: [
4401        0f64,
4402        0f64,
4403        -0.026703537555513242f64,
4404        0f64,
4405        0f64,
4406        0f64,
4407        0f64,
4408        0f64,
4409    ],
4410    theta0: [
4411        6.166597313146365f64,
4412        0.5012585611727715f64,
4413        3.0962140930379407f64,
4414        5.235987755982989f64,
4415        5.523094417936056f64,
4416        6.0248765778844255f64,
4417        12.33319462629273f64,
4418        1.002517122345543f64,
4419    ],
4420    theta1: [
4421        1321.331180819591f64,
4422        1321.331180819591f64,
4423        -637.14117008679f64,
4424        -126.11574641985825f64,
4425        8.834856673595295f64,
4426        -17.73778118801837f64,
4427        2642.662361639182f64,
4428        2642.662361639182f64,
4429    ],
4430};
4431const ROTATION_MIMAS: RotationalElement<8usize> = RotationalElement {
4432    typ: RotationalElementType::Rotation,
4433    c0: 5.819974923700291f64,
4434    c1: 6.667062709440567f64,
4435    c2: 0f64,
4436    c: [
4437        0f64,
4438        0f64,
4439        -0.23527038316883564f64,
4440        0f64,
4441        -0.7827801695194568f64,
4442        0f64,
4443        0f64,
4444        0f64,
4445    ],
4446    theta0: [
4447        6.166597313146365f64,
4448        0.5012585611727715f64,
4449        3.0962140930379407f64,
4450        5.235987755982989f64,
4451        5.523094417936056f64,
4452        6.0248765778844255f64,
4453        12.33319462629273f64,
4454        1.002517122345543f64,
4455    ],
4456    theta1: [
4457        1321.331180819591f64,
4458        1321.331180819591f64,
4459        -637.14117008679f64,
4460        -126.11574641985825f64,
4461        8.834856673595295f64,
4462        -17.73778118801837f64,
4463        2642.662361639182f64,
4464        2642.662361639182f64,
4465    ],
4466};
4467impl RotationalElements for Mimas {
4468    fn rotational_elements(&self, t: f64) -> Elements {
4469        (
4470            RIGHT_ASCENSION_MIMAS.angle(t),
4471            DECLINATION_MIMAS.angle(t),
4472            ROTATION_MIMAS.angle(t),
4473        )
4474    }
4475    fn rotational_element_rates(&self, t: f64) -> Elements {
4476        (
4477            RIGHT_ASCENSION_MIMAS.angle_dot(t),
4478            DECLINATION_MIMAS.angle_dot(t),
4479            ROTATION_MIMAS.angle_dot(t),
4480        )
4481    }
4482}
4483#[doc = "Enceladus (NAIF ID: 602)."]
4484#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4485#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4486pub struct Enceladus;
4487impl Origin for Enceladus {
4488    fn id(&self) -> NaifId {
4489        NaifId(602i32)
4490    }
4491    fn name(&self) -> &'static str {
4492        "Enceladus"
4493    }
4494}
4495impl Display for Enceladus {
4496    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4497        write!(f, "{}", self.name())
4498    }
4499}
4500impl From<Enceladus> for DynOrigin {
4501    fn from(_: Enceladus) -> Self {
4502        DynOrigin::Enceladus
4503    }
4504}
4505impl PointMass for Enceladus {
4506    fn gravitational_parameter(&self) -> GravitationalParameter {
4507        GravitationalParameter::km3_per_s2(7.210366688598896f64)
4508    }
4509}
4510impl MeanRadius for Enceladus {
4511    fn mean_radius(&self) -> Distance {
4512        Distance::kilometers(252.1f64)
4513    }
4514}
4515impl TriaxialEllipsoid for Enceladus {
4516    fn radii(&self) -> Radii {
4517        (
4518            Distance::kilometers(256.6f64),
4519            Distance::kilometers(251.4f64),
4520            Distance::kilometers(248.3f64),
4521        )
4522    }
4523}
4524const RIGHT_ASCENSION_ENCELADUS: RotationalElement<0usize> = RotationalElement {
4525    typ: RotationalElementType::RightAscension,
4526    c0: 0.7096508738608943f64,
4527    c1: -0.0006283185307179586f64,
4528    c2: 0f64,
4529    c: [],
4530    theta0: [],
4531    theta1: [],
4532};
4533const DECLINATION_ENCELADUS: RotationalElement<0usize> = RotationalElement {
4534    typ: RotationalElementType::Declination,
4535    c0: 1.457698991265664f64,
4536    c1: -0.00006981317007977319f64,
4537    c2: 0f64,
4538    c: [],
4539    theta0: [],
4540    theta1: [],
4541};
4542const ROTATION_ENCELADUS: RotationalElement<0usize> = RotationalElement {
4543    typ: RotationalElementType::Rotation,
4544    c0: 0.11030480872604163f64,
4545    c1: 4.585536698039173f64,
4546    c2: 0f64,
4547    c: [],
4548    theta0: [],
4549    theta1: [],
4550};
4551impl RotationalElements for Enceladus {
4552    fn rotational_elements(&self, t: f64) -> Elements {
4553        (
4554            RIGHT_ASCENSION_ENCELADUS.angle(t),
4555            DECLINATION_ENCELADUS.angle(t),
4556            ROTATION_ENCELADUS.angle(t),
4557        )
4558    }
4559    fn rotational_element_rates(&self, t: f64) -> Elements {
4560        (
4561            RIGHT_ASCENSION_ENCELADUS.angle_dot(t),
4562            DECLINATION_ENCELADUS.angle_dot(t),
4563            ROTATION_ENCELADUS.angle_dot(t),
4564        )
4565    }
4566}
4567#[doc = "Tethys (NAIF ID: 603)."]
4568#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4569#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4570pub struct Tethys;
4571impl Origin for Tethys {
4572    fn id(&self) -> NaifId {
4573        NaifId(603i32)
4574    }
4575    fn name(&self) -> &'static str {
4576        "Tethys"
4577    }
4578}
4579impl Display for Tethys {
4580    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4581        write!(f, "{}", self.name())
4582    }
4583}
4584impl From<Tethys> for DynOrigin {
4585    fn from(_: Tethys) -> Self {
4586        DynOrigin::Tethys
4587    }
4588}
4589impl PointMass for Tethys {
4590    fn gravitational_parameter(&self) -> GravitationalParameter {
4591        GravitationalParameter::km3_per_s2(41.21352885489587f64)
4592    }
4593}
4594impl MeanRadius for Tethys {
4595    fn mean_radius(&self) -> Distance {
4596        Distance::kilometers(531f64)
4597    }
4598}
4599impl TriaxialEllipsoid for Tethys {
4600    fn radii(&self) -> Radii {
4601        (
4602            Distance::kilometers(538.4f64),
4603            Distance::kilometers(528.3f64),
4604            Distance::kilometers(526.3f64),
4605        )
4606    }
4607}
4608const RIGHT_ASCENSION_TETHYS: RotationalElement<8usize> = RotationalElement {
4609    typ: RotationalElementType::RightAscension,
4610    c0: 0.7096508738608943f64,
4611    c1: -0.0006283185307179586f64,
4612    c2: 0f64,
4613    c: [
4614        0f64,
4615        0f64,
4616        0f64,
4617        0.16859880574265224f64,
4618        0f64,
4619        0f64,
4620        0f64,
4621        0f64,
4622    ],
4623    theta0: [
4624        6.166597313146365f64,
4625        0.5012585611727715f64,
4626        3.0962140930379407f64,
4627        5.235987755982989f64,
4628        5.523094417936056f64,
4629        6.0248765778844255f64,
4630        12.33319462629273f64,
4631        1.002517122345543f64,
4632    ],
4633    theta1: [
4634        1321.331180819591f64,
4635        1321.331180819591f64,
4636        -637.14117008679f64,
4637        -126.11574641985825f64,
4638        8.834856673595295f64,
4639        -17.73778118801837f64,
4640        2642.662361639182f64,
4641        2642.662361639182f64,
4642    ],
4643};
4644const DECLINATION_TETHYS: RotationalElement<8usize> = RotationalElement {
4645    typ: RotationalElementType::Declination,
4646    c0: 1.457698991265664f64,
4647    c1: -0.00006981317007977319f64,
4648    c2: 0f64,
4649    c: [
4650        0f64,
4651        0f64,
4652        0f64,
4653        -0.019024088846738195f64,
4654        0f64,
4655        0f64,
4656        0f64,
4657        0f64,
4658    ],
4659    theta0: [
4660        6.166597313146365f64,
4661        0.5012585611727715f64,
4662        3.0962140930379407f64,
4663        5.235987755982989f64,
4664        5.523094417936056f64,
4665        6.0248765778844255f64,
4666        12.33319462629273f64,
4667        1.002517122345543f64,
4668    ],
4669    theta1: [
4670        1321.331180819591f64,
4671        1321.331180819591f64,
4672        -637.14117008679f64,
4673        -126.11574641985825f64,
4674        8.834856673595295f64,
4675        -17.73778118801837f64,
4676        2642.662361639182f64,
4677        2642.662361639182f64,
4678    ],
4679};
4680const ROTATION_TETHYS: RotationalElement<8usize> = RotationalElement {
4681    typ: RotationalElementType::Rotation,
4682    c0: 0.1562069680534925f64,
4683    c1: 3.328306379991881f64,
4684    c2: 0f64,
4685    c: [
4686        0f64,
4687        0f64,
4688        0f64,
4689        -0.16755160819145562f64,
4690        0.03892084231947355f64,
4691        0f64,
4692        0f64,
4693        0f64,
4694    ],
4695    theta0: [
4696        6.166597313146365f64,
4697        0.5012585611727715f64,
4698        3.0962140930379407f64,
4699        5.235987755982989f64,
4700        5.523094417936056f64,
4701        6.0248765778844255f64,
4702        12.33319462629273f64,
4703        1.002517122345543f64,
4704    ],
4705    theta1: [
4706        1321.331180819591f64,
4707        1321.331180819591f64,
4708        -637.14117008679f64,
4709        -126.11574641985825f64,
4710        8.834856673595295f64,
4711        -17.73778118801837f64,
4712        2642.662361639182f64,
4713        2642.662361639182f64,
4714    ],
4715};
4716impl RotationalElements for Tethys {
4717    fn rotational_elements(&self, t: f64) -> Elements {
4718        (
4719            RIGHT_ASCENSION_TETHYS.angle(t),
4720            DECLINATION_TETHYS.angle(t),
4721            ROTATION_TETHYS.angle(t),
4722        )
4723    }
4724    fn rotational_element_rates(&self, t: f64) -> Elements {
4725        (
4726            RIGHT_ASCENSION_TETHYS.angle_dot(t),
4727            DECLINATION_TETHYS.angle_dot(t),
4728            ROTATION_TETHYS.angle_dot(t),
4729        )
4730    }
4731}
4732#[doc = "Dione (NAIF ID: 604)."]
4733#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4734#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4735pub struct Dione;
4736impl Origin for Dione {
4737    fn id(&self) -> NaifId {
4738        NaifId(604i32)
4739    }
4740    fn name(&self) -> &'static str {
4741        "Dione"
4742    }
4743}
4744impl Display for Dione {
4745    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4746        write!(f, "{}", self.name())
4747    }
4748}
4749impl From<Dione> for DynOrigin {
4750    fn from(_: Dione) -> Self {
4751        DynOrigin::Dione
4752    }
4753}
4754impl PointMass for Dione {
4755    fn gravitational_parameter(&self) -> GravitationalParameter {
4756        GravitationalParameter::km3_per_s2(73.11607172482067f64)
4757    }
4758}
4759impl MeanRadius for Dione {
4760    fn mean_radius(&self) -> Distance {
4761        Distance::kilometers(561.4f64)
4762    }
4763}
4764impl TriaxialEllipsoid for Dione {
4765    fn radii(&self) -> Radii {
4766        (
4767            Distance::kilometers(563.4f64),
4768            Distance::kilometers(561.3f64),
4769            Distance::kilometers(559.6f64),
4770        )
4771    }
4772}
4773const RIGHT_ASCENSION_DIONE: RotationalElement<0usize> = RotationalElement {
4774    typ: RotationalElementType::RightAscension,
4775    c0: 0.7096508738608943f64,
4776    c1: -0.0006283185307179586f64,
4777    c2: 0f64,
4778    c: [],
4779    theta0: [],
4780    theta1: [],
4781};
4782const DECLINATION_DIONE: RotationalElement<0usize> = RotationalElement {
4783    typ: RotationalElementType::Declination,
4784    c0: 1.457698991265664f64,
4785    c1: -0.00006981317007977319f64,
4786    c2: 0f64,
4787    c: [],
4788    theta0: [],
4789    theta1: [],
4790};
4791const ROTATION_DIONE: RotationalElement<0usize> = RotationalElement {
4792    typ: RotationalElementType::Rotation,
4793    c0: 6.241297405131723f64,
4794    c1: 2.295717637805533f64,
4795    c2: 0f64,
4796    c: [],
4797    theta0: [],
4798    theta1: [],
4799};
4800impl RotationalElements for Dione {
4801    fn rotational_elements(&self, t: f64) -> Elements {
4802        (
4803            RIGHT_ASCENSION_DIONE.angle(t),
4804            DECLINATION_DIONE.angle(t),
4805            ROTATION_DIONE.angle(t),
4806        )
4807    }
4808    fn rotational_element_rates(&self, t: f64) -> Elements {
4809        (
4810            RIGHT_ASCENSION_DIONE.angle_dot(t),
4811            DECLINATION_DIONE.angle_dot(t),
4812            ROTATION_DIONE.angle_dot(t),
4813        )
4814    }
4815}
4816#[doc = "Rhea (NAIF ID: 605)."]
4817#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4818#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4819pub struct Rhea;
4820impl Origin for Rhea {
4821    fn id(&self) -> NaifId {
4822        NaifId(605i32)
4823    }
4824    fn name(&self) -> &'static str {
4825        "Rhea"
4826    }
4827}
4828impl Display for Rhea {
4829    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4830        write!(f, "{}", self.name())
4831    }
4832}
4833impl From<Rhea> for DynOrigin {
4834    fn from(_: Rhea) -> Self {
4835        DynOrigin::Rhea
4836    }
4837}
4838impl PointMass for Rhea {
4839    fn gravitational_parameter(&self) -> GravitationalParameter {
4840        GravitationalParameter::km3_per_s2(153.9417519146563f64)
4841    }
4842}
4843impl MeanRadius for Rhea {
4844    fn mean_radius(&self) -> Distance {
4845        Distance::kilometers(763.5f64)
4846    }
4847}
4848impl TriaxialEllipsoid for Rhea {
4849    fn radii(&self) -> Radii {
4850        (
4851            Distance::kilometers(765f64),
4852            Distance::kilometers(763.1f64),
4853            Distance::kilometers(762.4f64),
4854        )
4855    }
4856}
4857const RIGHT_ASCENSION_RHEA: RotationalElement<8usize> = RotationalElement {
4858    typ: RotationalElementType::RightAscension,
4859    c0: 0.7047639519553103f64,
4860    c1: -0.0006283185307179586f64,
4861    c2: 0f64,
4862    c: [
4863        0f64,
4864        0f64,
4865        0f64,
4866        0f64,
4867        0f64,
4868        0.054105206811824215f64,
4869        0f64,
4870        0f64,
4871    ],
4872    theta0: [
4873        6.166597313146365f64,
4874        0.5012585611727715f64,
4875        3.0962140930379407f64,
4876        5.235987755982989f64,
4877        5.523094417936056f64,
4878        6.0248765778844255f64,
4879        12.33319462629273f64,
4880        1.002517122345543f64,
4881    ],
4882    theta1: [
4883        1321.331180819591f64,
4884        1321.331180819591f64,
4885        -637.14117008679f64,
4886        -126.11574641985825f64,
4887        8.834856673595295f64,
4888        -17.73778118801837f64,
4889        2642.662361639182f64,
4890        2642.662361639182f64,
4891    ],
4892};
4893const DECLINATION_RHEA: RotationalElement<8usize> = RotationalElement {
4894    typ: RotationalElementType::Declination,
4895    c0: 1.4582225900412622f64,
4896    c1: -0.00006981317007977319f64,
4897    c2: 0f64,
4898    c: [
4899        0f64,
4900        0f64,
4901        0f64,
4902        0f64,
4903        0f64,
4904        -0.006108652381980153f64,
4905        0f64,
4906        0f64,
4907    ],
4908    theta0: [
4909        6.166597313146365f64,
4910        0.5012585611727715f64,
4911        3.0962140930379407f64,
4912        5.235987755982989f64,
4913        5.523094417936056f64,
4914        6.0248765778844255f64,
4915        12.33319462629273f64,
4916        1.002517122345543f64,
4917    ],
4918    theta1: [
4919        1321.331180819591f64,
4920        1321.331180819591f64,
4921        -637.14117008679f64,
4922        -126.11574641985825f64,
4923        8.834856673595295f64,
4924        -17.73778118801837f64,
4925        2642.662361639182f64,
4926        2642.662361639182f64,
4927    ],
4928};
4929const ROTATION_RHEA: RotationalElement<8usize> = RotationalElement {
4930    typ: RotationalElementType::Rotation,
4931    c0: 4.104316268989865f64,
4932    c1: 1.3908537151816638f64,
4933    c2: 0f64,
4934    c: [
4935        0f64,
4936        0f64,
4937        0f64,
4938        0f64,
4939        0f64,
4940        -0.05375614096142535f64,
4941        0f64,
4942        0f64,
4943    ],
4944    theta0: [
4945        6.166597313146365f64,
4946        0.5012585611727715f64,
4947        3.0962140930379407f64,
4948        5.235987755982989f64,
4949        5.523094417936056f64,
4950        6.0248765778844255f64,
4951        12.33319462629273f64,
4952        1.002517122345543f64,
4953    ],
4954    theta1: [
4955        1321.331180819591f64,
4956        1321.331180819591f64,
4957        -637.14117008679f64,
4958        -126.11574641985825f64,
4959        8.834856673595295f64,
4960        -17.73778118801837f64,
4961        2642.662361639182f64,
4962        2642.662361639182f64,
4963    ],
4964};
4965impl RotationalElements for Rhea {
4966    fn rotational_elements(&self, t: f64) -> Elements {
4967        (
4968            RIGHT_ASCENSION_RHEA.angle(t),
4969            DECLINATION_RHEA.angle(t),
4970            ROTATION_RHEA.angle(t),
4971        )
4972    }
4973    fn rotational_element_rates(&self, t: f64) -> Elements {
4974        (
4975            RIGHT_ASCENSION_RHEA.angle_dot(t),
4976            DECLINATION_RHEA.angle_dot(t),
4977            ROTATION_RHEA.angle_dot(t),
4978        )
4979    }
4980}
4981#[doc = "Titan (NAIF ID: 606)."]
4982#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4983#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4984pub struct Titan;
4985impl Origin for Titan {
4986    fn id(&self) -> NaifId {
4987        NaifId(606i32)
4988    }
4989    fn name(&self) -> &'static str {
4990        "Titan"
4991    }
4992}
4993impl Display for Titan {
4994    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
4995        write!(f, "{}", self.name())
4996    }
4997}
4998impl From<Titan> for DynOrigin {
4999    fn from(_: Titan) -> Self {
5000        DynOrigin::Titan
5001    }
5002}
5003impl PointMass for Titan {
5004    fn gravitational_parameter(&self) -> GravitationalParameter {
5005        GravitationalParameter::km3_per_s2(8978.137095521046f64)
5006    }
5007}
5008impl MeanRadius for Titan {
5009    fn mean_radius(&self) -> Distance {
5010        Distance::kilometers(2575f64)
5011    }
5012}
5013impl TriaxialEllipsoid for Titan {
5014    fn radii(&self) -> Radii {
5015        (
5016            Distance::kilometers(2575.15f64),
5017            Distance::kilometers(2574.78f64),
5018            Distance::kilometers(2574.47f64),
5019        )
5020    }
5021}
5022const RIGHT_ASCENSION_TITAN: RotationalElement<8usize> = RotationalElement {
5023    typ: RotationalElementType::RightAscension,
5024    c0: 0.6891031125771652f64,
5025    c1: 0f64,
5026    c2: 0f64,
5027    c: [0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64],
5028    theta0: [
5029        6.166597313146365f64,
5030        0.5012585611727715f64,
5031        3.0962140930379407f64,
5032        5.235987755982989f64,
5033        5.523094417936056f64,
5034        6.0248765778844255f64,
5035        12.33319462629273f64,
5036        1.002517122345543f64,
5037    ],
5038    theta1: [
5039        1321.331180819591f64,
5040        1321.331180819591f64,
5041        -637.14117008679f64,
5042        -126.11574641985825f64,
5043        8.834856673595295f64,
5044        -17.73778118801837f64,
5045        2642.662361639182f64,
5046        2642.662361639182f64,
5047    ],
5048};
5049const DECLINATION_TITAN: RotationalElement<8usize> = RotationalElement {
5050    typ: RotationalElementType::Declination,
5051    c0: 1.456091543024577f64,
5052    c1: 0f64,
5053    c2: 0f64,
5054    c: [0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64],
5055    theta0: [
5056        6.166597313146365f64,
5057        0.5012585611727715f64,
5058        3.0962140930379407f64,
5059        5.235987755982989f64,
5060        5.523094417936056f64,
5061        6.0248765778844255f64,
5062        12.33319462629273f64,
5063        1.002517122345543f64,
5064    ],
5065    theta1: [
5066        1321.331180819591f64,
5067        1321.331180819591f64,
5068        -637.14117008679f64,
5069        -126.11574641985825f64,
5070        8.834856673595295f64,
5071        -17.73778118801837f64,
5072        2642.662361639182f64,
5073        2642.662361639182f64,
5074    ],
5075};
5076const ROTATION_TITAN: RotationalElement<8usize> = RotationalElement {
5077    typ: RotationalElementType::Rotation,
5078    c0: 3.2565313114798795f64,
5079    c1: 0.39404258030637335f64,
5080    c2: 0f64,
5081    c: [0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64, 0f64],
5082    theta0: [
5083        6.166597313146365f64,
5084        0.5012585611727715f64,
5085        3.0962140930379407f64,
5086        5.235987755982989f64,
5087        5.523094417936056f64,
5088        6.0248765778844255f64,
5089        12.33319462629273f64,
5090        1.002517122345543f64,
5091    ],
5092    theta1: [
5093        1321.331180819591f64,
5094        1321.331180819591f64,
5095        -637.14117008679f64,
5096        -126.11574641985825f64,
5097        8.834856673595295f64,
5098        -17.73778118801837f64,
5099        2642.662361639182f64,
5100        2642.662361639182f64,
5101    ],
5102};
5103impl RotationalElements for Titan {
5104    fn rotational_elements(&self, t: f64) -> Elements {
5105        (
5106            RIGHT_ASCENSION_TITAN.angle(t),
5107            DECLINATION_TITAN.angle(t),
5108            ROTATION_TITAN.angle(t),
5109        )
5110    }
5111    fn rotational_element_rates(&self, t: f64) -> Elements {
5112        (
5113            RIGHT_ASCENSION_TITAN.angle_dot(t),
5114            DECLINATION_TITAN.angle_dot(t),
5115            ROTATION_TITAN.angle_dot(t),
5116        )
5117    }
5118}
5119#[doc = "Hyperion (NAIF ID: 607)."]
5120#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5121#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5122pub struct Hyperion;
5123impl Origin for Hyperion {
5124    fn id(&self) -> NaifId {
5125        NaifId(607i32)
5126    }
5127    fn name(&self) -> &'static str {
5128        "Hyperion"
5129    }
5130}
5131impl Display for Hyperion {
5132    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5133        write!(f, "{}", self.name())
5134    }
5135}
5136impl From<Hyperion> for DynOrigin {
5137    fn from(_: Hyperion) -> Self {
5138        DynOrigin::Hyperion
5139    }
5140}
5141impl PointMass for Hyperion {
5142    fn gravitational_parameter(&self) -> GravitationalParameter {
5143        GravitationalParameter::km3_per_s2(0.3704913747932265f64)
5144    }
5145}
5146impl MeanRadius for Hyperion {
5147    fn mean_radius(&self) -> Distance {
5148        Distance::kilometers(135f64)
5149    }
5150}
5151impl TriaxialEllipsoid for Hyperion {
5152    fn radii(&self) -> Radii {
5153        (
5154            Distance::kilometers(180.1f64),
5155            Distance::kilometers(133f64),
5156            Distance::kilometers(102.7f64),
5157        )
5158    }
5159}
5160#[doc = "Iapetus (NAIF ID: 608)."]
5161#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5162#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5163pub struct Iapetus;
5164impl Origin for Iapetus {
5165    fn id(&self) -> NaifId {
5166        NaifId(608i32)
5167    }
5168    fn name(&self) -> &'static str {
5169        "Iapetus"
5170    }
5171}
5172impl Display for Iapetus {
5173    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5174        write!(f, "{}", self.name())
5175    }
5176}
5177impl From<Iapetus> for DynOrigin {
5178    fn from(_: Iapetus) -> Self {
5179        DynOrigin::Iapetus
5180    }
5181}
5182impl PointMass for Iapetus {
5183    fn gravitational_parameter(&self) -> GravitationalParameter {
5184        GravitationalParameter::km3_per_s2(120.5151060137642f64)
5185    }
5186}
5187impl MeanRadius for Iapetus {
5188    fn mean_radius(&self) -> Distance {
5189        Distance::kilometers(734.3f64)
5190    }
5191}
5192impl TriaxialEllipsoid for Iapetus {
5193    fn radii(&self) -> Radii {
5194        (
5195            Distance::kilometers(745.7f64),
5196            Distance::kilometers(745.7f64),
5197            Distance::kilometers(712.1f64),
5198        )
5199    }
5200}
5201impl Spheroid for Iapetus {}
5202const RIGHT_ASCENSION_IAPETUS: RotationalElement<0usize> = RotationalElement {
5203    typ: RotationalElementType::RightAscension,
5204    c0: 5.552939548145159f64,
5205    c1: -0.06892305216125608f64,
5206    c2: 0f64,
5207    c: [],
5208    theta0: [],
5209    theta1: [],
5210};
5211const DECLINATION_IAPETUS: RotationalElement<0usize> = RotationalElement {
5212    typ: RotationalElementType::Declination,
5213    c0: 1.3095205377713455f64,
5214    c1: -0.019949113350295186f64,
5215    c2: 0f64,
5216    c: [],
5217    theta0: [],
5218    theta1: [],
5219};
5220const ROTATION_IAPETUS: RotationalElement<0usize> = RotationalElement {
5221    typ: RotationalElementType::Rotation,
5222    c0: 6.199409503083858f64,
5223    c1: 0.07920229445458282f64,
5224    c2: 0f64,
5225    c: [],
5226    theta0: [],
5227    theta1: [],
5228};
5229impl RotationalElements for Iapetus {
5230    fn rotational_elements(&self, t: f64) -> Elements {
5231        (
5232            RIGHT_ASCENSION_IAPETUS.angle(t),
5233            DECLINATION_IAPETUS.angle(t),
5234            ROTATION_IAPETUS.angle(t),
5235        )
5236    }
5237    fn rotational_element_rates(&self, t: f64) -> Elements {
5238        (
5239            RIGHT_ASCENSION_IAPETUS.angle_dot(t),
5240            DECLINATION_IAPETUS.angle_dot(t),
5241            ROTATION_IAPETUS.angle_dot(t),
5242        )
5243    }
5244}
5245#[doc = "Phoebe (NAIF ID: 609)."]
5246#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5247#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5248pub struct Phoebe;
5249impl Origin for Phoebe {
5250    fn id(&self) -> NaifId {
5251        NaifId(609i32)
5252    }
5253    fn name(&self) -> &'static str {
5254        "Phoebe"
5255    }
5256}
5257impl Display for Phoebe {
5258    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5259        write!(f, "{}", self.name())
5260    }
5261}
5262impl From<Phoebe> for DynOrigin {
5263    fn from(_: Phoebe) -> Self {
5264        DynOrigin::Phoebe
5265    }
5266}
5267impl PointMass for Phoebe {
5268    fn gravitational_parameter(&self) -> GravitationalParameter {
5269        GravitationalParameter::km3_per_s2(0.5547860052791678f64)
5270    }
5271}
5272impl MeanRadius for Phoebe {
5273    fn mean_radius(&self) -> Distance {
5274        Distance::kilometers(106.5f64)
5275    }
5276}
5277impl TriaxialEllipsoid for Phoebe {
5278    fn radii(&self) -> Radii {
5279        (
5280            Distance::kilometers(109.4f64),
5281            Distance::kilometers(108.5f64),
5282            Distance::kilometers(101.8f64),
5283        )
5284    }
5285}
5286const RIGHT_ASCENSION_PHOEBE: RotationalElement<0usize> = RotationalElement {
5287    typ: RotationalElementType::RightAscension,
5288    c0: 6.229080100367762f64,
5289    c1: 0f64,
5290    c2: 0f64,
5291    c: [],
5292    theta0: [],
5293    theta1: [],
5294};
5295const DECLINATION_PHOEBE: RotationalElement<0usize> = RotationalElement {
5296    typ: RotationalElementType::Declination,
5297    c0: 1.3578661580515883f64,
5298    c1: 0f64,
5299    c2: 0f64,
5300    c: [],
5301    theta0: [],
5302    theta1: [],
5303};
5304const ROTATION_PHOEBE: RotationalElement<0usize> = RotationalElement {
5305    typ: RotationalElementType::Rotation,
5306    c0: 3.116808978211474f64,
5307    c1: 16.26016798998745f64,
5308    c2: 0f64,
5309    c: [],
5310    theta0: [],
5311    theta1: [],
5312};
5313impl RotationalElements for Phoebe {
5314    fn rotational_elements(&self, t: f64) -> Elements {
5315        (
5316            RIGHT_ASCENSION_PHOEBE.angle(t),
5317            DECLINATION_PHOEBE.angle(t),
5318            ROTATION_PHOEBE.angle(t),
5319        )
5320    }
5321    fn rotational_element_rates(&self, t: f64) -> Elements {
5322        (
5323            RIGHT_ASCENSION_PHOEBE.angle_dot(t),
5324            DECLINATION_PHOEBE.angle_dot(t),
5325            ROTATION_PHOEBE.angle_dot(t),
5326        )
5327    }
5328}
5329#[doc = "Janus (NAIF ID: 610)."]
5330#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5331#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5332pub struct Janus;
5333impl Origin for Janus {
5334    fn id(&self) -> NaifId {
5335        NaifId(610i32)
5336    }
5337    fn name(&self) -> &'static str {
5338        "Janus"
5339    }
5340}
5341impl Display for Janus {
5342    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5343        write!(f, "{}", self.name())
5344    }
5345}
5346impl From<Janus> for DynOrigin {
5347    fn from(_: Janus) -> Self {
5348        DynOrigin::Janus
5349    }
5350}
5351impl PointMass for Janus {
5352    fn gravitational_parameter(&self) -> GravitationalParameter {
5353        GravitationalParameter::km3_per_s2(0.1265765099012197f64)
5354    }
5355}
5356impl MeanRadius for Janus {
5357    fn mean_radius(&self) -> Distance {
5358        Distance::kilometers(89.2f64)
5359    }
5360}
5361impl TriaxialEllipsoid for Janus {
5362    fn radii(&self) -> Radii {
5363        (
5364            Distance::kilometers(101.7f64),
5365            Distance::kilometers(93f64),
5366            Distance::kilometers(76.3f64),
5367        )
5368    }
5369}
5370const RIGHT_ASCENSION_JANUS: RotationalElement<8usize> = RotationalElement {
5371    typ: RotationalElementType::RightAscension,
5372    c0: 0.7082546104592989f64,
5373    c1: -0.0006283185307179586f64,
5374    c2: 0f64,
5375    c: [
5376        0f64,
5377        -0.028326693759867967f64,
5378        0f64,
5379        0f64,
5380        0f64,
5381        0f64,
5382        0f64,
5383        0.0004014257279586958f64,
5384    ],
5385    theta0: [
5386        6.166597313146365f64,
5387        0.5012585611727715f64,
5388        3.0962140930379407f64,
5389        5.235987755982989f64,
5390        5.523094417936056f64,
5391        6.0248765778844255f64,
5392        12.33319462629273f64,
5393        1.002517122345543f64,
5394    ],
5395    theta1: [
5396        1321.331180819591f64,
5397        1321.331180819591f64,
5398        -637.14117008679f64,
5399        -126.11574641985825f64,
5400        8.834856673595295f64,
5401        -17.73778118801837f64,
5402        2642.662361639182f64,
5403        2642.662361639182f64,
5404    ],
5405};
5406const DECLINATION_JANUS: RotationalElement<8usize> = RotationalElement {
5407    typ: RotationalElementType::Declination,
5408    c0: 1.457698991265664f64,
5409    c1: -0.00006981317007977319f64,
5410    c2: 0f64,
5411    c: [
5412        0f64,
5413        -0.003193952531149623f64,
5414        0f64,
5415        0f64,
5416        0f64,
5417        0f64,
5418        0f64,
5419        0.000017453292519943296f64,
5420    ],
5421    theta0: [
5422        6.166597313146365f64,
5423        0.5012585611727715f64,
5424        3.0962140930379407f64,
5425        5.235987755982989f64,
5426        5.523094417936056f64,
5427        6.0248765778844255f64,
5428        12.33319462629273f64,
5429        1.002517122345543f64,
5430    ],
5431    theta1: [
5432        1321.331180819591f64,
5433        1321.331180819591f64,
5434        -637.14117008679f64,
5435        -126.11574641985825f64,
5436        8.834856673595295f64,
5437        -17.73778118801837f64,
5438        2642.662361639182f64,
5439        2642.662361639182f64,
5440    ],
5441};
5442const ROTATION_JANUS: RotationalElement<8usize> = RotationalElement {
5443    typ: RotationalElementType::Rotation,
5444    c0: 1.0267771989482641f64,
5445    c1: 9.044924285944507f64,
5446    c2: 0f64,
5447    c: [
5448        0f64,
5449        0.028152160834668535f64,
5450        0f64,
5451        0f64,
5452        0f64,
5453        0f64,
5454        0f64,
5455        -0.0004014257279586958f64,
5456    ],
5457    theta0: [
5458        6.166597313146365f64,
5459        0.5012585611727715f64,
5460        3.0962140930379407f64,
5461        5.235987755982989f64,
5462        5.523094417936056f64,
5463        6.0248765778844255f64,
5464        12.33319462629273f64,
5465        1.002517122345543f64,
5466    ],
5467    theta1: [
5468        1321.331180819591f64,
5469        1321.331180819591f64,
5470        -637.14117008679f64,
5471        -126.11574641985825f64,
5472        8.834856673595295f64,
5473        -17.73778118801837f64,
5474        2642.662361639182f64,
5475        2642.662361639182f64,
5476    ],
5477};
5478impl RotationalElements for Janus {
5479    fn rotational_elements(&self, t: f64) -> Elements {
5480        (
5481            RIGHT_ASCENSION_JANUS.angle(t),
5482            DECLINATION_JANUS.angle(t),
5483            ROTATION_JANUS.angle(t),
5484        )
5485    }
5486    fn rotational_element_rates(&self, t: f64) -> Elements {
5487        (
5488            RIGHT_ASCENSION_JANUS.angle_dot(t),
5489            DECLINATION_JANUS.angle_dot(t),
5490            ROTATION_JANUS.angle_dot(t),
5491        )
5492    }
5493}
5494#[doc = "Epimetheus (NAIF ID: 611)."]
5495#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5496#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5497pub struct Epimetheus;
5498impl Origin for Epimetheus {
5499    fn id(&self) -> NaifId {
5500        NaifId(611i32)
5501    }
5502    fn name(&self) -> &'static str {
5503        "Epimetheus"
5504    }
5505}
5506impl Display for Epimetheus {
5507    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5508        write!(f, "{}", self.name())
5509    }
5510}
5511impl From<Epimetheus> for DynOrigin {
5512    fn from(_: Epimetheus) -> Self {
5513        DynOrigin::Epimetheus
5514    }
5515}
5516impl PointMass for Epimetheus {
5517    fn gravitational_parameter(&self) -> GravitationalParameter {
5518        GravitationalParameter::km3_per_s2(0.03512333288208074f64)
5519    }
5520}
5521impl MeanRadius for Epimetheus {
5522    fn mean_radius(&self) -> Distance {
5523        Distance::kilometers(58.2f64)
5524    }
5525}
5526impl TriaxialEllipsoid for Epimetheus {
5527    fn radii(&self) -> Radii {
5528        (
5529            Distance::kilometers(64.9f64),
5530            Distance::kilometers(57.3f64),
5531            Distance::kilometers(53f64),
5532        )
5533    }
5534}
5535const RIGHT_ASCENSION_EPIMETHEUS: RotationalElement<8usize> = RotationalElement {
5536    typ: RotationalElementType::RightAscension,
5537    c0: 0.7082546104592989f64,
5538    c1: -0.0006283185307179586f64,
5539    c2: 0f64,
5540    c: [
5541        -0.05503023131538121f64,
5542        0f64,
5543        0f64,
5544        0f64,
5545        0f64,
5546        0f64,
5547        0.0015009831567151233f64,
5548        0f64,
5549    ],
5550    theta0: [
5551        6.166597313146365f64,
5552        0.5012585611727715f64,
5553        3.0962140930379407f64,
5554        5.235987755982989f64,
5555        5.523094417936056f64,
5556        6.0248765778844255f64,
5557        12.33319462629273f64,
5558        1.002517122345543f64,
5559    ],
5560    theta1: [
5561        1321.331180819591f64,
5562        1321.331180819591f64,
5563        -637.14117008679f64,
5564        -126.11574641985825f64,
5565        8.834856673595295f64,
5566        -17.73778118801837f64,
5567        2642.662361639182f64,
5568        2642.662361639182f64,
5569    ],
5570};
5571const DECLINATION_EPIMETHEUS: RotationalElement<8usize> = RotationalElement {
5572    typ: RotationalElementType::Declination,
5573    c0: 1.457698991265664f64,
5574    c1: -0.00006981317007977319f64,
5575    c2: 0f64,
5576    c: [
5577        -0.006213372137099813f64,
5578        0f64,
5579        0f64,
5580        0f64,
5581        0f64,
5582        0f64,
5583        0.00008726646259971648f64,
5584        0f64,
5585    ],
5586    theta0: [
5587        6.166597313146365f64,
5588        0.5012585611727715f64,
5589        3.0962140930379407f64,
5590        5.235987755982989f64,
5591        5.523094417936056f64,
5592        6.0248765778844255f64,
5593        12.33319462629273f64,
5594        1.002517122345543f64,
5595    ],
5596    theta1: [
5597        1321.331180819591f64,
5598        1321.331180819591f64,
5599        -637.14117008679f64,
5600        -126.11574641985825f64,
5601        8.834856673595295f64,
5602        -17.73778118801837f64,
5603        2642.662361639182f64,
5604        2642.662361639182f64,
5605    ],
5606};
5607const ROTATION_EPIMETHEUS: RotationalElement<8usize> = RotationalElement {
5608    typ: RotationalElementType::Rotation,
5609    c0: 5.128999072835736f64,
5610    c1: 9.049370273103856f64,
5611    c2: 0f64,
5612    c: [
5613        0.05468116546498235f64,
5614        0f64,
5615        0f64,
5616        0f64,
5617        0f64,
5618        0f64,
5619        -0.0015009831567151233f64,
5620        0f64,
5621    ],
5622    theta0: [
5623        6.166597313146365f64,
5624        0.5012585611727715f64,
5625        3.0962140930379407f64,
5626        5.235987755982989f64,
5627        5.523094417936056f64,
5628        6.0248765778844255f64,
5629        12.33319462629273f64,
5630        1.002517122345543f64,
5631    ],
5632    theta1: [
5633        1321.331180819591f64,
5634        1321.331180819591f64,
5635        -637.14117008679f64,
5636        -126.11574641985825f64,
5637        8.834856673595295f64,
5638        -17.73778118801837f64,
5639        2642.662361639182f64,
5640        2642.662361639182f64,
5641    ],
5642};
5643impl RotationalElements for Epimetheus {
5644    fn rotational_elements(&self, t: f64) -> Elements {
5645        (
5646            RIGHT_ASCENSION_EPIMETHEUS.angle(t),
5647            DECLINATION_EPIMETHEUS.angle(t),
5648            ROTATION_EPIMETHEUS.angle(t),
5649        )
5650    }
5651    fn rotational_element_rates(&self, t: f64) -> Elements {
5652        (
5653            RIGHT_ASCENSION_EPIMETHEUS.angle_dot(t),
5654            DECLINATION_EPIMETHEUS.angle_dot(t),
5655            ROTATION_EPIMETHEUS.angle_dot(t),
5656        )
5657    }
5658}
5659#[doc = "Helene (NAIF ID: 612)."]
5660#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5661#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5662pub struct Helene;
5663impl Origin for Helene {
5664    fn id(&self) -> NaifId {
5665        NaifId(612i32)
5666    }
5667    fn name(&self) -> &'static str {
5668        "Helene"
5669    }
5670}
5671impl Display for Helene {
5672    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5673        write!(f, "{}", self.name())
5674    }
5675}
5676impl From<Helene> for DynOrigin {
5677    fn from(_: Helene) -> Self {
5678        DynOrigin::Helene
5679    }
5680}
5681impl PointMass for Helene {
5682    fn gravitational_parameter(&self) -> GravitationalParameter {
5683        GravitationalParameter::km3_per_s2(0.0004757419551776972f64)
5684    }
5685}
5686impl MeanRadius for Helene {
5687    fn mean_radius(&self) -> Distance {
5688        Distance::kilometers(18f64)
5689    }
5690}
5691impl TriaxialEllipsoid for Helene {
5692    fn radii(&self) -> Radii {
5693        (
5694            Distance::kilometers(22.5f64),
5695            Distance::kilometers(19.6f64),
5696            Distance::kilometers(13.3f64),
5697        )
5698    }
5699}
5700const RIGHT_ASCENSION_HELENE: RotationalElement<0usize> = RotationalElement {
5701    typ: RotationalElementType::RightAscension,
5702    c0: 0.7129669994396837f64,
5703    c1: -0.0006283185307179586f64,
5704    c2: 0f64,
5705    c: [],
5706    theta0: [],
5707    theta1: [],
5708};
5709const DECLINATION_HELENE: RotationalElement<0usize> = RotationalElement {
5710    typ: RotationalElementType::Declination,
5711    c0: 1.4545573986120743f64,
5712    c1: -0.00006981317007977319f64,
5713    c2: 0f64,
5714    c: [],
5715    theta0: [],
5716    theta1: [],
5717};
5718const ROTATION_HELENE: RotationalElement<0usize> = RotationalElement {
5719    typ: RotationalElementType::Rotation,
5720    c0: 4.278151062488501f64,
5721    c1: 2.297157080652823f64,
5722    c2: 0f64,
5723    c: [],
5724    theta0: [],
5725    theta1: [],
5726};
5727impl RotationalElements for Helene {
5728    fn rotational_elements(&self, t: f64) -> Elements {
5729        (
5730            RIGHT_ASCENSION_HELENE.angle(t),
5731            DECLINATION_HELENE.angle(t),
5732            ROTATION_HELENE.angle(t),
5733        )
5734    }
5735    fn rotational_element_rates(&self, t: f64) -> Elements {
5736        (
5737            RIGHT_ASCENSION_HELENE.angle_dot(t),
5738            DECLINATION_HELENE.angle_dot(t),
5739            ROTATION_HELENE.angle_dot(t),
5740        )
5741    }
5742}
5743#[doc = "Telesto (NAIF ID: 613)."]
5744#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5745#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5746pub struct Telesto;
5747impl Origin for Telesto {
5748    fn id(&self) -> NaifId {
5749        NaifId(613i32)
5750    }
5751    fn name(&self) -> &'static str {
5752        "Telesto"
5753    }
5754}
5755impl Display for Telesto {
5756    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5757        write!(f, "{}", self.name())
5758    }
5759}
5760impl From<Telesto> for DynOrigin {
5761    fn from(_: Telesto) -> Self {
5762        DynOrigin::Telesto
5763    }
5764}
5765impl MeanRadius for Telesto {
5766    fn mean_radius(&self) -> Distance {
5767        Distance::kilometers(12.4f64)
5768    }
5769}
5770impl TriaxialEllipsoid for Telesto {
5771    fn radii(&self) -> Radii {
5772        (
5773            Distance::kilometers(16.3f64),
5774            Distance::kilometers(11.8f64),
5775            Distance::kilometers(9.8f64),
5776        )
5777    }
5778}
5779const RIGHT_ASCENSION_TELESTO: RotationalElement<0usize> = RotationalElement {
5780    typ: RotationalElementType::RightAscension,
5781    c0: 0.8815658051823358f64,
5782    c1: -0.0006283185307179586f64,
5783    c2: 0f64,
5784    c: [],
5785    theta0: [],
5786    theta1: [],
5787};
5788const DECLINATION_TELESTO: RotationalElement<0usize> = RotationalElement {
5789    typ: RotationalElementType::Declination,
5790    c0: 1.4671237692264334f64,
5791    c1: -0.00006981317007977319f64,
5792    c2: 0f64,
5793    c: [],
5794    theta0: [],
5795    theta1: [],
5796};
5797const ROTATION_TELESTO: RotationalElement<0usize> = RotationalElement {
5798    typ: RotationalElementType::Rotation,
5799    c0: 0.9927432785343747f64,
5800    c1: 3.328306811088206f64,
5801    c2: 0f64,
5802    c: [],
5803    theta0: [],
5804    theta1: [],
5805};
5806impl RotationalElements for Telesto {
5807    fn rotational_elements(&self, t: f64) -> Elements {
5808        (
5809            RIGHT_ASCENSION_TELESTO.angle(t),
5810            DECLINATION_TELESTO.angle(t),
5811            ROTATION_TELESTO.angle(t),
5812        )
5813    }
5814    fn rotational_element_rates(&self, t: f64) -> Elements {
5815        (
5816            RIGHT_ASCENSION_TELESTO.angle_dot(t),
5817            DECLINATION_TELESTO.angle_dot(t),
5818            ROTATION_TELESTO.angle_dot(t),
5819        )
5820    }
5821}
5822#[doc = "Calypso (NAIF ID: 614)."]
5823#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5824#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5825pub struct Calypso;
5826impl Origin for Calypso {
5827    fn id(&self) -> NaifId {
5828        NaifId(614i32)
5829    }
5830    fn name(&self) -> &'static str {
5831        "Calypso"
5832    }
5833}
5834impl Display for Calypso {
5835    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5836        write!(f, "{}", self.name())
5837    }
5838}
5839impl From<Calypso> for DynOrigin {
5840    fn from(_: Calypso) -> Self {
5841        DynOrigin::Calypso
5842    }
5843}
5844impl MeanRadius for Calypso {
5845    fn mean_radius(&self) -> Distance {
5846        Distance::kilometers(9.6f64)
5847    }
5848}
5849impl TriaxialEllipsoid for Calypso {
5850    fn radii(&self) -> Radii {
5851        (
5852            Distance::kilometers(15.3f64),
5853            Distance::kilometers(9.3f64),
5854            Distance::kilometers(6.3f64),
5855        )
5856    }
5857}
5858const RIGHT_ASCENSION_CALYPSO: RotationalElement<0usize> = RotationalElement {
5859    typ: RotationalElementType::RightAscension,
5860    c0: 0.6354743806511354f64,
5861    c1: -0.0006283185307179586f64,
5862    c2: 0f64,
5863    c: [],
5864    theta0: [],
5865    theta1: [],
5866};
5867const DECLINATION_CALYPSO: RotationalElement<0usize> = RotationalElement {
5868    typ: RotationalElementType::Declination,
5869    c0: 1.4842279958959779f64,
5870    c1: -0.00006981317007977319f64,
5871    c2: 0f64,
5872    c: [],
5873    theta0: [],
5874    theta1: [],
5875};
5876const ROTATION_CALYPSO: RotationalElement<0usize> = RotationalElement {
5877    typ: RotationalElementType::Rotation,
5878    c0: 2.679254934736495f64,
5879    c1: 3.327893239613983f64,
5880    c2: 0f64,
5881    c: [],
5882    theta0: [],
5883    theta1: [],
5884};
5885impl RotationalElements for Calypso {
5886    fn rotational_elements(&self, t: f64) -> Elements {
5887        (
5888            RIGHT_ASCENSION_CALYPSO.angle(t),
5889            DECLINATION_CALYPSO.angle(t),
5890            ROTATION_CALYPSO.angle(t),
5891        )
5892    }
5893    fn rotational_element_rates(&self, t: f64) -> Elements {
5894        (
5895            RIGHT_ASCENSION_CALYPSO.angle_dot(t),
5896            DECLINATION_CALYPSO.angle_dot(t),
5897            ROTATION_CALYPSO.angle_dot(t),
5898        )
5899    }
5900}
5901#[doc = "Atlas (NAIF ID: 615)."]
5902#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5903#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5904pub struct Atlas;
5905impl Origin for Atlas {
5906    fn id(&self) -> NaifId {
5907        NaifId(615i32)
5908    }
5909    fn name(&self) -> &'static str {
5910        "Atlas"
5911    }
5912}
5913impl Display for Atlas {
5914    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5915        write!(f, "{}", self.name())
5916    }
5917}
5918impl From<Atlas> for DynOrigin {
5919    fn from(_: Atlas) -> Self {
5920        DynOrigin::Atlas
5921    }
5922}
5923impl PointMass for Atlas {
5924    fn gravitational_parameter(&self) -> GravitationalParameter {
5925        GravitationalParameter::km3_per_s2(0.0003718871247516475f64)
5926    }
5927}
5928impl MeanRadius for Atlas {
5929    fn mean_radius(&self) -> Distance {
5930        Distance::kilometers(15.1f64)
5931    }
5932}
5933impl TriaxialEllipsoid for Atlas {
5934    fn radii(&self) -> Radii {
5935        (
5936            Distance::kilometers(20.5f64),
5937            Distance::kilometers(17.8f64),
5938            Distance::kilometers(9.4f64),
5939        )
5940    }
5941}
5942const RIGHT_ASCENSION_ATLAS: RotationalElement<0usize> = RotationalElement {
5943    typ: RotationalElementType::RightAscension,
5944    c0: 0.7082546104592989f64,
5945    c1: -0.0006283185307179586f64,
5946    c2: 0f64,
5947    c: [],
5948    theta0: [],
5949    theta1: [],
5950};
5951const DECLINATION_ATLAS: RotationalElement<0usize> = RotationalElement {
5952    typ: RotationalElementType::Declination,
5953    c0: 1.4578735241908636f64,
5954    c1: -0.00006981317007977319f64,
5955    c2: 0f64,
5956    c: [],
5957    theta0: [],
5958    theta1: [],
5959};
5960const ROTATION_ATLAS: RotationalElement<0usize> = RotationalElement {
5961    typ: RotationalElementType::Rotation,
5962    c0: 2.4064599726497815f64,
5963    c1: 10.442409634437194f64,
5964    c2: 0f64,
5965    c: [],
5966    theta0: [],
5967    theta1: [],
5968};
5969impl RotationalElements for Atlas {
5970    fn rotational_elements(&self, t: f64) -> Elements {
5971        (
5972            RIGHT_ASCENSION_ATLAS.angle(t),
5973            DECLINATION_ATLAS.angle(t),
5974            ROTATION_ATLAS.angle(t),
5975        )
5976    }
5977    fn rotational_element_rates(&self, t: f64) -> Elements {
5978        (
5979            RIGHT_ASCENSION_ATLAS.angle_dot(t),
5980            DECLINATION_ATLAS.angle_dot(t),
5981            ROTATION_ATLAS.angle_dot(t),
5982        )
5983    }
5984}
5985#[doc = "Prometheus (NAIF ID: 616)."]
5986#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5987#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5988pub struct Prometheus;
5989impl Origin for Prometheus {
5990    fn id(&self) -> NaifId {
5991        NaifId(616i32)
5992    }
5993    fn name(&self) -> &'static str {
5994        "Prometheus"
5995    }
5996}
5997impl Display for Prometheus {
5998    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5999        write!(f, "{}", self.name())
6000    }
6001}
6002impl From<Prometheus> for DynOrigin {
6003    fn from(_: Prometheus) -> Self {
6004        DynOrigin::Prometheus
6005    }
6006}
6007impl PointMass for Prometheus {
6008    fn gravitational_parameter(&self) -> GravitationalParameter {
6009        GravitationalParameter::km3_per_s2(0.0107520800100761f64)
6010    }
6011}
6012impl MeanRadius for Prometheus {
6013    fn mean_radius(&self) -> Distance {
6014        Distance::kilometers(43.1f64)
6015    }
6016}
6017impl TriaxialEllipsoid for Prometheus {
6018    fn radii(&self) -> Radii {
6019        (
6020            Distance::kilometers(68.2f64),
6021            Distance::kilometers(41.6f64),
6022            Distance::kilometers(28.2f64),
6023        )
6024    }
6025}
6026const RIGHT_ASCENSION_PROMETHEUS: RotationalElement<0usize> = RotationalElement {
6027    typ: RotationalElementType::RightAscension,
6028    c0: 0.7082546104592989f64,
6029    c1: -0.0006283185307179586f64,
6030    c2: 0f64,
6031    c: [],
6032    theta0: [],
6033    theta1: [],
6034};
6035const DECLINATION_PROMETHEUS: RotationalElement<0usize> = RotationalElement {
6036    typ: RotationalElementType::Declination,
6037    c0: 1.4578735241908636f64,
6038    c1: -0.00006981317007977319f64,
6039    c2: 0f64,
6040    c: [],
6041    theta0: [],
6042    theta1: [],
6043};
6044const ROTATION_PROMETHEUS: RotationalElement<0usize> = RotationalElement {
6045    typ: RotationalElementType::Rotation,
6046    c0: 5.1686180468560075f64,
6047    c1: 10.250126710744977f64,
6048    c2: 0f64,
6049    c: [],
6050    theta0: [],
6051    theta1: [],
6052};
6053impl RotationalElements for Prometheus {
6054    fn rotational_elements(&self, t: f64) -> Elements {
6055        (
6056            RIGHT_ASCENSION_PROMETHEUS.angle(t),
6057            DECLINATION_PROMETHEUS.angle(t),
6058            ROTATION_PROMETHEUS.angle(t),
6059        )
6060    }
6061    fn rotational_element_rates(&self, t: f64) -> Elements {
6062        (
6063            RIGHT_ASCENSION_PROMETHEUS.angle_dot(t),
6064            DECLINATION_PROMETHEUS.angle_dot(t),
6065            ROTATION_PROMETHEUS.angle_dot(t),
6066        )
6067    }
6068}
6069#[doc = "Pandora (NAIF ID: 617)."]
6070#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6071#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6072pub struct Pandora;
6073impl Origin for Pandora {
6074    fn id(&self) -> NaifId {
6075        NaifId(617i32)
6076    }
6077    fn name(&self) -> &'static str {
6078        "Pandora"
6079    }
6080}
6081impl Display for Pandora {
6082    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6083        write!(f, "{}", self.name())
6084    }
6085}
6086impl From<Pandora> for DynOrigin {
6087    fn from(_: Pandora) -> Self {
6088        DynOrigin::Pandora
6089    }
6090}
6091impl PointMass for Pandora {
6092    fn gravitational_parameter(&self) -> GravitationalParameter {
6093        GravitationalParameter::km3_per_s2(0.009290325122028795f64)
6094    }
6095}
6096impl MeanRadius for Pandora {
6097    fn mean_radius(&self) -> Distance {
6098        Distance::kilometers(40.6f64)
6099    }
6100}
6101impl TriaxialEllipsoid for Pandora {
6102    fn radii(&self) -> Radii {
6103        (
6104            Distance::kilometers(52.2f64),
6105            Distance::kilometers(40.8f64),
6106            Distance::kilometers(31.5f64),
6107        )
6108    }
6109}
6110const RIGHT_ASCENSION_PANDORA: RotationalElement<0usize> = RotationalElement {
6111    typ: RotationalElementType::RightAscension,
6112    c0: 0.7082546104592989f64,
6113    c1: -0.0006283185307179586f64,
6114    c2: 0f64,
6115    c: [],
6116    theta0: [],
6117    theta1: [],
6118};
6119const DECLINATION_PANDORA: RotationalElement<0usize> = RotationalElement {
6120    typ: RotationalElementType::Declination,
6121    c0: 1.4578735241908636f64,
6122    c1: -0.00006981317007977319f64,
6123    c2: 0f64,
6124    c: [],
6125    theta0: [],
6126    theta1: [],
6127};
6128const ROTATION_PANDORA: RotationalElement<0usize> = RotationalElement {
6129    typ: RotationalElementType::Rotation,
6130    c0: 2.8434904173491615f64,
6131    c1: 9.997055714535051f64,
6132    c2: 0f64,
6133    c: [],
6134    theta0: [],
6135    theta1: [],
6136};
6137impl RotationalElements for Pandora {
6138    fn rotational_elements(&self, t: f64) -> Elements {
6139        (
6140            RIGHT_ASCENSION_PANDORA.angle(t),
6141            DECLINATION_PANDORA.angle(t),
6142            ROTATION_PANDORA.angle(t),
6143        )
6144    }
6145    fn rotational_element_rates(&self, t: f64) -> Elements {
6146        (
6147            RIGHT_ASCENSION_PANDORA.angle_dot(t),
6148            DECLINATION_PANDORA.angle_dot(t),
6149            ROTATION_PANDORA.angle_dot(t),
6150        )
6151    }
6152}
6153#[doc = "Pan (NAIF ID: 618)."]
6154#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6155#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6156pub struct Pan;
6157impl Origin for Pan {
6158    fn id(&self) -> NaifId {
6159        NaifId(618i32)
6160    }
6161    fn name(&self) -> &'static str {
6162        "Pan"
6163    }
6164}
6165impl Display for Pan {
6166    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6167        write!(f, "{}", self.name())
6168    }
6169}
6170impl From<Pan> for DynOrigin {
6171    fn from(_: Pan) -> Self {
6172        DynOrigin::Pan
6173    }
6174}
6175impl MeanRadius for Pan {
6176    fn mean_radius(&self) -> Distance {
6177        Distance::kilometers(14f64)
6178    }
6179}
6180impl TriaxialEllipsoid for Pan {
6181    fn radii(&self) -> Radii {
6182        (
6183            Distance::kilometers(17.2f64),
6184            Distance::kilometers(15.4f64),
6185            Distance::kilometers(10.4f64),
6186        )
6187    }
6188}
6189const RIGHT_ASCENSION_PAN: RotationalElement<0usize> = RotationalElement {
6190    typ: RotationalElementType::RightAscension,
6191    c0: 0.7086036763096978f64,
6192    c1: -0.0006283185307179586f64,
6193    c2: 0f64,
6194    c: [],
6195    theta0: [],
6196    theta1: [],
6197};
6198const DECLINATION_PAN: RotationalElement<0usize> = RotationalElement {
6199    typ: RotationalElementType::Declination,
6200    c0: 1.457349925415265f64,
6201    c1: -0.00006981317007977319f64,
6202    c2: 0f64,
6203    c: [],
6204    theta0: [],
6205    theta1: [],
6206};
6207const ROTATION_PAN: RotationalElement<0usize> = RotationalElement {
6208    typ: RotationalElementType::Rotation,
6209    c0: 0.8517206749732328f64,
6210    c1: 10.92652906235538f64,
6211    c2: 0f64,
6212    c: [],
6213    theta0: [],
6214    theta1: [],
6215};
6216impl RotationalElements for Pan {
6217    fn rotational_elements(&self, t: f64) -> Elements {
6218        (
6219            RIGHT_ASCENSION_PAN.angle(t),
6220            DECLINATION_PAN.angle(t),
6221            ROTATION_PAN.angle(t),
6222        )
6223    }
6224    fn rotational_element_rates(&self, t: f64) -> Elements {
6225        (
6226            RIGHT_ASCENSION_PAN.angle_dot(t),
6227            DECLINATION_PAN.angle_dot(t),
6228            ROTATION_PAN.angle_dot(t),
6229        )
6230    }
6231}
6232#[doc = "Ymir (NAIF ID: 619)."]
6233#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6234#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6235pub struct Ymir;
6236impl Origin for Ymir {
6237    fn id(&self) -> NaifId {
6238        NaifId(619i32)
6239    }
6240    fn name(&self) -> &'static str {
6241        "Ymir"
6242    }
6243}
6244impl Display for Ymir {
6245    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6246        write!(f, "{}", self.name())
6247    }
6248}
6249impl From<Ymir> for DynOrigin {
6250    fn from(_: Ymir) -> Self {
6251        DynOrigin::Ymir
6252    }
6253}
6254#[doc = "Paaliaq (NAIF ID: 620)."]
6255#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6256#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6257pub struct Paaliaq;
6258impl Origin for Paaliaq {
6259    fn id(&self) -> NaifId {
6260        NaifId(620i32)
6261    }
6262    fn name(&self) -> &'static str {
6263        "Paaliaq"
6264    }
6265}
6266impl Display for Paaliaq {
6267    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6268        write!(f, "{}", self.name())
6269    }
6270}
6271impl From<Paaliaq> for DynOrigin {
6272    fn from(_: Paaliaq) -> Self {
6273        DynOrigin::Paaliaq
6274    }
6275}
6276#[doc = "Tarvos (NAIF ID: 621)."]
6277#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6278#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6279pub struct Tarvos;
6280impl Origin for Tarvos {
6281    fn id(&self) -> NaifId {
6282        NaifId(621i32)
6283    }
6284    fn name(&self) -> &'static str {
6285        "Tarvos"
6286    }
6287}
6288impl Display for Tarvos {
6289    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6290        write!(f, "{}", self.name())
6291    }
6292}
6293impl From<Tarvos> for DynOrigin {
6294    fn from(_: Tarvos) -> Self {
6295        DynOrigin::Tarvos
6296    }
6297}
6298#[doc = "Ijiraq (NAIF ID: 622)."]
6299#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6300#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6301pub struct Ijiraq;
6302impl Origin for Ijiraq {
6303    fn id(&self) -> NaifId {
6304        NaifId(622i32)
6305    }
6306    fn name(&self) -> &'static str {
6307        "Ijiraq"
6308    }
6309}
6310impl Display for Ijiraq {
6311    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6312        write!(f, "{}", self.name())
6313    }
6314}
6315impl From<Ijiraq> for DynOrigin {
6316    fn from(_: Ijiraq) -> Self {
6317        DynOrigin::Ijiraq
6318    }
6319}
6320#[doc = "Suttungr (NAIF ID: 623)."]
6321#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6322#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6323pub struct Suttungr;
6324impl Origin for Suttungr {
6325    fn id(&self) -> NaifId {
6326        NaifId(623i32)
6327    }
6328    fn name(&self) -> &'static str {
6329        "Suttungr"
6330    }
6331}
6332impl Display for Suttungr {
6333    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6334        write!(f, "{}", self.name())
6335    }
6336}
6337impl From<Suttungr> for DynOrigin {
6338    fn from(_: Suttungr) -> Self {
6339        DynOrigin::Suttungr
6340    }
6341}
6342#[doc = "Kiviuq (NAIF ID: 624)."]
6343#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6344#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6345pub struct Kiviuq;
6346impl Origin for Kiviuq {
6347    fn id(&self) -> NaifId {
6348        NaifId(624i32)
6349    }
6350    fn name(&self) -> &'static str {
6351        "Kiviuq"
6352    }
6353}
6354impl Display for Kiviuq {
6355    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6356        write!(f, "{}", self.name())
6357    }
6358}
6359impl From<Kiviuq> for DynOrigin {
6360    fn from(_: Kiviuq) -> Self {
6361        DynOrigin::Kiviuq
6362    }
6363}
6364#[doc = "Mundilfari (NAIF ID: 625)."]
6365#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6366#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6367pub struct Mundilfari;
6368impl Origin for Mundilfari {
6369    fn id(&self) -> NaifId {
6370        NaifId(625i32)
6371    }
6372    fn name(&self) -> &'static str {
6373        "Mundilfari"
6374    }
6375}
6376impl Display for Mundilfari {
6377    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6378        write!(f, "{}", self.name())
6379    }
6380}
6381impl From<Mundilfari> for DynOrigin {
6382    fn from(_: Mundilfari) -> Self {
6383        DynOrigin::Mundilfari
6384    }
6385}
6386#[doc = "Albiorix (NAIF ID: 626)."]
6387#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6388#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6389pub struct Albiorix;
6390impl Origin for Albiorix {
6391    fn id(&self) -> NaifId {
6392        NaifId(626i32)
6393    }
6394    fn name(&self) -> &'static str {
6395        "Albiorix"
6396    }
6397}
6398impl Display for Albiorix {
6399    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6400        write!(f, "{}", self.name())
6401    }
6402}
6403impl From<Albiorix> for DynOrigin {
6404    fn from(_: Albiorix) -> Self {
6405        DynOrigin::Albiorix
6406    }
6407}
6408#[doc = "Skathi (NAIF ID: 627)."]
6409#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6410#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6411pub struct Skathi;
6412impl Origin for Skathi {
6413    fn id(&self) -> NaifId {
6414        NaifId(627i32)
6415    }
6416    fn name(&self) -> &'static str {
6417        "Skathi"
6418    }
6419}
6420impl Display for Skathi {
6421    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6422        write!(f, "{}", self.name())
6423    }
6424}
6425impl From<Skathi> for DynOrigin {
6426    fn from(_: Skathi) -> Self {
6427        DynOrigin::Skathi
6428    }
6429}
6430#[doc = "Erriapus (NAIF ID: 628)."]
6431#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6432#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6433pub struct Erriapus;
6434impl Origin for Erriapus {
6435    fn id(&self) -> NaifId {
6436        NaifId(628i32)
6437    }
6438    fn name(&self) -> &'static str {
6439        "Erriapus"
6440    }
6441}
6442impl Display for Erriapus {
6443    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6444        write!(f, "{}", self.name())
6445    }
6446}
6447impl From<Erriapus> for DynOrigin {
6448    fn from(_: Erriapus) -> Self {
6449        DynOrigin::Erriapus
6450    }
6451}
6452#[doc = "Siarnaq (NAIF ID: 629)."]
6453#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6454#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6455pub struct Siarnaq;
6456impl Origin for Siarnaq {
6457    fn id(&self) -> NaifId {
6458        NaifId(629i32)
6459    }
6460    fn name(&self) -> &'static str {
6461        "Siarnaq"
6462    }
6463}
6464impl Display for Siarnaq {
6465    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6466        write!(f, "{}", self.name())
6467    }
6468}
6469impl From<Siarnaq> for DynOrigin {
6470    fn from(_: Siarnaq) -> Self {
6471        DynOrigin::Siarnaq
6472    }
6473}
6474#[doc = "Thrymr (NAIF ID: 630)."]
6475#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6476#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6477pub struct Thrymr;
6478impl Origin for Thrymr {
6479    fn id(&self) -> NaifId {
6480        NaifId(630i32)
6481    }
6482    fn name(&self) -> &'static str {
6483        "Thrymr"
6484    }
6485}
6486impl Display for Thrymr {
6487    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6488        write!(f, "{}", self.name())
6489    }
6490}
6491impl From<Thrymr> for DynOrigin {
6492    fn from(_: Thrymr) -> Self {
6493        DynOrigin::Thrymr
6494    }
6495}
6496#[doc = "Narvi (NAIF ID: 631)."]
6497#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6498#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6499pub struct Narvi;
6500impl Origin for Narvi {
6501    fn id(&self) -> NaifId {
6502        NaifId(631i32)
6503    }
6504    fn name(&self) -> &'static str {
6505        "Narvi"
6506    }
6507}
6508impl Display for Narvi {
6509    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6510        write!(f, "{}", self.name())
6511    }
6512}
6513impl From<Narvi> for DynOrigin {
6514    fn from(_: Narvi) -> Self {
6515        DynOrigin::Narvi
6516    }
6517}
6518#[doc = "Methone (NAIF ID: 632)."]
6519#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6520#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6521pub struct Methone;
6522impl Origin for Methone {
6523    fn id(&self) -> NaifId {
6524        NaifId(632i32)
6525    }
6526    fn name(&self) -> &'static str {
6527        "Methone"
6528    }
6529}
6530impl Display for Methone {
6531    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6532        write!(f, "{}", self.name())
6533    }
6534}
6535impl From<Methone> for DynOrigin {
6536    fn from(_: Methone) -> Self {
6537        DynOrigin::Methone
6538    }
6539}
6540impl MeanRadius for Methone {
6541    fn mean_radius(&self) -> Distance {
6542        Distance::kilometers(1.45f64)
6543    }
6544}
6545impl TriaxialEllipsoid for Methone {
6546    fn radii(&self) -> Radii {
6547        (
6548            Distance::kilometers(1.94f64),
6549            Distance::kilometers(1.29f64),
6550            Distance::kilometers(1.21f64),
6551        )
6552    }
6553}
6554#[doc = "Pallene (NAIF ID: 633)."]
6555#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6556#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6557pub struct Pallene;
6558impl Origin for Pallene {
6559    fn id(&self) -> NaifId {
6560        NaifId(633i32)
6561    }
6562    fn name(&self) -> &'static str {
6563        "Pallene"
6564    }
6565}
6566impl Display for Pallene {
6567    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6568        write!(f, "{}", self.name())
6569    }
6570}
6571impl From<Pallene> for DynOrigin {
6572    fn from(_: Pallene) -> Self {
6573        DynOrigin::Pallene
6574    }
6575}
6576impl MeanRadius for Pallene {
6577    fn mean_radius(&self) -> Distance {
6578        Distance::kilometers(2.23f64)
6579    }
6580}
6581impl TriaxialEllipsoid for Pallene {
6582    fn radii(&self) -> Radii {
6583        (
6584            Distance::kilometers(2.88f64),
6585            Distance::kilometers(2.08f64),
6586            Distance::kilometers(1.8f64),
6587        )
6588    }
6589}
6590#[doc = "Polydeuces (NAIF ID: 634)."]
6591#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6592#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6593pub struct Polydeuces;
6594impl Origin for Polydeuces {
6595    fn id(&self) -> NaifId {
6596        NaifId(634i32)
6597    }
6598    fn name(&self) -> &'static str {
6599        "Polydeuces"
6600    }
6601}
6602impl Display for Polydeuces {
6603    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6604        write!(f, "{}", self.name())
6605    }
6606}
6607impl From<Polydeuces> for DynOrigin {
6608    fn from(_: Polydeuces) -> Self {
6609        DynOrigin::Polydeuces
6610    }
6611}
6612impl MeanRadius for Polydeuces {
6613    fn mean_radius(&self) -> Distance {
6614        Distance::kilometers(1.3f64)
6615    }
6616}
6617impl TriaxialEllipsoid for Polydeuces {
6618    fn radii(&self) -> Radii {
6619        (
6620            Distance::kilometers(1.5f64),
6621            Distance::kilometers(1.2f64),
6622            Distance::kilometers(1f64),
6623        )
6624    }
6625}
6626#[doc = "Daphnis (NAIF ID: 635)."]
6627#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6628#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6629pub struct Daphnis;
6630impl Origin for Daphnis {
6631    fn id(&self) -> NaifId {
6632        NaifId(635i32)
6633    }
6634    fn name(&self) -> &'static str {
6635        "Daphnis"
6636    }
6637}
6638impl Display for Daphnis {
6639    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6640        write!(f, "{}", self.name())
6641    }
6642}
6643impl From<Daphnis> for DynOrigin {
6644    fn from(_: Daphnis) -> Self {
6645        DynOrigin::Daphnis
6646    }
6647}
6648impl MeanRadius for Daphnis {
6649    fn mean_radius(&self) -> Distance {
6650        Distance::kilometers(3.8f64)
6651    }
6652}
6653impl TriaxialEllipsoid for Daphnis {
6654    fn radii(&self) -> Radii {
6655        (
6656            Distance::kilometers(4.6f64),
6657            Distance::kilometers(4.5f64),
6658            Distance::kilometers(2.8f64),
6659        )
6660    }
6661}
6662#[doc = "Aegir (NAIF ID: 636)."]
6663#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6664#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6665pub struct Aegir;
6666impl Origin for Aegir {
6667    fn id(&self) -> NaifId {
6668        NaifId(636i32)
6669    }
6670    fn name(&self) -> &'static str {
6671        "Aegir"
6672    }
6673}
6674impl Display for Aegir {
6675    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6676        write!(f, "{}", self.name())
6677    }
6678}
6679impl From<Aegir> for DynOrigin {
6680    fn from(_: Aegir) -> Self {
6681        DynOrigin::Aegir
6682    }
6683}
6684#[doc = "Bebhionn (NAIF ID: 637)."]
6685#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6686#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6687pub struct Bebhionn;
6688impl Origin for Bebhionn {
6689    fn id(&self) -> NaifId {
6690        NaifId(637i32)
6691    }
6692    fn name(&self) -> &'static str {
6693        "Bebhionn"
6694    }
6695}
6696impl Display for Bebhionn {
6697    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6698        write!(f, "{}", self.name())
6699    }
6700}
6701impl From<Bebhionn> for DynOrigin {
6702    fn from(_: Bebhionn) -> Self {
6703        DynOrigin::Bebhionn
6704    }
6705}
6706#[doc = "Bergelmir (NAIF ID: 638)."]
6707#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6708#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6709pub struct Bergelmir;
6710impl Origin for Bergelmir {
6711    fn id(&self) -> NaifId {
6712        NaifId(638i32)
6713    }
6714    fn name(&self) -> &'static str {
6715        "Bergelmir"
6716    }
6717}
6718impl Display for Bergelmir {
6719    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6720        write!(f, "{}", self.name())
6721    }
6722}
6723impl From<Bergelmir> for DynOrigin {
6724    fn from(_: Bergelmir) -> Self {
6725        DynOrigin::Bergelmir
6726    }
6727}
6728#[doc = "Bestla (NAIF ID: 639)."]
6729#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6730#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6731pub struct Bestla;
6732impl Origin for Bestla {
6733    fn id(&self) -> NaifId {
6734        NaifId(639i32)
6735    }
6736    fn name(&self) -> &'static str {
6737        "Bestla"
6738    }
6739}
6740impl Display for Bestla {
6741    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6742        write!(f, "{}", self.name())
6743    }
6744}
6745impl From<Bestla> for DynOrigin {
6746    fn from(_: Bestla) -> Self {
6747        DynOrigin::Bestla
6748    }
6749}
6750#[doc = "Farbauti (NAIF ID: 640)."]
6751#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6752#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6753pub struct Farbauti;
6754impl Origin for Farbauti {
6755    fn id(&self) -> NaifId {
6756        NaifId(640i32)
6757    }
6758    fn name(&self) -> &'static str {
6759        "Farbauti"
6760    }
6761}
6762impl Display for Farbauti {
6763    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6764        write!(f, "{}", self.name())
6765    }
6766}
6767impl From<Farbauti> for DynOrigin {
6768    fn from(_: Farbauti) -> Self {
6769        DynOrigin::Farbauti
6770    }
6771}
6772#[doc = "Fenrir (NAIF ID: 641)."]
6773#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6774#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6775pub struct Fenrir;
6776impl Origin for Fenrir {
6777    fn id(&self) -> NaifId {
6778        NaifId(641i32)
6779    }
6780    fn name(&self) -> &'static str {
6781        "Fenrir"
6782    }
6783}
6784impl Display for Fenrir {
6785    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6786        write!(f, "{}", self.name())
6787    }
6788}
6789impl From<Fenrir> for DynOrigin {
6790    fn from(_: Fenrir) -> Self {
6791        DynOrigin::Fenrir
6792    }
6793}
6794#[doc = "Fornjot (NAIF ID: 642)."]
6795#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6796#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6797pub struct Fornjot;
6798impl Origin for Fornjot {
6799    fn id(&self) -> NaifId {
6800        NaifId(642i32)
6801    }
6802    fn name(&self) -> &'static str {
6803        "Fornjot"
6804    }
6805}
6806impl Display for Fornjot {
6807    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6808        write!(f, "{}", self.name())
6809    }
6810}
6811impl From<Fornjot> for DynOrigin {
6812    fn from(_: Fornjot) -> Self {
6813        DynOrigin::Fornjot
6814    }
6815}
6816#[doc = "Hati (NAIF ID: 643)."]
6817#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6818#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6819pub struct Hati;
6820impl Origin for Hati {
6821    fn id(&self) -> NaifId {
6822        NaifId(643i32)
6823    }
6824    fn name(&self) -> &'static str {
6825        "Hati"
6826    }
6827}
6828impl Display for Hati {
6829    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6830        write!(f, "{}", self.name())
6831    }
6832}
6833impl From<Hati> for DynOrigin {
6834    fn from(_: Hati) -> Self {
6835        DynOrigin::Hati
6836    }
6837}
6838#[doc = "Hyrrokkin (NAIF ID: 644)."]
6839#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6840#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6841pub struct Hyrrokkin;
6842impl Origin for Hyrrokkin {
6843    fn id(&self) -> NaifId {
6844        NaifId(644i32)
6845    }
6846    fn name(&self) -> &'static str {
6847        "Hyrrokkin"
6848    }
6849}
6850impl Display for Hyrrokkin {
6851    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6852        write!(f, "{}", self.name())
6853    }
6854}
6855impl From<Hyrrokkin> for DynOrigin {
6856    fn from(_: Hyrrokkin) -> Self {
6857        DynOrigin::Hyrrokkin
6858    }
6859}
6860#[doc = "Kari (NAIF ID: 645)."]
6861#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6862#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6863pub struct Kari;
6864impl Origin for Kari {
6865    fn id(&self) -> NaifId {
6866        NaifId(645i32)
6867    }
6868    fn name(&self) -> &'static str {
6869        "Kari"
6870    }
6871}
6872impl Display for Kari {
6873    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6874        write!(f, "{}", self.name())
6875    }
6876}
6877impl From<Kari> for DynOrigin {
6878    fn from(_: Kari) -> Self {
6879        DynOrigin::Kari
6880    }
6881}
6882#[doc = "Loge (NAIF ID: 646)."]
6883#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6884#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6885pub struct Loge;
6886impl Origin for Loge {
6887    fn id(&self) -> NaifId {
6888        NaifId(646i32)
6889    }
6890    fn name(&self) -> &'static str {
6891        "Loge"
6892    }
6893}
6894impl Display for Loge {
6895    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6896        write!(f, "{}", self.name())
6897    }
6898}
6899impl From<Loge> for DynOrigin {
6900    fn from(_: Loge) -> Self {
6901        DynOrigin::Loge
6902    }
6903}
6904#[doc = "Skoll (NAIF ID: 647)."]
6905#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6906#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6907pub struct Skoll;
6908impl Origin for Skoll {
6909    fn id(&self) -> NaifId {
6910        NaifId(647i32)
6911    }
6912    fn name(&self) -> &'static str {
6913        "Skoll"
6914    }
6915}
6916impl Display for Skoll {
6917    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6918        write!(f, "{}", self.name())
6919    }
6920}
6921impl From<Skoll> for DynOrigin {
6922    fn from(_: Skoll) -> Self {
6923        DynOrigin::Skoll
6924    }
6925}
6926#[doc = "Surtur (NAIF ID: 648)."]
6927#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6928#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6929pub struct Surtur;
6930impl Origin for Surtur {
6931    fn id(&self) -> NaifId {
6932        NaifId(648i32)
6933    }
6934    fn name(&self) -> &'static str {
6935        "Surtur"
6936    }
6937}
6938impl Display for Surtur {
6939    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6940        write!(f, "{}", self.name())
6941    }
6942}
6943impl From<Surtur> for DynOrigin {
6944    fn from(_: Surtur) -> Self {
6945        DynOrigin::Surtur
6946    }
6947}
6948#[doc = "Anthe (NAIF ID: 649)."]
6949#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6950#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6951pub struct Anthe;
6952impl Origin for Anthe {
6953    fn id(&self) -> NaifId {
6954        NaifId(649i32)
6955    }
6956    fn name(&self) -> &'static str {
6957        "Anthe"
6958    }
6959}
6960impl Display for Anthe {
6961    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6962        write!(f, "{}", self.name())
6963    }
6964}
6965impl From<Anthe> for DynOrigin {
6966    fn from(_: Anthe) -> Self {
6967        DynOrigin::Anthe
6968    }
6969}
6970impl MeanRadius for Anthe {
6971    fn mean_radius(&self) -> Distance {
6972        Distance::kilometers(0.5f64)
6973    }
6974}
6975impl TriaxialEllipsoid for Anthe {
6976    fn radii(&self) -> Radii {
6977        (
6978            Distance::kilometers(0.5f64),
6979            Distance::kilometers(0.5f64),
6980            Distance::kilometers(0.5f64),
6981        )
6982    }
6983}
6984impl Spheroid for Anthe {}
6985#[doc = "Jarnsaxa (NAIF ID: 650)."]
6986#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6987#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6988pub struct Jarnsaxa;
6989impl Origin for Jarnsaxa {
6990    fn id(&self) -> NaifId {
6991        NaifId(650i32)
6992    }
6993    fn name(&self) -> &'static str {
6994        "Jarnsaxa"
6995    }
6996}
6997impl Display for Jarnsaxa {
6998    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
6999        write!(f, "{}", self.name())
7000    }
7001}
7002impl From<Jarnsaxa> for DynOrigin {
7003    fn from(_: Jarnsaxa) -> Self {
7004        DynOrigin::Jarnsaxa
7005    }
7006}
7007#[doc = "Greip (NAIF ID: 651)."]
7008#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7009#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7010pub struct Greip;
7011impl Origin for Greip {
7012    fn id(&self) -> NaifId {
7013        NaifId(651i32)
7014    }
7015    fn name(&self) -> &'static str {
7016        "Greip"
7017    }
7018}
7019impl Display for Greip {
7020    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7021        write!(f, "{}", self.name())
7022    }
7023}
7024impl From<Greip> for DynOrigin {
7025    fn from(_: Greip) -> Self {
7026        DynOrigin::Greip
7027    }
7028}
7029#[doc = "Tarqeq (NAIF ID: 652)."]
7030#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7031#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7032pub struct Tarqeq;
7033impl Origin for Tarqeq {
7034    fn id(&self) -> NaifId {
7035        NaifId(652i32)
7036    }
7037    fn name(&self) -> &'static str {
7038        "Tarqeq"
7039    }
7040}
7041impl Display for Tarqeq {
7042    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7043        write!(f, "{}", self.name())
7044    }
7045}
7046impl From<Tarqeq> for DynOrigin {
7047    fn from(_: Tarqeq) -> Self {
7048        DynOrigin::Tarqeq
7049    }
7050}
7051#[doc = "Aegaeon (NAIF ID: 653)."]
7052#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7053#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7054pub struct Aegaeon;
7055impl Origin for Aegaeon {
7056    fn id(&self) -> NaifId {
7057        NaifId(653i32)
7058    }
7059    fn name(&self) -> &'static str {
7060        "Aegaeon"
7061    }
7062}
7063impl Display for Aegaeon {
7064    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7065        write!(f, "{}", self.name())
7066    }
7067}
7068impl From<Aegaeon> for DynOrigin {
7069    fn from(_: Aegaeon) -> Self {
7070        DynOrigin::Aegaeon
7071    }
7072}
7073impl MeanRadius for Aegaeon {
7074    fn mean_radius(&self) -> Distance {
7075        Distance::kilometers(0.33f64)
7076    }
7077}
7078impl TriaxialEllipsoid for Aegaeon {
7079    fn radii(&self) -> Radii {
7080        (
7081            Distance::kilometers(0.7f64),
7082            Distance::kilometers(0.25f64),
7083            Distance::kilometers(0.2f64),
7084        )
7085    }
7086}
7087#[doc = "Ariel (NAIF ID: 701)."]
7088#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7089#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7090pub struct Ariel;
7091impl Origin for Ariel {
7092    fn id(&self) -> NaifId {
7093        NaifId(701i32)
7094    }
7095    fn name(&self) -> &'static str {
7096        "Ariel"
7097    }
7098}
7099impl Display for Ariel {
7100    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7101        write!(f, "{}", self.name())
7102    }
7103}
7104impl From<Ariel> for DynOrigin {
7105    fn from(_: Ariel) -> Self {
7106        DynOrigin::Ariel
7107    }
7108}
7109impl PointMass for Ariel {
7110    fn gravitational_parameter(&self) -> GravitationalParameter {
7111        GravitationalParameter::km3_per_s2(83.46344431770477f64)
7112    }
7113}
7114impl MeanRadius for Ariel {
7115    fn mean_radius(&self) -> Distance {
7116        Distance::kilometers(578.9f64)
7117    }
7118}
7119impl TriaxialEllipsoid for Ariel {
7120    fn radii(&self) -> Radii {
7121        (
7122            Distance::kilometers(581.1f64),
7123            Distance::kilometers(577.9f64),
7124            Distance::kilometers(577.7f64),
7125        )
7126    }
7127}
7128const RIGHT_ASCENSION_ARIEL: RotationalElement<13usize> = RotationalElement {
7129    typ: RotationalElementType::RightAscension,
7130    c0: 4.493001093409003f64,
7131    c1: 0f64,
7132    c2: 0f64,
7133    c: [
7134        0f64,
7135        0f64,
7136        0f64,
7137        0f64,
7138        0f64,
7139        0f64,
7140        0f64,
7141        0f64,
7142        0f64,
7143        0f64,
7144        0f64,
7145        0f64,
7146        0.005061454830783556f64,
7147    ],
7148    theta0: [
7149        2.0202186091834364f64,
7150        2.4729570171507653f64,
7151        2.356718088967943f64,
7152        1.0780898789568973f64,
7153        4.351454891072263f64,
7154        0.7655014099247129f64,
7155        1.3554226970987964f64,
7156        2.746450110938277f64,
7157        1.776919711455427f64,
7158        2.419724474964938f64,
7159        1.784250094313803f64,
7160        5.522396286235258f64,
7161        5.3059754589879615f64,
7162    ],
7163    theta1: [
7164        959.7891933286942f64,
7165        731.077582955928f64,
7166        522.3307938967249f64,
7167        449.1358738582876f64,
7168        427.10754977009157f64,
7169        388.83160660922994f64,
7170        354.1171823199879f64,
7171        290.6454915444109f64,
7172        224.66977689099764f64,
7173        140.70512817020406f64,
7174        -35.32930378471962f64,
7175        49.9855316454168f64,
7176        -0.9065240134858548f64,
7177    ],
7178};
7179const DECLINATION_ARIEL: RotationalElement<13usize> = RotationalElement {
7180    typ: RotationalElementType::Declination,
7181    c0: -0.26354471705114374f64,
7182    c1: 0f64,
7183    c2: 0f64,
7184    c: [
7185        0f64,
7186        0f64,
7187        0f64,
7188        0f64,
7189        0f64,
7190        0f64,
7191        0f64,
7192        0f64,
7193        0f64,
7194        0f64,
7195        0f64,
7196        0f64,
7197        0.004886921905584123f64,
7198    ],
7199    theta0: [
7200        2.0202186091834364f64,
7201        2.4729570171507653f64,
7202        2.356718088967943f64,
7203        1.0780898789568973f64,
7204        4.351454891072263f64,
7205        0.7655014099247129f64,
7206        1.3554226970987964f64,
7207        2.746450110938277f64,
7208        1.776919711455427f64,
7209        2.419724474964938f64,
7210        1.784250094313803f64,
7211        5.522396286235258f64,
7212        5.3059754589879615f64,
7213    ],
7214    theta1: [
7215        959.7891933286942f64,
7216        731.077582955928f64,
7217        522.3307938967249f64,
7218        449.1358738582876f64,
7219        427.10754977009157f64,
7220        388.83160660922994f64,
7221        354.1171823199879f64,
7222        290.6454915444109f64,
7223        224.66977689099764f64,
7224        140.70512817020406f64,
7225        -35.32930378471962f64,
7226        49.9855316454168f64,
7227        -0.9065240134858548f64,
7228    ],
7229};
7230const ROTATION_ARIEL: RotationalElement<13usize> = RotationalElement {
7231    typ: RotationalElementType::Rotation,
7232    c0: 2.7265533574655416f64,
7233    c1: -2.492952697630833f64,
7234    c2: 0f64,
7235    c: [
7236        0f64,
7237        0f64,
7238        0f64,
7239        0f64,
7240        0f64,
7241        0f64,
7242        0f64,
7243        0f64,
7244        0f64,
7245        0f64,
7246        0f64,
7247        0.0008726646259971648f64,
7248        0.0013962634015954637f64,
7249    ],
7250    theta0: [
7251        2.0202186091834364f64,
7252        2.4729570171507653f64,
7253        2.356718088967943f64,
7254        1.0780898789568973f64,
7255        4.351454891072263f64,
7256        0.7655014099247129f64,
7257        1.3554226970987964f64,
7258        2.746450110938277f64,
7259        1.776919711455427f64,
7260        2.419724474964938f64,
7261        1.784250094313803f64,
7262        5.522396286235258f64,
7263        5.3059754589879615f64,
7264    ],
7265    theta1: [
7266        959.7891933286942f64,
7267        731.077582955928f64,
7268        522.3307938967249f64,
7269        449.1358738582876f64,
7270        427.10754977009157f64,
7271        388.83160660922994f64,
7272        354.1171823199879f64,
7273        290.6454915444109f64,
7274        224.66977689099764f64,
7275        140.70512817020406f64,
7276        -35.32930378471962f64,
7277        49.9855316454168f64,
7278        -0.9065240134858548f64,
7279    ],
7280};
7281impl RotationalElements for Ariel {
7282    fn rotational_elements(&self, t: f64) -> Elements {
7283        (
7284            RIGHT_ASCENSION_ARIEL.angle(t),
7285            DECLINATION_ARIEL.angle(t),
7286            ROTATION_ARIEL.angle(t),
7287        )
7288    }
7289    fn rotational_element_rates(&self, t: f64) -> Elements {
7290        (
7291            RIGHT_ASCENSION_ARIEL.angle_dot(t),
7292            DECLINATION_ARIEL.angle_dot(t),
7293            ROTATION_ARIEL.angle_dot(t),
7294        )
7295    }
7296}
7297#[doc = "Umbriel (NAIF ID: 702)."]
7298#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7299#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7300pub struct Umbriel;
7301impl Origin for Umbriel {
7302    fn id(&self) -> NaifId {
7303        NaifId(702i32)
7304    }
7305    fn name(&self) -> &'static str {
7306        "Umbriel"
7307    }
7308}
7309impl Display for Umbriel {
7310    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7311        write!(f, "{}", self.name())
7312    }
7313}
7314impl From<Umbriel> for DynOrigin {
7315    fn from(_: Umbriel) -> Self {
7316        DynOrigin::Umbriel
7317    }
7318}
7319impl PointMass for Umbriel {
7320    fn gravitational_parameter(&self) -> GravitationalParameter {
7321        GravitationalParameter::km3_per_s2(85.09338094489388f64)
7322    }
7323}
7324impl MeanRadius for Umbriel {
7325    fn mean_radius(&self) -> Distance {
7326        Distance::kilometers(584.7f64)
7327    }
7328}
7329impl TriaxialEllipsoid for Umbriel {
7330    fn radii(&self) -> Radii {
7331        (
7332            Distance::kilometers(584.7f64),
7333            Distance::kilometers(584.7f64),
7334            Distance::kilometers(584.7f64),
7335        )
7336    }
7337}
7338impl Spheroid for Umbriel {}
7339const RIGHT_ASCENSION_UMBRIEL: RotationalElement<14usize> = RotationalElement {
7340    typ: RotationalElementType::RightAscension,
7341    c0: 4.493001093409003f64,
7342    c1: 0f64,
7343    c2: 0f64,
7344    c: [
7345        0f64,
7346        0f64,
7347        0f64,
7348        0f64,
7349        0f64,
7350        0f64,
7351        0f64,
7352        0f64,
7353        0f64,
7354        0f64,
7355        0f64,
7356        0f64,
7357        0f64,
7358        0.003665191429188092f64,
7359    ],
7360    theta0: [
7361        2.0202186091834364f64,
7362        2.4729570171507653f64,
7363        2.356718088967943f64,
7364        1.0780898789568973f64,
7365        4.351454891072263f64,
7366        0.7655014099247129f64,
7367        1.3554226970987964f64,
7368        2.746450110938277f64,
7369        1.776919711455427f64,
7370        2.419724474964938f64,
7371        1.784250094313803f64,
7372        5.522396286235258f64,
7373        5.3059754589879615f64,
7374        5.388005933831694f64,
7375    ],
7376    theta1: [
7377        959.7891933286942f64,
7378        731.077582955928f64,
7379        522.3307938967249f64,
7380        449.1358738582876f64,
7381        427.10754977009157f64,
7382        388.83160660922994f64,
7383        354.1171823199879f64,
7384        290.6454915444109f64,
7385        224.66977689099764f64,
7386        140.70512817020406f64,
7387        -35.32930378471962f64,
7388        49.9855316454168f64,
7389        -0.9065240134858548f64,
7390        -1.626123264083117f64,
7391    ],
7392};
7393const DECLINATION_UMBRIEL: RotationalElement<14usize> = RotationalElement {
7394    typ: RotationalElementType::Declination,
7395    c0: -0.26354471705114374f64,
7396    c1: 0f64,
7397    c2: 0f64,
7398    c: [
7399        0f64,
7400        0f64,
7401        0f64,
7402        0f64,
7403        0f64,
7404        0f64,
7405        0f64,
7406        0f64,
7407        0f64,
7408        0f64,
7409        0f64,
7410        0f64,
7411        0f64,
7412        0.003490658503988659f64,
7413    ],
7414    theta0: [
7415        2.0202186091834364f64,
7416        2.4729570171507653f64,
7417        2.356718088967943f64,
7418        1.0780898789568973f64,
7419        4.351454891072263f64,
7420        0.7655014099247129f64,
7421        1.3554226970987964f64,
7422        2.746450110938277f64,
7423        1.776919711455427f64,
7424        2.419724474964938f64,
7425        1.784250094313803f64,
7426        5.522396286235258f64,
7427        5.3059754589879615f64,
7428        5.388005933831694f64,
7429    ],
7430    theta1: [
7431        959.7891933286942f64,
7432        731.077582955928f64,
7433        522.3307938967249f64,
7434        449.1358738582876f64,
7435        427.10754977009157f64,
7436        388.83160660922994f64,
7437        354.1171823199879f64,
7438        290.6454915444109f64,
7439        224.66977689099764f64,
7440        140.70512817020406f64,
7441        -35.32930378471962f64,
7442        49.9855316454168f64,
7443        -0.9065240134858548f64,
7444        -1.626123264083117f64,
7445    ],
7446};
7447const ROTATION_UMBRIEL: RotationalElement<14usize> = RotationalElement {
7448    typ: RotationalElementType::Rotation,
7449    c0: 1.885828256779873f64,
7450    c1: -1.5161481881953498f64,
7451    c2: 0f64,
7452    c: [
7453        0f64,
7454        0f64,
7455        0f64,
7456        0f64,
7457        0f64,
7458        0f64,
7459        0f64,
7460        0f64,
7461        0f64,
7462        0f64,
7463        0f64,
7464        -0.0015707963267948964f64,
7465        0f64,
7466        0.0010471975511965976f64,
7467    ],
7468    theta0: [
7469        2.0202186091834364f64,
7470        2.4729570171507653f64,
7471        2.356718088967943f64,
7472        1.0780898789568973f64,
7473        4.351454891072263f64,
7474        0.7655014099247129f64,
7475        1.3554226970987964f64,
7476        2.746450110938277f64,
7477        1.776919711455427f64,
7478        2.419724474964938f64,
7479        1.784250094313803f64,
7480        5.522396286235258f64,
7481        5.3059754589879615f64,
7482        5.388005933831694f64,
7483    ],
7484    theta1: [
7485        959.7891933286942f64,
7486        731.077582955928f64,
7487        522.3307938967249f64,
7488        449.1358738582876f64,
7489        427.10754977009157f64,
7490        388.83160660922994f64,
7491        354.1171823199879f64,
7492        290.6454915444109f64,
7493        224.66977689099764f64,
7494        140.70512817020406f64,
7495        -35.32930378471962f64,
7496        49.9855316454168f64,
7497        -0.9065240134858548f64,
7498        -1.626123264083117f64,
7499    ],
7500};
7501impl RotationalElements for Umbriel {
7502    fn rotational_elements(&self, t: f64) -> Elements {
7503        (
7504            RIGHT_ASCENSION_UMBRIEL.angle(t),
7505            DECLINATION_UMBRIEL.angle(t),
7506            ROTATION_UMBRIEL.angle(t),
7507        )
7508    }
7509    fn rotational_element_rates(&self, t: f64) -> Elements {
7510        (
7511            RIGHT_ASCENSION_UMBRIEL.angle_dot(t),
7512            DECLINATION_UMBRIEL.angle_dot(t),
7513            ROTATION_UMBRIEL.angle_dot(t),
7514        )
7515    }
7516}
7517#[doc = "Titania (NAIF ID: 703)."]
7518#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7519#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7520pub struct Titania;
7521impl Origin for Titania {
7522    fn id(&self) -> NaifId {
7523        NaifId(703i32)
7524    }
7525    fn name(&self) -> &'static str {
7526        "Titania"
7527    }
7528}
7529impl Display for Titania {
7530    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7531        write!(f, "{}", self.name())
7532    }
7533}
7534impl From<Titania> for DynOrigin {
7535    fn from(_: Titania) -> Self {
7536        DynOrigin::Titania
7537    }
7538}
7539impl PointMass for Titania {
7540    fn gravitational_parameter(&self) -> GravitationalParameter {
7541        GravitationalParameter::km3_per_s2(226.9437003741248f64)
7542    }
7543}
7544impl MeanRadius for Titania {
7545    fn mean_radius(&self) -> Distance {
7546        Distance::kilometers(788.9f64)
7547    }
7548}
7549impl TriaxialEllipsoid for Titania {
7550    fn radii(&self) -> Radii {
7551        (
7552            Distance::kilometers(788.9f64),
7553            Distance::kilometers(788.9f64),
7554            Distance::kilometers(788.9f64),
7555        )
7556    }
7557}
7558impl Spheroid for Titania {}
7559const RIGHT_ASCENSION_TITANIA: RotationalElement<15usize> = RotationalElement {
7560    typ: RotationalElementType::RightAscension,
7561    c0: 4.493001093409003f64,
7562    c1: 0f64,
7563    c2: 0f64,
7564    c: [
7565        0f64,
7566        0f64,
7567        0f64,
7568        0f64,
7569        0f64,
7570        0f64,
7571        0f64,
7572        0f64,
7573        0f64,
7574        0f64,
7575        0f64,
7576        0f64,
7577        0f64,
7578        0f64,
7579        0.005061454830783556f64,
7580    ],
7581    theta0: [
7582        2.0202186091834364f64,
7583        2.4729570171507653f64,
7584        2.356718088967943f64,
7585        1.0780898789568973f64,
7586        4.351454891072263f64,
7587        0.7655014099247129f64,
7588        1.3554226970987964f64,
7589        2.746450110938277f64,
7590        1.776919711455427f64,
7591        2.419724474964938f64,
7592        1.784250094313803f64,
7593        5.522396286235258f64,
7594        5.3059754589879615f64,
7595        5.388005933831694f64,
7596        5.948431156647074f64,
7597    ],
7598    theta1: [
7599        959.7891933286942f64,
7600        731.077582955928f64,
7601        522.3307938967249f64,
7602        449.1358738582876f64,
7603        427.10754977009157f64,
7604        388.83160660922994f64,
7605        354.1171823199879f64,
7606        290.6454915444109f64,
7607        224.66977689099764f64,
7608        140.70512817020406f64,
7609        -35.32930378471962f64,
7610        49.9855316454168f64,
7611        -0.9065240134858548f64,
7612        -1.626123264083117f64,
7613        -1.314581992602129f64,
7614    ],
7615};
7616const DECLINATION_TITANIA: RotationalElement<15usize> = RotationalElement {
7617    typ: RotationalElementType::Declination,
7618    c0: -0.26354471705114374f64,
7619    c1: 0f64,
7620    c2: 0f64,
7621    c: [
7622        0f64,
7623        0f64,
7624        0f64,
7625        0f64,
7626        0f64,
7627        0f64,
7628        0f64,
7629        0f64,
7630        0f64,
7631        0f64,
7632        0f64,
7633        0f64,
7634        0f64,
7635        0f64,
7636        0.004886921905584123f64,
7637    ],
7638    theta0: [
7639        2.0202186091834364f64,
7640        2.4729570171507653f64,
7641        2.356718088967943f64,
7642        1.0780898789568973f64,
7643        4.351454891072263f64,
7644        0.7655014099247129f64,
7645        1.3554226970987964f64,
7646        2.746450110938277f64,
7647        1.776919711455427f64,
7648        2.419724474964938f64,
7649        1.784250094313803f64,
7650        5.522396286235258f64,
7651        5.3059754589879615f64,
7652        5.388005933831694f64,
7653        5.948431156647074f64,
7654    ],
7655    theta1: [
7656        959.7891933286942f64,
7657        731.077582955928f64,
7658        522.3307938967249f64,
7659        449.1358738582876f64,
7660        427.10754977009157f64,
7661        388.83160660922994f64,
7662        354.1171823199879f64,
7663        290.6454915444109f64,
7664        224.66977689099764f64,
7665        140.70512817020406f64,
7666        -35.32930378471962f64,
7667        49.9855316454168f64,
7668        -0.9065240134858548f64,
7669        -1.626123264083117f64,
7670        -1.314581992602129f64,
7671    ],
7672};
7673const ROTATION_TITANIA: RotationalElement<15usize> = RotationalElement {
7674    typ: RotationalElementType::Rotation,
7675    c0: 1.3568189605003917f64,
7676    c1: -0.7217186318332268f64,
7677    c2: 0f64,
7678    c: [
7679        0f64,
7680        0f64,
7681        0f64,
7682        0f64,
7683        0f64,
7684        0f64,
7685        0f64,
7686        0f64,
7687        0f64,
7688        0f64,
7689        0f64,
7690        0f64,
7691        0f64,
7692        0f64,
7693        0.0013962634015954637f64,
7694    ],
7695    theta0: [
7696        2.0202186091834364f64,
7697        2.4729570171507653f64,
7698        2.356718088967943f64,
7699        1.0780898789568973f64,
7700        4.351454891072263f64,
7701        0.7655014099247129f64,
7702        1.3554226970987964f64,
7703        2.746450110938277f64,
7704        1.776919711455427f64,
7705        2.419724474964938f64,
7706        1.784250094313803f64,
7707        5.522396286235258f64,
7708        5.3059754589879615f64,
7709        5.388005933831694f64,
7710        5.948431156647074f64,
7711    ],
7712    theta1: [
7713        959.7891933286942f64,
7714        731.077582955928f64,
7715        522.3307938967249f64,
7716        449.1358738582876f64,
7717        427.10754977009157f64,
7718        388.83160660922994f64,
7719        354.1171823199879f64,
7720        290.6454915444109f64,
7721        224.66977689099764f64,
7722        140.70512817020406f64,
7723        -35.32930378471962f64,
7724        49.9855316454168f64,
7725        -0.9065240134858548f64,
7726        -1.626123264083117f64,
7727        -1.314581992602129f64,
7728    ],
7729};
7730impl RotationalElements for Titania {
7731    fn rotational_elements(&self, t: f64) -> Elements {
7732        (
7733            RIGHT_ASCENSION_TITANIA.angle(t),
7734            DECLINATION_TITANIA.angle(t),
7735            ROTATION_TITANIA.angle(t),
7736        )
7737    }
7738    fn rotational_element_rates(&self, t: f64) -> Elements {
7739        (
7740            RIGHT_ASCENSION_TITANIA.angle_dot(t),
7741            DECLINATION_TITANIA.angle_dot(t),
7742            ROTATION_TITANIA.angle_dot(t),
7743        )
7744    }
7745}
7746#[doc = "Oberon (NAIF ID: 704)."]
7747#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7748#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7749pub struct Oberon;
7750impl Origin for Oberon {
7751    fn id(&self) -> NaifId {
7752        NaifId(704i32)
7753    }
7754    fn name(&self) -> &'static str {
7755        "Oberon"
7756    }
7757}
7758impl Display for Oberon {
7759    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7760        write!(f, "{}", self.name())
7761    }
7762}
7763impl From<Oberon> for DynOrigin {
7764    fn from(_: Oberon) -> Self {
7765        DynOrigin::Oberon
7766    }
7767}
7768impl PointMass for Oberon {
7769    fn gravitational_parameter(&self) -> GravitationalParameter {
7770        GravitationalParameter::km3_per_s2(205.3234302535623f64)
7771    }
7772}
7773impl MeanRadius for Oberon {
7774    fn mean_radius(&self) -> Distance {
7775        Distance::kilometers(761.4f64)
7776    }
7777}
7778impl TriaxialEllipsoid for Oberon {
7779    fn radii(&self) -> Radii {
7780        (
7781            Distance::kilometers(761.4f64),
7782            Distance::kilometers(761.4f64),
7783            Distance::kilometers(761.4f64),
7784        )
7785    }
7786}
7787impl Spheroid for Oberon {}
7788const RIGHT_ASCENSION_OBERON: RotationalElement<16usize> = RotationalElement {
7789    typ: RotationalElementType::RightAscension,
7790    c0: 4.493001093409003f64,
7791    c1: 0f64,
7792    c2: 0f64,
7793    c: [
7794        0f64,
7795        0f64,
7796        0f64,
7797        0f64,
7798        0f64,
7799        0f64,
7800        0f64,
7801        0f64,
7802        0f64,
7803        0f64,
7804        0f64,
7805        0f64,
7806        0f64,
7807        0f64,
7808        0f64,
7809        0.0027925268031909274f64,
7810    ],
7811    theta0: [
7812        2.0202186091834364f64,
7813        2.4729570171507653f64,
7814        2.356718088967943f64,
7815        1.0780898789568973f64,
7816        4.351454891072263f64,
7817        0.7655014099247129f64,
7818        1.3554226970987964f64,
7819        2.746450110938277f64,
7820        1.776919711455427f64,
7821        2.419724474964938f64,
7822        1.784250094313803f64,
7823        5.522396286235258f64,
7824        5.3059754589879615f64,
7825        5.388005933831694f64,
7826        5.948431156647074f64,
7827        4.522846223618106f64,
7828    ],
7829    theta1: [
7830        959.7891933286942f64,
7831        731.077582955928f64,
7832        522.3307938967249f64,
7833        449.1358738582876f64,
7834        427.10754977009157f64,
7835        388.83160660922994f64,
7836        354.1171823199879f64,
7837        290.6454915444109f64,
7838        224.66977689099764f64,
7839        140.70512817020406f64,
7840        -35.32930378471962f64,
7841        49.9855316454168f64,
7842        -0.9065240134858548f64,
7843        -1.626123264083117f64,
7844        -1.314581992602129f64,
7845        -8.810596596992575f64,
7846    ],
7847};
7848const DECLINATION_OBERON: RotationalElement<16usize> = RotationalElement {
7849    typ: RotationalElementType::Declination,
7850    c0: -0.26354471705114374f64,
7851    c1: 0f64,
7852    c2: 0f64,
7853    c: [
7854        0f64,
7855        0f64,
7856        0f64,
7857        0f64,
7858        0f64,
7859        0f64,
7860        0f64,
7861        0f64,
7862        0f64,
7863        0f64,
7864        0f64,
7865        0f64,
7866        0f64,
7867        0f64,
7868        0f64,
7869        0.0027925268031909274f64,
7870    ],
7871    theta0: [
7872        2.0202186091834364f64,
7873        2.4729570171507653f64,
7874        2.356718088967943f64,
7875        1.0780898789568973f64,
7876        4.351454891072263f64,
7877        0.7655014099247129f64,
7878        1.3554226970987964f64,
7879        2.746450110938277f64,
7880        1.776919711455427f64,
7881        2.419724474964938f64,
7882        1.784250094313803f64,
7883        5.522396286235258f64,
7884        5.3059754589879615f64,
7885        5.388005933831694f64,
7886        5.948431156647074f64,
7887        4.522846223618106f64,
7888    ],
7889    theta1: [
7890        959.7891933286942f64,
7891        731.077582955928f64,
7892        522.3307938967249f64,
7893        449.1358738582876f64,
7894        427.10754977009157f64,
7895        388.83160660922994f64,
7896        354.1171823199879f64,
7897        290.6454915444109f64,
7898        224.66977689099764f64,
7899        140.70512817020406f64,
7900        -35.32930378471962f64,
7901        49.9855316454168f64,
7902        -0.9065240134858548f64,
7903        -1.626123264083117f64,
7904        -1.314581992602129f64,
7905        -8.810596596992575f64,
7906    ],
7907};
7908const ROTATION_OBERON: RotationalElement<16usize> = RotationalElement {
7909    typ: RotationalElementType::Rotation,
7910    c0: 0.1181587903600161f64,
7911    c1: -0.4666921966546346f64,
7912    c2: 0f64,
7913    c: [
7914        0f64,
7915        0f64,
7916        0f64,
7917        0f64,
7918        0f64,
7919        0f64,
7920        0f64,
7921        0f64,
7922        0f64,
7923        0f64,
7924        0f64,
7925        0f64,
7926        0f64,
7927        0f64,
7928        0f64,
7929        0.0006981317007977319f64,
7930    ],
7931    theta0: [
7932        2.0202186091834364f64,
7933        2.4729570171507653f64,
7934        2.356718088967943f64,
7935        1.0780898789568973f64,
7936        4.351454891072263f64,
7937        0.7655014099247129f64,
7938        1.3554226970987964f64,
7939        2.746450110938277f64,
7940        1.776919711455427f64,
7941        2.419724474964938f64,
7942        1.784250094313803f64,
7943        5.522396286235258f64,
7944        5.3059754589879615f64,
7945        5.388005933831694f64,
7946        5.948431156647074f64,
7947        4.522846223618106f64,
7948    ],
7949    theta1: [
7950        959.7891933286942f64,
7951        731.077582955928f64,
7952        522.3307938967249f64,
7953        449.1358738582876f64,
7954        427.10754977009157f64,
7955        388.83160660922994f64,
7956        354.1171823199879f64,
7957        290.6454915444109f64,
7958        224.66977689099764f64,
7959        140.70512817020406f64,
7960        -35.32930378471962f64,
7961        49.9855316454168f64,
7962        -0.9065240134858548f64,
7963        -1.626123264083117f64,
7964        -1.314581992602129f64,
7965        -8.810596596992575f64,
7966    ],
7967};
7968impl RotationalElements for Oberon {
7969    fn rotational_elements(&self, t: f64) -> Elements {
7970        (
7971            RIGHT_ASCENSION_OBERON.angle(t),
7972            DECLINATION_OBERON.angle(t),
7973            ROTATION_OBERON.angle(t),
7974        )
7975    }
7976    fn rotational_element_rates(&self, t: f64) -> Elements {
7977        (
7978            RIGHT_ASCENSION_OBERON.angle_dot(t),
7979            DECLINATION_OBERON.angle_dot(t),
7980            ROTATION_OBERON.angle_dot(t),
7981        )
7982    }
7983}
7984#[doc = "Miranda (NAIF ID: 705)."]
7985#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7986#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7987pub struct Miranda;
7988impl Origin for Miranda {
7989    fn id(&self) -> NaifId {
7990        NaifId(705i32)
7991    }
7992    fn name(&self) -> &'static str {
7993        "Miranda"
7994    }
7995}
7996impl Display for Miranda {
7997    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
7998        write!(f, "{}", self.name())
7999    }
8000}
8001impl From<Miranda> for DynOrigin {
8002    fn from(_: Miranda) -> Self {
8003        DynOrigin::Miranda
8004    }
8005}
8006impl PointMass for Miranda {
8007    fn gravitational_parameter(&self) -> GravitationalParameter {
8008        GravitationalParameter::km3_per_s2(4.3195168992321f64)
8009    }
8010}
8011impl MeanRadius for Miranda {
8012    fn mean_radius(&self) -> Distance {
8013        Distance::kilometers(235.8f64)
8014    }
8015}
8016impl TriaxialEllipsoid for Miranda {
8017    fn radii(&self) -> Radii {
8018        (
8019            Distance::kilometers(240.4f64),
8020            Distance::kilometers(234.2f64),
8021            Distance::kilometers(232.9f64),
8022        )
8023    }
8024}
8025const RIGHT_ASCENSION_MIRANDA: RotationalElement<18usize> = RotationalElement {
8026    typ: RotationalElementType::RightAscension,
8027    c0: 4.493001093409003f64,
8028    c1: 0f64,
8029    c2: 0f64,
8030    c: [
8031        0f64,
8032        0f64,
8033        0f64,
8034        0f64,
8035        0f64,
8036        0f64,
8037        0f64,
8038        0f64,
8039        0f64,
8040        0f64,
8041        0.07696902001294993f64,
8042        0f64,
8043        0f64,
8044        0f64,
8045        0f64,
8046        0f64,
8047        -0.0006981317007977319f64,
8048        0f64,
8049    ],
8050    theta0: [
8051        2.0202186091834364f64,
8052        2.4729570171507653f64,
8053        2.356718088967943f64,
8054        1.0780898789568973f64,
8055        4.351454891072263f64,
8056        0.7655014099247129f64,
8057        1.3554226970987964f64,
8058        2.746450110938277f64,
8059        1.776919711455427f64,
8060        2.419724474964938f64,
8061        1.784250094313803f64,
8062        5.522396286235258f64,
8063        5.3059754589879615f64,
8064        5.388005933831694f64,
8065        5.948431156647074f64,
8066        4.522846223618106f64,
8067        3.568500188627606f64,
8068        11.044792572470516f64,
8069    ],
8070    theta1: [
8071        959.7891933286942f64,
8072        731.077582955928f64,
8073        522.3307938967249f64,
8074        449.1358738582876f64,
8075        427.10754977009157f64,
8076        388.83160660922994f64,
8077        354.1171823199879f64,
8078        290.6454915444109f64,
8079        224.66977689099764f64,
8080        140.70512817020406f64,
8081        -35.32930378471962f64,
8082        49.9855316454168f64,
8083        -0.9065240134858548f64,
8084        -1.626123264083117f64,
8085        -1.314581992602129f64,
8086        -8.810596596992575f64,
8087        -70.65860756943924f64,
8088        99.9710632908336f64,
8089    ],
8090};
8091const DECLINATION_MIRANDA: RotationalElement<18usize> = RotationalElement {
8092    typ: RotationalElementType::Declination,
8093    c0: -0.2631956512007449f64,
8094    c1: 0f64,
8095    c2: 0f64,
8096    c: [
8097        0f64,
8098        0f64,
8099        0f64,
8100        0f64,
8101        0f64,
8102        0f64,
8103        0f64,
8104        0f64,
8105        0f64,
8106        0f64,
8107        0.07417649320975901f64,
8108        0f64,
8109        0f64,
8110        0f64,
8111        0f64,
8112        0f64,
8113        -0.00034906585039886593f64,
8114        0f64,
8115    ],
8116    theta0: [
8117        2.0202186091834364f64,
8118        2.4729570171507653f64,
8119        2.356718088967943f64,
8120        1.0780898789568973f64,
8121        4.351454891072263f64,
8122        0.7655014099247129f64,
8123        1.3554226970987964f64,
8124        2.746450110938277f64,
8125        1.776919711455427f64,
8126        2.419724474964938f64,
8127        1.784250094313803f64,
8128        5.522396286235258f64,
8129        5.3059754589879615f64,
8130        5.388005933831694f64,
8131        5.948431156647074f64,
8132        4.522846223618106f64,
8133        3.568500188627606f64,
8134        11.044792572470516f64,
8135    ],
8136    theta1: [
8137        959.7891933286942f64,
8138        731.077582955928f64,
8139        522.3307938967249f64,
8140        449.1358738582876f64,
8141        427.10754977009157f64,
8142        388.83160660922994f64,
8143        354.1171823199879f64,
8144        290.6454915444109f64,
8145        224.66977689099764f64,
8146        140.70512817020406f64,
8147        -35.32930378471962f64,
8148        49.9855316454168f64,
8149        -0.9065240134858548f64,
8150        -1.626123264083117f64,
8151        -1.314581992602129f64,
8152        -8.810596596992575f64,
8153        -70.65860756943924f64,
8154        99.9710632908336f64,
8155    ],
8156};
8157const ROTATION_MIRANDA: RotationalElement<18usize> = RotationalElement {
8158    typ: RotationalElementType::Rotation,
8159    c0: 0.5358160803622591f64,
8160    c1: -4.445191100713563f64,
8161    c2: 0f64,
8162    c: [
8163        0f64,
8164        0f64,
8165        0f64,
8166        0f64,
8167        0f64,
8168        0f64,
8169        0f64,
8170        0f64,
8171        0f64,
8172        0f64,
8173        0.02007128639793479f64,
8174        -0.022165681500327987f64,
8175        0f64,
8176        0f64,
8177        0f64,
8178        0f64,
8179        -0.0015707963267948964f64,
8180        0.002617993877991494f64,
8181    ],
8182    theta0: [
8183        2.0202186091834364f64,
8184        2.4729570171507653f64,
8185        2.356718088967943f64,
8186        1.0780898789568973f64,
8187        4.351454891072263f64,
8188        0.7655014099247129f64,
8189        1.3554226970987964f64,
8190        2.746450110938277f64,
8191        1.776919711455427f64,
8192        2.419724474964938f64,
8193        1.784250094313803f64,
8194        5.522396286235258f64,
8195        5.3059754589879615f64,
8196        5.388005933831694f64,
8197        5.948431156647074f64,
8198        4.522846223618106f64,
8199        3.568500188627606f64,
8200        11.044792572470516f64,
8201    ],
8202    theta1: [
8203        959.7891933286942f64,
8204        731.077582955928f64,
8205        522.3307938967249f64,
8206        449.1358738582876f64,
8207        427.10754977009157f64,
8208        388.83160660922994f64,
8209        354.1171823199879f64,
8210        290.6454915444109f64,
8211        224.66977689099764f64,
8212        140.70512817020406f64,
8213        -35.32930378471962f64,
8214        49.9855316454168f64,
8215        -0.9065240134858548f64,
8216        -1.626123264083117f64,
8217        -1.314581992602129f64,
8218        -8.810596596992575f64,
8219        -70.65860756943924f64,
8220        99.9710632908336f64,
8221    ],
8222};
8223impl RotationalElements for Miranda {
8224    fn rotational_elements(&self, t: f64) -> Elements {
8225        (
8226            RIGHT_ASCENSION_MIRANDA.angle(t),
8227            DECLINATION_MIRANDA.angle(t),
8228            ROTATION_MIRANDA.angle(t),
8229        )
8230    }
8231    fn rotational_element_rates(&self, t: f64) -> Elements {
8232        (
8233            RIGHT_ASCENSION_MIRANDA.angle_dot(t),
8234            DECLINATION_MIRANDA.angle_dot(t),
8235            ROTATION_MIRANDA.angle_dot(t),
8236        )
8237    }
8238}
8239#[doc = "Cordelia (NAIF ID: 706)."]
8240#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8241#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8242pub struct Cordelia;
8243impl Origin for Cordelia {
8244    fn id(&self) -> NaifId {
8245        NaifId(706i32)
8246    }
8247    fn name(&self) -> &'static str {
8248        "Cordelia"
8249    }
8250}
8251impl Display for Cordelia {
8252    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
8253        write!(f, "{}", self.name())
8254    }
8255}
8256impl From<Cordelia> for DynOrigin {
8257    fn from(_: Cordelia) -> Self {
8258        DynOrigin::Cordelia
8259    }
8260}
8261impl MeanRadius for Cordelia {
8262    fn mean_radius(&self) -> Distance {
8263        Distance::kilometers(13f64)
8264    }
8265}
8266impl TriaxialEllipsoid for Cordelia {
8267    fn radii(&self) -> Radii {
8268        (
8269            Distance::kilometers(13f64),
8270            Distance::kilometers(13f64),
8271            Distance::kilometers(13f64),
8272        )
8273    }
8274}
8275impl Spheroid for Cordelia {}
8276const RIGHT_ASCENSION_CORDELIA: RotationalElement<18usize> = RotationalElement {
8277    typ: RotationalElementType::RightAscension,
8278    c0: 4.49090669830661f64,
8279    c1: 0f64,
8280    c2: 0f64,
8281    c: [
8282        -0.002617993877991494f64,
8283        0f64,
8284        0f64,
8285        0f64,
8286        0f64,
8287        0f64,
8288        0f64,
8289        0f64,
8290        0f64,
8291        0f64,
8292        0f64,
8293        0f64,
8294        0f64,
8295        0f64,
8296        0f64,
8297        0f64,
8298        0f64,
8299        0f64,
8300    ],
8301    theta0: [
8302        2.0202186091834364f64,
8303        2.4729570171507653f64,
8304        2.356718088967943f64,
8305        1.0780898789568973f64,
8306        4.351454891072263f64,
8307        0.7655014099247129f64,
8308        1.3554226970987964f64,
8309        2.746450110938277f64,
8310        1.776919711455427f64,
8311        2.419724474964938f64,
8312        1.784250094313803f64,
8313        5.522396286235258f64,
8314        5.3059754589879615f64,
8315        5.388005933831694f64,
8316        5.948431156647074f64,
8317        4.522846223618106f64,
8318        3.568500188627606f64,
8319        11.044792572470516f64,
8320    ],
8321    theta1: [
8322        959.7891933286942f64,
8323        731.077582955928f64,
8324        522.3307938967249f64,
8325        449.1358738582876f64,
8326        427.10754977009157f64,
8327        388.83160660922994f64,
8328        354.1171823199879f64,
8329        290.6454915444109f64,
8330        224.66977689099764f64,
8331        140.70512817020406f64,
8332        -35.32930378471962f64,
8333        49.9855316454168f64,
8334        -0.9065240134858548f64,
8335        -1.626123264083117f64,
8336        -1.314581992602129f64,
8337        -8.810596596992575f64,
8338        -70.65860756943924f64,
8339        99.9710632908336f64,
8340    ],
8341};
8342const DECLINATION_CORDELIA: RotationalElement<18usize> = RotationalElement {
8343    typ: RotationalElementType::Declination,
8344    c0: -0.2649409804527392f64,
8345    c1: 0f64,
8346    c2: 0f64,
8347    c: [
8348        0.0024434609527920616f64,
8349        0f64,
8350        0f64,
8351        0f64,
8352        0f64,
8353        0f64,
8354        0f64,
8355        0f64,
8356        0f64,
8357        0f64,
8358        0f64,
8359        0f64,
8360        0f64,
8361        0f64,
8362        0f64,
8363        0f64,
8364        0f64,
8365        0f64,
8366    ],
8367    theta0: [
8368        2.0202186091834364f64,
8369        2.4729570171507653f64,
8370        2.356718088967943f64,
8371        1.0780898789568973f64,
8372        4.351454891072263f64,
8373        0.7655014099247129f64,
8374        1.3554226970987964f64,
8375        2.746450110938277f64,
8376        1.776919711455427f64,
8377        2.419724474964938f64,
8378        1.784250094313803f64,
8379        5.522396286235258f64,
8380        5.3059754589879615f64,
8381        5.388005933831694f64,
8382        5.948431156647074f64,
8383        4.522846223618106f64,
8384        3.568500188627606f64,
8385        11.044792572470516f64,
8386    ],
8387    theta1: [
8388        959.7891933286942f64,
8389        731.077582955928f64,
8390        522.3307938967249f64,
8391        449.1358738582876f64,
8392        427.10754977009157f64,
8393        388.83160660922994f64,
8394        354.1171823199879f64,
8395        290.6454915444109f64,
8396        224.66977689099764f64,
8397        140.70512817020406f64,
8398        -35.32930378471962f64,
8399        49.9855316454168f64,
8400        -0.9065240134858548f64,
8401        -1.626123264083117f64,
8402        -1.314581992602129f64,
8403        -8.810596596992575f64,
8404        -70.65860756943924f64,
8405        99.9710632908336f64,
8406    ],
8407};
8408const ROTATION_CORDELIA: RotationalElement<18usize> = RotationalElement {
8409    typ: RotationalElementType::Rotation,
8410    c0: 2.2286109218715593f64,
8411    c1: -18.753921879266084f64,
8412    c2: 0f64,
8413    c: [
8414        -0.0006981317007977319f64,
8415        0f64,
8416        0f64,
8417        0f64,
8418        0f64,
8419        0f64,
8420        0f64,
8421        0f64,
8422        0f64,
8423        0f64,
8424        0f64,
8425        0f64,
8426        0f64,
8427        0f64,
8428        0f64,
8429        0f64,
8430        0f64,
8431        0f64,
8432    ],
8433    theta0: [
8434        2.0202186091834364f64,
8435        2.4729570171507653f64,
8436        2.356718088967943f64,
8437        1.0780898789568973f64,
8438        4.351454891072263f64,
8439        0.7655014099247129f64,
8440        1.3554226970987964f64,
8441        2.746450110938277f64,
8442        1.776919711455427f64,
8443        2.419724474964938f64,
8444        1.784250094313803f64,
8445        5.522396286235258f64,
8446        5.3059754589879615f64,
8447        5.388005933831694f64,
8448        5.948431156647074f64,
8449        4.522846223618106f64,
8450        3.568500188627606f64,
8451        11.044792572470516f64,
8452    ],
8453    theta1: [
8454        959.7891933286942f64,
8455        731.077582955928f64,
8456        522.3307938967249f64,
8457        449.1358738582876f64,
8458        427.10754977009157f64,
8459        388.83160660922994f64,
8460        354.1171823199879f64,
8461        290.6454915444109f64,
8462        224.66977689099764f64,
8463        140.70512817020406f64,
8464        -35.32930378471962f64,
8465        49.9855316454168f64,
8466        -0.9065240134858548f64,
8467        -1.626123264083117f64,
8468        -1.314581992602129f64,
8469        -8.810596596992575f64,
8470        -70.65860756943924f64,
8471        99.9710632908336f64,
8472    ],
8473};
8474impl RotationalElements for Cordelia {
8475    fn rotational_elements(&self, t: f64) -> Elements {
8476        (
8477            RIGHT_ASCENSION_CORDELIA.angle(t),
8478            DECLINATION_CORDELIA.angle(t),
8479            ROTATION_CORDELIA.angle(t),
8480        )
8481    }
8482    fn rotational_element_rates(&self, t: f64) -> Elements {
8483        (
8484            RIGHT_ASCENSION_CORDELIA.angle_dot(t),
8485            DECLINATION_CORDELIA.angle_dot(t),
8486            ROTATION_CORDELIA.angle_dot(t),
8487        )
8488    }
8489}
8490#[doc = "Ophelia (NAIF ID: 707)."]
8491#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8492#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8493pub struct Ophelia;
8494impl Origin for Ophelia {
8495    fn id(&self) -> NaifId {
8496        NaifId(707i32)
8497    }
8498    fn name(&self) -> &'static str {
8499        "Ophelia"
8500    }
8501}
8502impl Display for Ophelia {
8503    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
8504        write!(f, "{}", self.name())
8505    }
8506}
8507impl From<Ophelia> for DynOrigin {
8508    fn from(_: Ophelia) -> Self {
8509        DynOrigin::Ophelia
8510    }
8511}
8512impl MeanRadius for Ophelia {
8513    fn mean_radius(&self) -> Distance {
8514        Distance::kilometers(15f64)
8515    }
8516}
8517impl TriaxialEllipsoid for Ophelia {
8518    fn radii(&self) -> Radii {
8519        (
8520            Distance::kilometers(15f64),
8521            Distance::kilometers(15f64),
8522            Distance::kilometers(15f64),
8523        )
8524    }
8525}
8526impl Spheroid for Ophelia {}
8527const RIGHT_ASCENSION_OPHELIA: RotationalElement<18usize> = RotationalElement {
8528    typ: RotationalElementType::RightAscension,
8529    c0: 4.49090669830661f64,
8530    c1: 0f64,
8531    c2: 0f64,
8532    c: [
8533        0f64,
8534        -0.0015707963267948964f64,
8535        0f64,
8536        0f64,
8537        0f64,
8538        0f64,
8539        0f64,
8540        0f64,
8541        0f64,
8542        0f64,
8543        0f64,
8544        0f64,
8545        0f64,
8546        0f64,
8547        0f64,
8548        0f64,
8549        0f64,
8550        0f64,
8551    ],
8552    theta0: [
8553        2.0202186091834364f64,
8554        2.4729570171507653f64,
8555        2.356718088967943f64,
8556        1.0780898789568973f64,
8557        4.351454891072263f64,
8558        0.7655014099247129f64,
8559        1.3554226970987964f64,
8560        2.746450110938277f64,
8561        1.776919711455427f64,
8562        2.419724474964938f64,
8563        1.784250094313803f64,
8564        5.522396286235258f64,
8565        5.3059754589879615f64,
8566        5.388005933831694f64,
8567        5.948431156647074f64,
8568        4.522846223618106f64,
8569        3.568500188627606f64,
8570        11.044792572470516f64,
8571    ],
8572    theta1: [
8573        959.7891933286942f64,
8574        731.077582955928f64,
8575        522.3307938967249f64,
8576        449.1358738582876f64,
8577        427.10754977009157f64,
8578        388.83160660922994f64,
8579        354.1171823199879f64,
8580        290.6454915444109f64,
8581        224.66977689099764f64,
8582        140.70512817020406f64,
8583        -35.32930378471962f64,
8584        49.9855316454168f64,
8585        -0.9065240134858548f64,
8586        -1.626123264083117f64,
8587        -1.314581992602129f64,
8588        -8.810596596992575f64,
8589        -70.65860756943924f64,
8590        99.9710632908336f64,
8591    ],
8592};
8593const DECLINATION_OPHELIA: RotationalElement<18usize> = RotationalElement {
8594    typ: RotationalElementType::Declination,
8595    c0: -0.2649409804527392f64,
8596    c1: 0f64,
8597    c2: 0f64,
8598    c: [
8599        0f64,
8600        0.0015707963267948964f64,
8601        0f64,
8602        0f64,
8603        0f64,
8604        0f64,
8605        0f64,
8606        0f64,
8607        0f64,
8608        0f64,
8609        0f64,
8610        0f64,
8611        0f64,
8612        0f64,
8613        0f64,
8614        0f64,
8615        0f64,
8616        0f64,
8617    ],
8618    theta0: [
8619        2.0202186091834364f64,
8620        2.4729570171507653f64,
8621        2.356718088967943f64,
8622        1.0780898789568973f64,
8623        4.351454891072263f64,
8624        0.7655014099247129f64,
8625        1.3554226970987964f64,
8626        2.746450110938277f64,
8627        1.776919711455427f64,
8628        2.419724474964938f64,
8629        1.784250094313803f64,
8630        5.522396286235258f64,
8631        5.3059754589879615f64,
8632        5.388005933831694f64,
8633        5.948431156647074f64,
8634        4.522846223618106f64,
8635        3.568500188627606f64,
8636        11.044792572470516f64,
8637    ],
8638    theta1: [
8639        959.7891933286942f64,
8640        731.077582955928f64,
8641        522.3307938967249f64,
8642        449.1358738582876f64,
8643        427.10754977009157f64,
8644        388.83160660922994f64,
8645        354.1171823199879f64,
8646        290.6454915444109f64,
8647        224.66977689099764f64,
8648        140.70512817020406f64,
8649        -35.32930378471962f64,
8650        49.9855316454168f64,
8651        -0.9065240134858548f64,
8652        -1.626123264083117f64,
8653        -1.314581992602129f64,
8654        -8.810596596992575f64,
8655        -70.65860756943924f64,
8656        99.9710632908336f64,
8657    ],
8658};
8659const ROTATION_OPHELIA: RotationalElement<18usize> = RotationalElement {
8660    typ: RotationalElementType::Rotation,
8661    c0: 2.2750366799746087f64,
8662    c1: -16.692447910262292f64,
8663    c2: 0f64,
8664    c: [
8665        0f64,
8666        -0.0005235987755982988f64,
8667        0f64,
8668        0f64,
8669        0f64,
8670        0f64,
8671        0f64,
8672        0f64,
8673        0f64,
8674        0f64,
8675        0f64,
8676        0f64,
8677        0f64,
8678        0f64,
8679        0f64,
8680        0f64,
8681        0f64,
8682        0f64,
8683    ],
8684    theta0: [
8685        2.0202186091834364f64,
8686        2.4729570171507653f64,
8687        2.356718088967943f64,
8688        1.0780898789568973f64,
8689        4.351454891072263f64,
8690        0.7655014099247129f64,
8691        1.3554226970987964f64,
8692        2.746450110938277f64,
8693        1.776919711455427f64,
8694        2.419724474964938f64,
8695        1.784250094313803f64,
8696        5.522396286235258f64,
8697        5.3059754589879615f64,
8698        5.388005933831694f64,
8699        5.948431156647074f64,
8700        4.522846223618106f64,
8701        3.568500188627606f64,
8702        11.044792572470516f64,
8703    ],
8704    theta1: [
8705        959.7891933286942f64,
8706        731.077582955928f64,
8707        522.3307938967249f64,
8708        449.1358738582876f64,
8709        427.10754977009157f64,
8710        388.83160660922994f64,
8711        354.1171823199879f64,
8712        290.6454915444109f64,
8713        224.66977689099764f64,
8714        140.70512817020406f64,
8715        -35.32930378471962f64,
8716        49.9855316454168f64,
8717        -0.9065240134858548f64,
8718        -1.626123264083117f64,
8719        -1.314581992602129f64,
8720        -8.810596596992575f64,
8721        -70.65860756943924f64,
8722        99.9710632908336f64,
8723    ],
8724};
8725impl RotationalElements for Ophelia {
8726    fn rotational_elements(&self, t: f64) -> Elements {
8727        (
8728            RIGHT_ASCENSION_OPHELIA.angle(t),
8729            DECLINATION_OPHELIA.angle(t),
8730            ROTATION_OPHELIA.angle(t),
8731        )
8732    }
8733    fn rotational_element_rates(&self, t: f64) -> Elements {
8734        (
8735            RIGHT_ASCENSION_OPHELIA.angle_dot(t),
8736            DECLINATION_OPHELIA.angle_dot(t),
8737            ROTATION_OPHELIA.angle_dot(t),
8738        )
8739    }
8740}
8741#[doc = "Bianca (NAIF ID: 708)."]
8742#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8743#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8744pub struct Bianca;
8745impl Origin for Bianca {
8746    fn id(&self) -> NaifId {
8747        NaifId(708i32)
8748    }
8749    fn name(&self) -> &'static str {
8750        "Bianca"
8751    }
8752}
8753impl Display for Bianca {
8754    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
8755        write!(f, "{}", self.name())
8756    }
8757}
8758impl From<Bianca> for DynOrigin {
8759    fn from(_: Bianca) -> Self {
8760        DynOrigin::Bianca
8761    }
8762}
8763impl MeanRadius for Bianca {
8764    fn mean_radius(&self) -> Distance {
8765        Distance::kilometers(21f64)
8766    }
8767}
8768impl TriaxialEllipsoid for Bianca {
8769    fn radii(&self) -> Radii {
8770        (
8771            Distance::kilometers(21f64),
8772            Distance::kilometers(21f64),
8773            Distance::kilometers(21f64),
8774        )
8775    }
8776}
8777impl Spheroid for Bianca {}
8778const RIGHT_ASCENSION_BIANCA: RotationalElement<18usize> = RotationalElement {
8779    typ: RotationalElementType::RightAscension,
8780    c0: 4.49090669830661f64,
8781    c1: 0f64,
8782    c2: 0f64,
8783    c: [
8784        0f64,
8785        0f64,
8786        -0.0027925268031909274f64,
8787        0f64,
8788        0f64,
8789        0f64,
8790        0f64,
8791        0f64,
8792        0f64,
8793        0f64,
8794        0f64,
8795        0f64,
8796        0f64,
8797        0f64,
8798        0f64,
8799        0f64,
8800        0f64,
8801        0f64,
8802    ],
8803    theta0: [
8804        2.0202186091834364f64,
8805        2.4729570171507653f64,
8806        2.356718088967943f64,
8807        1.0780898789568973f64,
8808        4.351454891072263f64,
8809        0.7655014099247129f64,
8810        1.3554226970987964f64,
8811        2.746450110938277f64,
8812        1.776919711455427f64,
8813        2.419724474964938f64,
8814        1.784250094313803f64,
8815        5.522396286235258f64,
8816        5.3059754589879615f64,
8817        5.388005933831694f64,
8818        5.948431156647074f64,
8819        4.522846223618106f64,
8820        3.568500188627606f64,
8821        11.044792572470516f64,
8822    ],
8823    theta1: [
8824        959.7891933286942f64,
8825        731.077582955928f64,
8826        522.3307938967249f64,
8827        449.1358738582876f64,
8828        427.10754977009157f64,
8829        388.83160660922994f64,
8830        354.1171823199879f64,
8831        290.6454915444109f64,
8832        224.66977689099764f64,
8833        140.70512817020406f64,
8834        -35.32930378471962f64,
8835        49.9855316454168f64,
8836        -0.9065240134858548f64,
8837        -1.626123264083117f64,
8838        -1.314581992602129f64,
8839        -8.810596596992575f64,
8840        -70.65860756943924f64,
8841        99.9710632908336f64,
8842    ],
8843};
8844const DECLINATION_BIANCA: RotationalElement<18usize> = RotationalElement {
8845    typ: RotationalElementType::Declination,
8846    c0: -0.2649409804527392f64,
8847    c1: 0f64,
8848    c2: 0f64,
8849    c: [
8850        0f64,
8851        0f64,
8852        0.0027925268031909274f64,
8853        0f64,
8854        0f64,
8855        0f64,
8856        0f64,
8857        0f64,
8858        0f64,
8859        0f64,
8860        0f64,
8861        0f64,
8862        0f64,
8863        0f64,
8864        0f64,
8865        0f64,
8866        0f64,
8867        0f64,
8868    ],
8869    theta0: [
8870        2.0202186091834364f64,
8871        2.4729570171507653f64,
8872        2.356718088967943f64,
8873        1.0780898789568973f64,
8874        4.351454891072263f64,
8875        0.7655014099247129f64,
8876        1.3554226970987964f64,
8877        2.746450110938277f64,
8878        1.776919711455427f64,
8879        2.419724474964938f64,
8880        1.784250094313803f64,
8881        5.522396286235258f64,
8882        5.3059754589879615f64,
8883        5.388005933831694f64,
8884        5.948431156647074f64,
8885        4.522846223618106f64,
8886        3.568500188627606f64,
8887        11.044792572470516f64,
8888    ],
8889    theta1: [
8890        959.7891933286942f64,
8891        731.077582955928f64,
8892        522.3307938967249f64,
8893        449.1358738582876f64,
8894        427.10754977009157f64,
8895        388.83160660922994f64,
8896        354.1171823199879f64,
8897        290.6454915444109f64,
8898        224.66977689099764f64,
8899        140.70512817020406f64,
8900        -35.32930378471962f64,
8901        49.9855316454168f64,
8902        -0.9065240134858548f64,
8903        -1.626123264083117f64,
8904        -1.314581992602129f64,
8905        -8.810596596992575f64,
8906        -70.65860756943924f64,
8907        99.9710632908336f64,
8908    ],
8909};
8910const ROTATION_BIANCA: RotationalElement<18usize> = RotationalElement {
8911    typ: RotationalElementType::Rotation,
8912    c0: 1.8406242291532198f64,
8913    c1: -14.458158751655587f64,
8914    c2: 0f64,
8915    c: [
8916        0f64,
8917        0f64,
8918        -0.0006981317007977319f64,
8919        0f64,
8920        0f64,
8921        0f64,
8922        0f64,
8923        0f64,
8924        0f64,
8925        0f64,
8926        0f64,
8927        0f64,
8928        0f64,
8929        0f64,
8930        0f64,
8931        0f64,
8932        0f64,
8933        0f64,
8934    ],
8935    theta0: [
8936        2.0202186091834364f64,
8937        2.4729570171507653f64,
8938        2.356718088967943f64,
8939        1.0780898789568973f64,
8940        4.351454891072263f64,
8941        0.7655014099247129f64,
8942        1.3554226970987964f64,
8943        2.746450110938277f64,
8944        1.776919711455427f64,
8945        2.419724474964938f64,
8946        1.784250094313803f64,
8947        5.522396286235258f64,
8948        5.3059754589879615f64,
8949        5.388005933831694f64,
8950        5.948431156647074f64,
8951        4.522846223618106f64,
8952        3.568500188627606f64,
8953        11.044792572470516f64,
8954    ],
8955    theta1: [
8956        959.7891933286942f64,
8957        731.077582955928f64,
8958        522.3307938967249f64,
8959        449.1358738582876f64,
8960        427.10754977009157f64,
8961        388.83160660922994f64,
8962        354.1171823199879f64,
8963        290.6454915444109f64,
8964        224.66977689099764f64,
8965        140.70512817020406f64,
8966        -35.32930378471962f64,
8967        49.9855316454168f64,
8968        -0.9065240134858548f64,
8969        -1.626123264083117f64,
8970        -1.314581992602129f64,
8971        -8.810596596992575f64,
8972        -70.65860756943924f64,
8973        99.9710632908336f64,
8974    ],
8975};
8976impl RotationalElements for Bianca {
8977    fn rotational_elements(&self, t: f64) -> Elements {
8978        (
8979            RIGHT_ASCENSION_BIANCA.angle(t),
8980            DECLINATION_BIANCA.angle(t),
8981            ROTATION_BIANCA.angle(t),
8982        )
8983    }
8984    fn rotational_element_rates(&self, t: f64) -> Elements {
8985        (
8986            RIGHT_ASCENSION_BIANCA.angle_dot(t),
8987            DECLINATION_BIANCA.angle_dot(t),
8988            ROTATION_BIANCA.angle_dot(t),
8989        )
8990    }
8991}
8992#[doc = "Cressida (NAIF ID: 709)."]
8993#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8994#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8995pub struct Cressida;
8996impl Origin for Cressida {
8997    fn id(&self) -> NaifId {
8998        NaifId(709i32)
8999    }
9000    fn name(&self) -> &'static str {
9001        "Cressida"
9002    }
9003}
9004impl Display for Cressida {
9005    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
9006        write!(f, "{}", self.name())
9007    }
9008}
9009impl From<Cressida> for DynOrigin {
9010    fn from(_: Cressida) -> Self {
9011        DynOrigin::Cressida
9012    }
9013}
9014impl MeanRadius for Cressida {
9015    fn mean_radius(&self) -> Distance {
9016        Distance::kilometers(31f64)
9017    }
9018}
9019impl TriaxialEllipsoid for Cressida {
9020    fn radii(&self) -> Radii {
9021        (
9022            Distance::kilometers(31f64),
9023            Distance::kilometers(31f64),
9024            Distance::kilometers(31f64),
9025        )
9026    }
9027}
9028impl Spheroid for Cressida {}
9029const RIGHT_ASCENSION_CRESSIDA: RotationalElement<18usize> = RotationalElement {
9030    typ: RotationalElementType::RightAscension,
9031    c0: 4.49090669830661f64,
9032    c1: 0f64,
9033    c2: 0f64,
9034    c: [
9035        0f64,
9036        0f64,
9037        0f64,
9038        -0.0006981317007977319f64,
9039        0f64,
9040        0f64,
9041        0f64,
9042        0f64,
9043        0f64,
9044        0f64,
9045        0f64,
9046        0f64,
9047        0f64,
9048        0f64,
9049        0f64,
9050        0f64,
9051        0f64,
9052        0f64,
9053    ],
9054    theta0: [
9055        2.0202186091834364f64,
9056        2.4729570171507653f64,
9057        2.356718088967943f64,
9058        1.0780898789568973f64,
9059        4.351454891072263f64,
9060        0.7655014099247129f64,
9061        1.3554226970987964f64,
9062        2.746450110938277f64,
9063        1.776919711455427f64,
9064        2.419724474964938f64,
9065        1.784250094313803f64,
9066        5.522396286235258f64,
9067        5.3059754589879615f64,
9068        5.388005933831694f64,
9069        5.948431156647074f64,
9070        4.522846223618106f64,
9071        3.568500188627606f64,
9072        11.044792572470516f64,
9073    ],
9074    theta1: [
9075        959.7891933286942f64,
9076        731.077582955928f64,
9077        522.3307938967249f64,
9078        449.1358738582876f64,
9079        427.10754977009157f64,
9080        388.83160660922994f64,
9081        354.1171823199879f64,
9082        290.6454915444109f64,
9083        224.66977689099764f64,
9084        140.70512817020406f64,
9085        -35.32930378471962f64,
9086        49.9855316454168f64,
9087        -0.9065240134858548f64,
9088        -1.626123264083117f64,
9089        -1.314581992602129f64,
9090        -8.810596596992575f64,
9091        -70.65860756943924f64,
9092        99.9710632908336f64,
9093    ],
9094};
9095const DECLINATION_CRESSIDA: RotationalElement<18usize> = RotationalElement {
9096    typ: RotationalElementType::Declination,
9097    c0: -0.2649409804527392f64,
9098    c1: 0f64,
9099    c2: 0f64,
9100    c: [
9101        0f64,
9102        0f64,
9103        0f64,
9104        0.0006981317007977319f64,
9105        0f64,
9106        0f64,
9107        0f64,
9108        0f64,
9109        0f64,
9110        0f64,
9111        0f64,
9112        0f64,
9113        0f64,
9114        0f64,
9115        0f64,
9116        0f64,
9117        0f64,
9118        0f64,
9119    ],
9120    theta0: [
9121        2.0202186091834364f64,
9122        2.4729570171507653f64,
9123        2.356718088967943f64,
9124        1.0780898789568973f64,
9125        4.351454891072263f64,
9126        0.7655014099247129f64,
9127        1.3554226970987964f64,
9128        2.746450110938277f64,
9129        1.776919711455427f64,
9130        2.419724474964938f64,
9131        1.784250094313803f64,
9132        5.522396286235258f64,
9133        5.3059754589879615f64,
9134        5.388005933831694f64,
9135        5.948431156647074f64,
9136        4.522846223618106f64,
9137        3.568500188627606f64,
9138        11.044792572470516f64,
9139    ],
9140    theta1: [
9141        959.7891933286942f64,
9142        731.077582955928f64,
9143        522.3307938967249f64,
9144        449.1358738582876f64,
9145        427.10754977009157f64,
9146        388.83160660922994f64,
9147        354.1171823199879f64,
9148        290.6454915444109f64,
9149        224.66977689099764f64,
9150        140.70512817020406f64,
9151        -35.32930378471962f64,
9152        49.9855316454168f64,
9153        -0.9065240134858548f64,
9154        -1.626123264083117f64,
9155        -1.314581992602129f64,
9156        -8.810596596992575f64,
9157        -70.65860756943924f64,
9158        99.9710632908336f64,
9159    ],
9160};
9161const ROTATION_CRESSIDA: RotationalElement<18usize> = RotationalElement {
9162    typ: RotationalElementType::Rotation,
9163    c0: 1.0325367854798453f64,
9164    c1: -13.553906388910956f64,
9165    c2: 0f64,
9166    c: [
9167        0f64,
9168        0f64,
9169        0f64,
9170        -0.00017453292519943296f64,
9171        0f64,
9172        0f64,
9173        0f64,
9174        0f64,
9175        0f64,
9176        0f64,
9177        0f64,
9178        0f64,
9179        0f64,
9180        0f64,
9181        0f64,
9182        0f64,
9183        0f64,
9184        0f64,
9185    ],
9186    theta0: [
9187        2.0202186091834364f64,
9188        2.4729570171507653f64,
9189        2.356718088967943f64,
9190        1.0780898789568973f64,
9191        4.351454891072263f64,
9192        0.7655014099247129f64,
9193        1.3554226970987964f64,
9194        2.746450110938277f64,
9195        1.776919711455427f64,
9196        2.419724474964938f64,
9197        1.784250094313803f64,
9198        5.522396286235258f64,
9199        5.3059754589879615f64,
9200        5.388005933831694f64,
9201        5.948431156647074f64,
9202        4.522846223618106f64,
9203        3.568500188627606f64,
9204        11.044792572470516f64,
9205    ],
9206    theta1: [
9207        959.7891933286942f64,
9208        731.077582955928f64,
9209        522.3307938967249f64,
9210        449.1358738582876f64,
9211        427.10754977009157f64,
9212        388.83160660922994f64,
9213        354.1171823199879f64,
9214        290.6454915444109f64,
9215        224.66977689099764f64,
9216        140.70512817020406f64,
9217        -35.32930378471962f64,
9218        49.9855316454168f64,
9219        -0.9065240134858548f64,
9220        -1.626123264083117f64,
9221        -1.314581992602129f64,
9222        -8.810596596992575f64,
9223        -70.65860756943924f64,
9224        99.9710632908336f64,
9225    ],
9226};
9227impl RotationalElements for Cressida {
9228    fn rotational_elements(&self, t: f64) -> Elements {
9229        (
9230            RIGHT_ASCENSION_CRESSIDA.angle(t),
9231            DECLINATION_CRESSIDA.angle(t),
9232            ROTATION_CRESSIDA.angle(t),
9233        )
9234    }
9235    fn rotational_element_rates(&self, t: f64) -> Elements {
9236        (
9237            RIGHT_ASCENSION_CRESSIDA.angle_dot(t),
9238            DECLINATION_CRESSIDA.angle_dot(t),
9239            ROTATION_CRESSIDA.angle_dot(t),
9240        )
9241    }
9242}
9243#[doc = "Desdemona (NAIF ID: 710)."]
9244#[derive(Debug, Copy, Clone, Eq, PartialEq)]
9245#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9246pub struct Desdemona;
9247impl Origin for Desdemona {
9248    fn id(&self) -> NaifId {
9249        NaifId(710i32)
9250    }
9251    fn name(&self) -> &'static str {
9252        "Desdemona"
9253    }
9254}
9255impl Display for Desdemona {
9256    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
9257        write!(f, "{}", self.name())
9258    }
9259}
9260impl From<Desdemona> for DynOrigin {
9261    fn from(_: Desdemona) -> Self {
9262        DynOrigin::Desdemona
9263    }
9264}
9265impl MeanRadius for Desdemona {
9266    fn mean_radius(&self) -> Distance {
9267        Distance::kilometers(27f64)
9268    }
9269}
9270impl TriaxialEllipsoid for Desdemona {
9271    fn radii(&self) -> Radii {
9272        (
9273            Distance::kilometers(27f64),
9274            Distance::kilometers(27f64),
9275            Distance::kilometers(27f64),
9276        )
9277    }
9278}
9279impl Spheroid for Desdemona {}
9280const RIGHT_ASCENSION_DESDEMONA: RotationalElement<18usize> = RotationalElement {
9281    typ: RotationalElementType::RightAscension,
9282    c0: 4.49090669830661f64,
9283    c1: 0f64,
9284    c2: 0f64,
9285    c: [
9286        0f64,
9287        0f64,
9288        0f64,
9289        0f64,
9290        -0.0029670597283903604f64,
9291        0f64,
9292        0f64,
9293        0f64,
9294        0f64,
9295        0f64,
9296        0f64,
9297        0f64,
9298        0f64,
9299        0f64,
9300        0f64,
9301        0f64,
9302        0f64,
9303        0f64,
9304    ],
9305    theta0: [
9306        2.0202186091834364f64,
9307        2.4729570171507653f64,
9308        2.356718088967943f64,
9309        1.0780898789568973f64,
9310        4.351454891072263f64,
9311        0.7655014099247129f64,
9312        1.3554226970987964f64,
9313        2.746450110938277f64,
9314        1.776919711455427f64,
9315        2.419724474964938f64,
9316        1.784250094313803f64,
9317        5.522396286235258f64,
9318        5.3059754589879615f64,
9319        5.388005933831694f64,
9320        5.948431156647074f64,
9321        4.522846223618106f64,
9322        3.568500188627606f64,
9323        11.044792572470516f64,
9324    ],
9325    theta1: [
9326        959.7891933286942f64,
9327        731.077582955928f64,
9328        522.3307938967249f64,
9329        449.1358738582876f64,
9330        427.10754977009157f64,
9331        388.83160660922994f64,
9332        354.1171823199879f64,
9333        290.6454915444109f64,
9334        224.66977689099764f64,
9335        140.70512817020406f64,
9336        -35.32930378471962f64,
9337        49.9855316454168f64,
9338        -0.9065240134858548f64,
9339        -1.626123264083117f64,
9340        -1.314581992602129f64,
9341        -8.810596596992575f64,
9342        -70.65860756943924f64,
9343        99.9710632908336f64,
9344    ],
9345};
9346const DECLINATION_DESDEMONA: RotationalElement<18usize> = RotationalElement {
9347    typ: RotationalElementType::Declination,
9348    c0: -0.2649409804527392f64,
9349    c1: 0f64,
9350    c2: 0f64,
9351    c: [
9352        0f64,
9353        0f64,
9354        0f64,
9355        0f64,
9356        0.0027925268031909274f64,
9357        0f64,
9358        0f64,
9359        0f64,
9360        0f64,
9361        0f64,
9362        0f64,
9363        0f64,
9364        0f64,
9365        0f64,
9366        0f64,
9367        0f64,
9368        0f64,
9369        0f64,
9370    ],
9371    theta0: [
9372        2.0202186091834364f64,
9373        2.4729570171507653f64,
9374        2.356718088967943f64,
9375        1.0780898789568973f64,
9376        4.351454891072263f64,
9377        0.7655014099247129f64,
9378        1.3554226970987964f64,
9379        2.746450110938277f64,
9380        1.776919711455427f64,
9381        2.419724474964938f64,
9382        1.784250094313803f64,
9383        5.522396286235258f64,
9384        5.3059754589879615f64,
9385        5.388005933831694f64,
9386        5.948431156647074f64,
9387        4.522846223618106f64,
9388        3.568500188627606f64,
9389        11.044792572470516f64,
9390    ],
9391    theta1: [
9392        959.7891933286942f64,
9393        731.077582955928f64,
9394        522.3307938967249f64,
9395        449.1358738582876f64,
9396        427.10754977009157f64,
9397        388.83160660922994f64,
9398        354.1171823199879f64,
9399        290.6454915444109f64,
9400        224.66977689099764f64,
9401        140.70512817020406f64,
9402        -35.32930378471962f64,
9403        49.9855316454168f64,
9404        -0.9065240134858548f64,
9405        -1.626123264083117f64,
9406        -1.314581992602129f64,
9407        -8.810596596992575f64,
9408        -70.65860756943924f64,
9409        99.9710632908336f64,
9410    ],
9411};
9412const ROTATION_DESDEMONA: RotationalElement<18usize> = RotationalElement {
9413    typ: RotationalElementType::Rotation,
9414    c0: 1.6594590527962085f64,
9415    c1: -13.265430289266899f64,
9416    c2: 0f64,
9417    c: [
9418        0f64,
9419        0f64,
9420        0f64,
9421        0f64,
9422        -0.0006981317007977319f64,
9423        0f64,
9424        0f64,
9425        0f64,
9426        0f64,
9427        0f64,
9428        0f64,
9429        0f64,
9430        0f64,
9431        0f64,
9432        0f64,
9433        0f64,
9434        0f64,
9435        0f64,
9436    ],
9437    theta0: [
9438        2.0202186091834364f64,
9439        2.4729570171507653f64,
9440        2.356718088967943f64,
9441        1.0780898789568973f64,
9442        4.351454891072263f64,
9443        0.7655014099247129f64,
9444        1.3554226970987964f64,
9445        2.746450110938277f64,
9446        1.776919711455427f64,
9447        2.419724474964938f64,
9448        1.784250094313803f64,
9449        5.522396286235258f64,
9450        5.3059754589879615f64,
9451        5.388005933831694f64,
9452        5.948431156647074f64,
9453        4.522846223618106f64,
9454        3.568500188627606f64,
9455        11.044792572470516f64,
9456    ],
9457    theta1: [
9458        959.7891933286942f64,
9459        731.077582955928f64,
9460        522.3307938967249f64,
9461        449.1358738582876f64,
9462        427.10754977009157f64,
9463        388.83160660922994f64,
9464        354.1171823199879f64,
9465        290.6454915444109f64,
9466        224.66977689099764f64,
9467        140.70512817020406f64,
9468        -35.32930378471962f64,
9469        49.9855316454168f64,
9470        -0.9065240134858548f64,
9471        -1.626123264083117f64,
9472        -1.314581992602129f64,
9473        -8.810596596992575f64,
9474        -70.65860756943924f64,
9475        99.9710632908336f64,
9476    ],
9477};
9478impl RotationalElements for Desdemona {
9479    fn rotational_elements(&self, t: f64) -> Elements {
9480        (
9481            RIGHT_ASCENSION_DESDEMONA.angle(t),
9482            DECLINATION_DESDEMONA.angle(t),
9483            ROTATION_DESDEMONA.angle(t),
9484        )
9485    }
9486    fn rotational_element_rates(&self, t: f64) -> Elements {
9487        (
9488            RIGHT_ASCENSION_DESDEMONA.angle_dot(t),
9489            DECLINATION_DESDEMONA.angle_dot(t),
9490            ROTATION_DESDEMONA.angle_dot(t),
9491        )
9492    }
9493}
9494#[doc = "Juliet (NAIF ID: 711)."]
9495#[derive(Debug, Copy, Clone, Eq, PartialEq)]
9496#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9497pub struct Juliet;
9498impl Origin for Juliet {
9499    fn id(&self) -> NaifId {
9500        NaifId(711i32)
9501    }
9502    fn name(&self) -> &'static str {
9503        "Juliet"
9504    }
9505}
9506impl Display for Juliet {
9507    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
9508        write!(f, "{}", self.name())
9509    }
9510}
9511impl From<Juliet> for DynOrigin {
9512    fn from(_: Juliet) -> Self {
9513        DynOrigin::Juliet
9514    }
9515}
9516impl MeanRadius for Juliet {
9517    fn mean_radius(&self) -> Distance {
9518        Distance::kilometers(42f64)
9519    }
9520}
9521impl TriaxialEllipsoid for Juliet {
9522    fn radii(&self) -> Radii {
9523        (
9524            Distance::kilometers(42f64),
9525            Distance::kilometers(42f64),
9526            Distance::kilometers(42f64),
9527        )
9528    }
9529}
9530impl Spheroid for Juliet {}
9531const RIGHT_ASCENSION_JULIET: RotationalElement<18usize> = RotationalElement {
9532    typ: RotationalElementType::RightAscension,
9533    c0: 4.49090669830661f64,
9534    c1: 0f64,
9535    c2: 0f64,
9536    c: [
9537        0f64,
9538        0f64,
9539        0f64,
9540        0f64,
9541        0f64,
9542        -0.0010471975511965976f64,
9543        0f64,
9544        0f64,
9545        0f64,
9546        0f64,
9547        0f64,
9548        0f64,
9549        0f64,
9550        0f64,
9551        0f64,
9552        0f64,
9553        0f64,
9554        0f64,
9555    ],
9556    theta0: [
9557        2.0202186091834364f64,
9558        2.4729570171507653f64,
9559        2.356718088967943f64,
9560        1.0780898789568973f64,
9561        4.351454891072263f64,
9562        0.7655014099247129f64,
9563        1.3554226970987964f64,
9564        2.746450110938277f64,
9565        1.776919711455427f64,
9566        2.419724474964938f64,
9567        1.784250094313803f64,
9568        5.522396286235258f64,
9569        5.3059754589879615f64,
9570        5.388005933831694f64,
9571        5.948431156647074f64,
9572        4.522846223618106f64,
9573        3.568500188627606f64,
9574        11.044792572470516f64,
9575    ],
9576    theta1: [
9577        959.7891933286942f64,
9578        731.077582955928f64,
9579        522.3307938967249f64,
9580        449.1358738582876f64,
9581        427.10754977009157f64,
9582        388.83160660922994f64,
9583        354.1171823199879f64,
9584        290.6454915444109f64,
9585        224.66977689099764f64,
9586        140.70512817020406f64,
9587        -35.32930378471962f64,
9588        49.9855316454168f64,
9589        -0.9065240134858548f64,
9590        -1.626123264083117f64,
9591        -1.314581992602129f64,
9592        -8.810596596992575f64,
9593        -70.65860756943924f64,
9594        99.9710632908336f64,
9595    ],
9596};
9597const DECLINATION_JULIET: RotationalElement<18usize> = RotationalElement {
9598    typ: RotationalElementType::Declination,
9599    c0: -0.2649409804527392f64,
9600    c1: 0f64,
9601    c2: 0f64,
9602    c: [
9603        0f64,
9604        0f64,
9605        0f64,
9606        0f64,
9607        0f64,
9608        0.0010471975511965976f64,
9609        0f64,
9610        0f64,
9611        0f64,
9612        0f64,
9613        0f64,
9614        0f64,
9615        0f64,
9616        0f64,
9617        0f64,
9618        0f64,
9619        0f64,
9620        0f64,
9621    ],
9622    theta0: [
9623        2.0202186091834364f64,
9624        2.4729570171507653f64,
9625        2.356718088967943f64,
9626        1.0780898789568973f64,
9627        4.351454891072263f64,
9628        0.7655014099247129f64,
9629        1.3554226970987964f64,
9630        2.746450110938277f64,
9631        1.776919711455427f64,
9632        2.419724474964938f64,
9633        1.784250094313803f64,
9634        5.522396286235258f64,
9635        5.3059754589879615f64,
9636        5.388005933831694f64,
9637        5.948431156647074f64,
9638        4.522846223618106f64,
9639        3.568500188627606f64,
9640        11.044792572470516f64,
9641    ],
9642    theta1: [
9643        959.7891933286942f64,
9644        731.077582955928f64,
9645        522.3307938967249f64,
9646        449.1358738582876f64,
9647        427.10754977009157f64,
9648        388.83160660922994f64,
9649        354.1171823199879f64,
9650        290.6454915444109f64,
9651        224.66977689099764f64,
9652        140.70512817020406f64,
9653        -35.32930378471962f64,
9654        49.9855316454168f64,
9655        -0.9065240134858548f64,
9656        -1.626123264083117f64,
9657        -1.314581992602129f64,
9658        -8.810596596992575f64,
9659        -70.65860756943924f64,
9660        99.9710632908336f64,
9661    ],
9662};
9663const ROTATION_JULIET: RotationalElement<18usize> = RotationalElement {
9664    typ: RotationalElementType::Rotation,
9665    c0: 5.2806681848340435f64,
9666    c1: -12.74309158902866f64,
9667    c2: 0f64,
9668    c: [
9669        0f64,
9670        0f64,
9671        0f64,
9672        0f64,
9673        0f64,
9674        -0.00034906585039886593f64,
9675        0f64,
9676        0f64,
9677        0f64,
9678        0f64,
9679        0f64,
9680        0f64,
9681        0f64,
9682        0f64,
9683        0f64,
9684        0f64,
9685        0f64,
9686        0f64,
9687    ],
9688    theta0: [
9689        2.0202186091834364f64,
9690        2.4729570171507653f64,
9691        2.356718088967943f64,
9692        1.0780898789568973f64,
9693        4.351454891072263f64,
9694        0.7655014099247129f64,
9695        1.3554226970987964f64,
9696        2.746450110938277f64,
9697        1.776919711455427f64,
9698        2.419724474964938f64,
9699        1.784250094313803f64,
9700        5.522396286235258f64,
9701        5.3059754589879615f64,
9702        5.388005933831694f64,
9703        5.948431156647074f64,
9704        4.522846223618106f64,
9705        3.568500188627606f64,
9706        11.044792572470516f64,
9707    ],
9708    theta1: [
9709        959.7891933286942f64,
9710        731.077582955928f64,
9711        522.3307938967249f64,
9712        449.1358738582876f64,
9713        427.10754977009157f64,
9714        388.83160660922994f64,
9715        354.1171823199879f64,
9716        290.6454915444109f64,
9717        224.66977689099764f64,
9718        140.70512817020406f64,
9719        -35.32930378471962f64,
9720        49.9855316454168f64,
9721        -0.9065240134858548f64,
9722        -1.626123264083117f64,
9723        -1.314581992602129f64,
9724        -8.810596596992575f64,
9725        -70.65860756943924f64,
9726        99.9710632908336f64,
9727    ],
9728};
9729impl RotationalElements for Juliet {
9730    fn rotational_elements(&self, t: f64) -> Elements {
9731        (
9732            RIGHT_ASCENSION_JULIET.angle(t),
9733            DECLINATION_JULIET.angle(t),
9734            ROTATION_JULIET.angle(t),
9735        )
9736    }
9737    fn rotational_element_rates(&self, t: f64) -> Elements {
9738        (
9739            RIGHT_ASCENSION_JULIET.angle_dot(t),
9740            DECLINATION_JULIET.angle_dot(t),
9741            ROTATION_JULIET.angle_dot(t),
9742        )
9743    }
9744}
9745#[doc = "Portia (NAIF ID: 712)."]
9746#[derive(Debug, Copy, Clone, Eq, PartialEq)]
9747#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9748pub struct Portia;
9749impl Origin for Portia {
9750    fn id(&self) -> NaifId {
9751        NaifId(712i32)
9752    }
9753    fn name(&self) -> &'static str {
9754        "Portia"
9755    }
9756}
9757impl Display for Portia {
9758    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
9759        write!(f, "{}", self.name())
9760    }
9761}
9762impl From<Portia> for DynOrigin {
9763    fn from(_: Portia) -> Self {
9764        DynOrigin::Portia
9765    }
9766}
9767impl MeanRadius for Portia {
9768    fn mean_radius(&self) -> Distance {
9769        Distance::kilometers(54f64)
9770    }
9771}
9772impl TriaxialEllipsoid for Portia {
9773    fn radii(&self) -> Radii {
9774        (
9775            Distance::kilometers(54f64),
9776            Distance::kilometers(54f64),
9777            Distance::kilometers(54f64),
9778        )
9779    }
9780}
9781impl Spheroid for Portia {}
9782const RIGHT_ASCENSION_PORTIA: RotationalElement<18usize> = RotationalElement {
9783    typ: RotationalElementType::RightAscension,
9784    c0: 4.49090669830661f64,
9785    c1: 0f64,
9786    c2: 0f64,
9787    c: [
9788        0f64,
9789        0f64,
9790        0f64,
9791        0f64,
9792        0f64,
9793        0f64,
9794        -0.0015707963267948964f64,
9795        0f64,
9796        0f64,
9797        0f64,
9798        0f64,
9799        0f64,
9800        0f64,
9801        0f64,
9802        0f64,
9803        0f64,
9804        0f64,
9805        0f64,
9806    ],
9807    theta0: [
9808        2.0202186091834364f64,
9809        2.4729570171507653f64,
9810        2.356718088967943f64,
9811        1.0780898789568973f64,
9812        4.351454891072263f64,
9813        0.7655014099247129f64,
9814        1.3554226970987964f64,
9815        2.746450110938277f64,
9816        1.776919711455427f64,
9817        2.419724474964938f64,
9818        1.784250094313803f64,
9819        5.522396286235258f64,
9820        5.3059754589879615f64,
9821        5.388005933831694f64,
9822        5.948431156647074f64,
9823        4.522846223618106f64,
9824        3.568500188627606f64,
9825        11.044792572470516f64,
9826    ],
9827    theta1: [
9828        959.7891933286942f64,
9829        731.077582955928f64,
9830        522.3307938967249f64,
9831        449.1358738582876f64,
9832        427.10754977009157f64,
9833        388.83160660922994f64,
9834        354.1171823199879f64,
9835        290.6454915444109f64,
9836        224.66977689099764f64,
9837        140.70512817020406f64,
9838        -35.32930378471962f64,
9839        49.9855316454168f64,
9840        -0.9065240134858548f64,
9841        -1.626123264083117f64,
9842        -1.314581992602129f64,
9843        -8.810596596992575f64,
9844        -70.65860756943924f64,
9845        99.9710632908336f64,
9846    ],
9847};
9848const DECLINATION_PORTIA: RotationalElement<18usize> = RotationalElement {
9849    typ: RotationalElementType::Declination,
9850    c0: -0.2649409804527392f64,
9851    c1: 0f64,
9852    c2: 0f64,
9853    c: [
9854        0f64,
9855        0f64,
9856        0f64,
9857        0f64,
9858        0f64,
9859        0f64,
9860        0.0015707963267948964f64,
9861        0f64,
9862        0f64,
9863        0f64,
9864        0f64,
9865        0f64,
9866        0f64,
9867        0f64,
9868        0f64,
9869        0f64,
9870        0f64,
9871        0f64,
9872    ],
9873    theta0: [
9874        2.0202186091834364f64,
9875        2.4729570171507653f64,
9876        2.356718088967943f64,
9877        1.0780898789568973f64,
9878        4.351454891072263f64,
9879        0.7655014099247129f64,
9880        1.3554226970987964f64,
9881        2.746450110938277f64,
9882        1.776919711455427f64,
9883        2.419724474964938f64,
9884        1.784250094313803f64,
9885        5.522396286235258f64,
9886        5.3059754589879615f64,
9887        5.388005933831694f64,
9888        5.948431156647074f64,
9889        4.522846223618106f64,
9890        3.568500188627606f64,
9891        11.044792572470516f64,
9892    ],
9893    theta1: [
9894        959.7891933286942f64,
9895        731.077582955928f64,
9896        522.3307938967249f64,
9897        449.1358738582876f64,
9898        427.10754977009157f64,
9899        388.83160660922994f64,
9900        354.1171823199879f64,
9901        290.6454915444109f64,
9902        224.66977689099764f64,
9903        140.70512817020406f64,
9904        -35.32930378471962f64,
9905        49.9855316454168f64,
9906        -0.9065240134858548f64,
9907        -1.626123264083117f64,
9908        -1.314581992602129f64,
9909        -8.810596596992575f64,
9910        -70.65860756943924f64,
9911        99.9710632908336f64,
9912    ],
9913};
9914const ROTATION_PORTIA: RotationalElement<18usize> = RotationalElement {
9915    typ: RotationalElementType::Rotation,
9916    c0: 0.4368559117741807f64,
9917    c1: -12.243250601727652f64,
9918    c2: 0f64,
9919    c: [
9920        0f64,
9921        0f64,
9922        0f64,
9923        0f64,
9924        0f64,
9925        0f64,
9926        -0.00034906585039886593f64,
9927        0f64,
9928        0f64,
9929        0f64,
9930        0f64,
9931        0f64,
9932        0f64,
9933        0f64,
9934        0f64,
9935        0f64,
9936        0f64,
9937        0f64,
9938    ],
9939    theta0: [
9940        2.0202186091834364f64,
9941        2.4729570171507653f64,
9942        2.356718088967943f64,
9943        1.0780898789568973f64,
9944        4.351454891072263f64,
9945        0.7655014099247129f64,
9946        1.3554226970987964f64,
9947        2.746450110938277f64,
9948        1.776919711455427f64,
9949        2.419724474964938f64,
9950        1.784250094313803f64,
9951        5.522396286235258f64,
9952        5.3059754589879615f64,
9953        5.388005933831694f64,
9954        5.948431156647074f64,
9955        4.522846223618106f64,
9956        3.568500188627606f64,
9957        11.044792572470516f64,
9958    ],
9959    theta1: [
9960        959.7891933286942f64,
9961        731.077582955928f64,
9962        522.3307938967249f64,
9963        449.1358738582876f64,
9964        427.10754977009157f64,
9965        388.83160660922994f64,
9966        354.1171823199879f64,
9967        290.6454915444109f64,
9968        224.66977689099764f64,
9969        140.70512817020406f64,
9970        -35.32930378471962f64,
9971        49.9855316454168f64,
9972        -0.9065240134858548f64,
9973        -1.626123264083117f64,
9974        -1.314581992602129f64,
9975        -8.810596596992575f64,
9976        -70.65860756943924f64,
9977        99.9710632908336f64,
9978    ],
9979};
9980impl RotationalElements for Portia {
9981    fn rotational_elements(&self, t: f64) -> Elements {
9982        (
9983            RIGHT_ASCENSION_PORTIA.angle(t),
9984            DECLINATION_PORTIA.angle(t),
9985            ROTATION_PORTIA.angle(t),
9986        )
9987    }
9988    fn rotational_element_rates(&self, t: f64) -> Elements {
9989        (
9990            RIGHT_ASCENSION_PORTIA.angle_dot(t),
9991            DECLINATION_PORTIA.angle_dot(t),
9992            ROTATION_PORTIA.angle_dot(t),
9993        )
9994    }
9995}
9996#[doc = "Rosalind (NAIF ID: 713)."]
9997#[derive(Debug, Copy, Clone, Eq, PartialEq)]
9998#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9999pub struct Rosalind;
10000impl Origin for Rosalind {
10001    fn id(&self) -> NaifId {
10002        NaifId(713i32)
10003    }
10004    fn name(&self) -> &'static str {
10005        "Rosalind"
10006    }
10007}
10008impl Display for Rosalind {
10009    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10010        write!(f, "{}", self.name())
10011    }
10012}
10013impl From<Rosalind> for DynOrigin {
10014    fn from(_: Rosalind) -> Self {
10015        DynOrigin::Rosalind
10016    }
10017}
10018impl MeanRadius for Rosalind {
10019    fn mean_radius(&self) -> Distance {
10020        Distance::kilometers(27f64)
10021    }
10022}
10023impl TriaxialEllipsoid for Rosalind {
10024    fn radii(&self) -> Radii {
10025        (
10026            Distance::kilometers(27f64),
10027            Distance::kilometers(27f64),
10028            Distance::kilometers(27f64),
10029        )
10030    }
10031}
10032impl Spheroid for Rosalind {}
10033const RIGHT_ASCENSION_ROSALIND: RotationalElement<18usize> = RotationalElement {
10034    typ: RotationalElementType::RightAscension,
10035    c0: 4.49090669830661f64,
10036    c1: 0f64,
10037    c2: 0f64,
10038    c: [
10039        0f64,
10040        0f64,
10041        0f64,
10042        0f64,
10043        0f64,
10044        0f64,
10045        0f64,
10046        -0.005061454830783556f64,
10047        0f64,
10048        0f64,
10049        0f64,
10050        0f64,
10051        0f64,
10052        0f64,
10053        0f64,
10054        0f64,
10055        0f64,
10056        0f64,
10057    ],
10058    theta0: [
10059        2.0202186091834364f64,
10060        2.4729570171507653f64,
10061        2.356718088967943f64,
10062        1.0780898789568973f64,
10063        4.351454891072263f64,
10064        0.7655014099247129f64,
10065        1.3554226970987964f64,
10066        2.746450110938277f64,
10067        1.776919711455427f64,
10068        2.419724474964938f64,
10069        1.784250094313803f64,
10070        5.522396286235258f64,
10071        5.3059754589879615f64,
10072        5.388005933831694f64,
10073        5.948431156647074f64,
10074        4.522846223618106f64,
10075        3.568500188627606f64,
10076        11.044792572470516f64,
10077    ],
10078    theta1: [
10079        959.7891933286942f64,
10080        731.077582955928f64,
10081        522.3307938967249f64,
10082        449.1358738582876f64,
10083        427.10754977009157f64,
10084        388.83160660922994f64,
10085        354.1171823199879f64,
10086        290.6454915444109f64,
10087        224.66977689099764f64,
10088        140.70512817020406f64,
10089        -35.32930378471962f64,
10090        49.9855316454168f64,
10091        -0.9065240134858548f64,
10092        -1.626123264083117f64,
10093        -1.314581992602129f64,
10094        -8.810596596992575f64,
10095        -70.65860756943924f64,
10096        99.9710632908336f64,
10097    ],
10098};
10099const DECLINATION_ROSALIND: RotationalElement<18usize> = RotationalElement {
10100    typ: RotationalElementType::Declination,
10101    c0: -0.2649409804527392f64,
10102    c1: 0f64,
10103    c2: 0f64,
10104    c: [
10105        0f64,
10106        0f64,
10107        0f64,
10108        0f64,
10109        0f64,
10110        0f64,
10111        0f64,
10112        0.004886921905584123f64,
10113        0f64,
10114        0f64,
10115        0f64,
10116        0f64,
10117        0f64,
10118        0f64,
10119        0f64,
10120        0f64,
10121        0f64,
10122        0f64,
10123    ],
10124    theta0: [
10125        2.0202186091834364f64,
10126        2.4729570171507653f64,
10127        2.356718088967943f64,
10128        1.0780898789568973f64,
10129        4.351454891072263f64,
10130        0.7655014099247129f64,
10131        1.3554226970987964f64,
10132        2.746450110938277f64,
10133        1.776919711455427f64,
10134        2.419724474964938f64,
10135        1.784250094313803f64,
10136        5.522396286235258f64,
10137        5.3059754589879615f64,
10138        5.388005933831694f64,
10139        5.948431156647074f64,
10140        4.522846223618106f64,
10141        3.568500188627606f64,
10142        11.044792572470516f64,
10143    ],
10144    theta1: [
10145        959.7891933286942f64,
10146        731.077582955928f64,
10147        522.3307938967249f64,
10148        449.1358738582876f64,
10149        427.10754977009157f64,
10150        388.83160660922994f64,
10151        354.1171823199879f64,
10152        290.6454915444109f64,
10153        224.66977689099764f64,
10154        140.70512817020406f64,
10155        -35.32930378471962f64,
10156        49.9855316454168f64,
10157        -0.9065240134858548f64,
10158        -1.626123264083117f64,
10159        -1.314581992602129f64,
10160        -8.810596596992575f64,
10161        -70.65860756943924f64,
10162        99.9710632908336f64,
10163    ],
10164};
10165const ROTATION_ROSALIND: RotationalElement<18usize> = RotationalElement {
10166    typ: RotationalElementType::Rotation,
10167    c0: 5.496041814530144f64,
10168    c1: -11.250935609538423f64,
10169    c2: 0f64,
10170    c: [
10171        0f64,
10172        0f64,
10173        0f64,
10174        0f64,
10175        0f64,
10176        0f64,
10177        0f64,
10178        -0.0013962634015954637f64,
10179        0f64,
10180        0f64,
10181        0f64,
10182        0f64,
10183        0f64,
10184        0f64,
10185        0f64,
10186        0f64,
10187        0f64,
10188        0f64,
10189    ],
10190    theta0: [
10191        2.0202186091834364f64,
10192        2.4729570171507653f64,
10193        2.356718088967943f64,
10194        1.0780898789568973f64,
10195        4.351454891072263f64,
10196        0.7655014099247129f64,
10197        1.3554226970987964f64,
10198        2.746450110938277f64,
10199        1.776919711455427f64,
10200        2.419724474964938f64,
10201        1.784250094313803f64,
10202        5.522396286235258f64,
10203        5.3059754589879615f64,
10204        5.388005933831694f64,
10205        5.948431156647074f64,
10206        4.522846223618106f64,
10207        3.568500188627606f64,
10208        11.044792572470516f64,
10209    ],
10210    theta1: [
10211        959.7891933286942f64,
10212        731.077582955928f64,
10213        522.3307938967249f64,
10214        449.1358738582876f64,
10215        427.10754977009157f64,
10216        388.83160660922994f64,
10217        354.1171823199879f64,
10218        290.6454915444109f64,
10219        224.66977689099764f64,
10220        140.70512817020406f64,
10221        -35.32930378471962f64,
10222        49.9855316454168f64,
10223        -0.9065240134858548f64,
10224        -1.626123264083117f64,
10225        -1.314581992602129f64,
10226        -8.810596596992575f64,
10227        -70.65860756943924f64,
10228        99.9710632908336f64,
10229    ],
10230};
10231impl RotationalElements for Rosalind {
10232    fn rotational_elements(&self, t: f64) -> Elements {
10233        (
10234            RIGHT_ASCENSION_ROSALIND.angle(t),
10235            DECLINATION_ROSALIND.angle(t),
10236            ROTATION_ROSALIND.angle(t),
10237        )
10238    }
10239    fn rotational_element_rates(&self, t: f64) -> Elements {
10240        (
10241            RIGHT_ASCENSION_ROSALIND.angle_dot(t),
10242            DECLINATION_ROSALIND.angle_dot(t),
10243            ROTATION_ROSALIND.angle_dot(t),
10244        )
10245    }
10246}
10247#[doc = "Belinda (NAIF ID: 714)."]
10248#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10249#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10250pub struct Belinda;
10251impl Origin for Belinda {
10252    fn id(&self) -> NaifId {
10253        NaifId(714i32)
10254    }
10255    fn name(&self) -> &'static str {
10256        "Belinda"
10257    }
10258}
10259impl Display for Belinda {
10260    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10261        write!(f, "{}", self.name())
10262    }
10263}
10264impl From<Belinda> for DynOrigin {
10265    fn from(_: Belinda) -> Self {
10266        DynOrigin::Belinda
10267    }
10268}
10269impl MeanRadius for Belinda {
10270    fn mean_radius(&self) -> Distance {
10271        Distance::kilometers(33f64)
10272    }
10273}
10274impl TriaxialEllipsoid for Belinda {
10275    fn radii(&self) -> Radii {
10276        (
10277            Distance::kilometers(33f64),
10278            Distance::kilometers(33f64),
10279            Distance::kilometers(33f64),
10280        )
10281    }
10282}
10283impl Spheroid for Belinda {}
10284const RIGHT_ASCENSION_BELINDA: RotationalElement<18usize> = RotationalElement {
10285    typ: RotationalElementType::RightAscension,
10286    c0: 4.49090669830661f64,
10287    c1: 0f64,
10288    c2: 0f64,
10289    c: [
10290        0f64,
10291        0f64,
10292        0f64,
10293        0f64,
10294        0f64,
10295        0f64,
10296        0f64,
10297        0f64,
10298        -0.0005235987755982988f64,
10299        0f64,
10300        0f64,
10301        0f64,
10302        0f64,
10303        0f64,
10304        0f64,
10305        0f64,
10306        0f64,
10307        0f64,
10308    ],
10309    theta0: [
10310        2.0202186091834364f64,
10311        2.4729570171507653f64,
10312        2.356718088967943f64,
10313        1.0780898789568973f64,
10314        4.351454891072263f64,
10315        0.7655014099247129f64,
10316        1.3554226970987964f64,
10317        2.746450110938277f64,
10318        1.776919711455427f64,
10319        2.419724474964938f64,
10320        1.784250094313803f64,
10321        5.522396286235258f64,
10322        5.3059754589879615f64,
10323        5.388005933831694f64,
10324        5.948431156647074f64,
10325        4.522846223618106f64,
10326        3.568500188627606f64,
10327        11.044792572470516f64,
10328    ],
10329    theta1: [
10330        959.7891933286942f64,
10331        731.077582955928f64,
10332        522.3307938967249f64,
10333        449.1358738582876f64,
10334        427.10754977009157f64,
10335        388.83160660922994f64,
10336        354.1171823199879f64,
10337        290.6454915444109f64,
10338        224.66977689099764f64,
10339        140.70512817020406f64,
10340        -35.32930378471962f64,
10341        49.9855316454168f64,
10342        -0.9065240134858548f64,
10343        -1.626123264083117f64,
10344        -1.314581992602129f64,
10345        -8.810596596992575f64,
10346        -70.65860756943924f64,
10347        99.9710632908336f64,
10348    ],
10349};
10350const DECLINATION_BELINDA: RotationalElement<18usize> = RotationalElement {
10351    typ: RotationalElementType::Declination,
10352    c0: -0.2649409804527392f64,
10353    c1: 0f64,
10354    c2: 0f64,
10355    c: [
10356        0f64,
10357        0f64,
10358        0f64,
10359        0f64,
10360        0f64,
10361        0f64,
10362        0f64,
10363        0f64,
10364        0.0005235987755982988f64,
10365        0f64,
10366        0f64,
10367        0f64,
10368        0f64,
10369        0f64,
10370        0f64,
10371        0f64,
10372        0f64,
10373        0f64,
10374    ],
10375    theta0: [
10376        2.0202186091834364f64,
10377        2.4729570171507653f64,
10378        2.356718088967943f64,
10379        1.0780898789568973f64,
10380        4.351454891072263f64,
10381        0.7655014099247129f64,
10382        1.3554226970987964f64,
10383        2.746450110938277f64,
10384        1.776919711455427f64,
10385        2.419724474964938f64,
10386        1.784250094313803f64,
10387        5.522396286235258f64,
10388        5.3059754589879615f64,
10389        5.388005933831694f64,
10390        5.948431156647074f64,
10391        4.522846223618106f64,
10392        3.568500188627606f64,
10393        11.044792572470516f64,
10394    ],
10395    theta1: [
10396        959.7891933286942f64,
10397        731.077582955928f64,
10398        522.3307938967249f64,
10399        449.1358738582876f64,
10400        427.10754977009157f64,
10401        388.83160660922994f64,
10402        354.1171823199879f64,
10403        290.6454915444109f64,
10404        224.66977689099764f64,
10405        140.70512817020406f64,
10406        -35.32930378471962f64,
10407        49.9855316454168f64,
10408        -0.9065240134858548f64,
10409        -1.626123264083117f64,
10410        -1.314581992602129f64,
10411        -8.810596596992575f64,
10412        -70.65860756943924f64,
10413        99.9710632908336f64,
10414    ],
10415};
10416const ROTATION_BELINDA: RotationalElement<18usize> = RotationalElement {
10417    typ: RotationalElementType::Rotation,
10418    c0: 5.191656392982332f64,
10419    c1: -10.076882135239488f64,
10420    c2: 0f64,
10421    c: [
10422        0f64,
10423        0f64,
10424        0f64,
10425        0f64,
10426        0f64,
10427        0f64,
10428        0f64,
10429        0f64,
10430        -0.00017453292519943296f64,
10431        0f64,
10432        0f64,
10433        0f64,
10434        0f64,
10435        0f64,
10436        0f64,
10437        0f64,
10438        0f64,
10439        0f64,
10440    ],
10441    theta0: [
10442        2.0202186091834364f64,
10443        2.4729570171507653f64,
10444        2.356718088967943f64,
10445        1.0780898789568973f64,
10446        4.351454891072263f64,
10447        0.7655014099247129f64,
10448        1.3554226970987964f64,
10449        2.746450110938277f64,
10450        1.776919711455427f64,
10451        2.419724474964938f64,
10452        1.784250094313803f64,
10453        5.522396286235258f64,
10454        5.3059754589879615f64,
10455        5.388005933831694f64,
10456        5.948431156647074f64,
10457        4.522846223618106f64,
10458        3.568500188627606f64,
10459        11.044792572470516f64,
10460    ],
10461    theta1: [
10462        959.7891933286942f64,
10463        731.077582955928f64,
10464        522.3307938967249f64,
10465        449.1358738582876f64,
10466        427.10754977009157f64,
10467        388.83160660922994f64,
10468        354.1171823199879f64,
10469        290.6454915444109f64,
10470        224.66977689099764f64,
10471        140.70512817020406f64,
10472        -35.32930378471962f64,
10473        49.9855316454168f64,
10474        -0.9065240134858548f64,
10475        -1.626123264083117f64,
10476        -1.314581992602129f64,
10477        -8.810596596992575f64,
10478        -70.65860756943924f64,
10479        99.9710632908336f64,
10480    ],
10481};
10482impl RotationalElements for Belinda {
10483    fn rotational_elements(&self, t: f64) -> Elements {
10484        (
10485            RIGHT_ASCENSION_BELINDA.angle(t),
10486            DECLINATION_BELINDA.angle(t),
10487            ROTATION_BELINDA.angle(t),
10488        )
10489    }
10490    fn rotational_element_rates(&self, t: f64) -> Elements {
10491        (
10492            RIGHT_ASCENSION_BELINDA.angle_dot(t),
10493            DECLINATION_BELINDA.angle_dot(t),
10494            ROTATION_BELINDA.angle_dot(t),
10495        )
10496    }
10497}
10498#[doc = "Puck (NAIF ID: 715)."]
10499#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10500#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10501pub struct Puck;
10502impl Origin for Puck {
10503    fn id(&self) -> NaifId {
10504        NaifId(715i32)
10505    }
10506    fn name(&self) -> &'static str {
10507        "Puck"
10508    }
10509}
10510impl Display for Puck {
10511    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10512        write!(f, "{}", self.name())
10513    }
10514}
10515impl From<Puck> for DynOrigin {
10516    fn from(_: Puck) -> Self {
10517        DynOrigin::Puck
10518    }
10519}
10520impl MeanRadius for Puck {
10521    fn mean_radius(&self) -> Distance {
10522        Distance::kilometers(77f64)
10523    }
10524}
10525impl TriaxialEllipsoid for Puck {
10526    fn radii(&self) -> Radii {
10527        (
10528            Distance::kilometers(77f64),
10529            Distance::kilometers(77f64),
10530            Distance::kilometers(77f64),
10531        )
10532    }
10533}
10534impl Spheroid for Puck {}
10535const RIGHT_ASCENSION_PUCK: RotationalElement<18usize> = RotationalElement {
10536    typ: RotationalElementType::RightAscension,
10537    c0: 4.49090669830661f64,
10538    c1: 0f64,
10539    c2: 0f64,
10540    c: [
10541        0f64,
10542        0f64,
10543        0f64,
10544        0f64,
10545        0f64,
10546        0f64,
10547        0f64,
10548        0f64,
10549        0f64,
10550        -0.005759586531581287f64,
10551        0f64,
10552        0f64,
10553        0f64,
10554        0f64,
10555        0f64,
10556        0f64,
10557        0f64,
10558        0f64,
10559    ],
10560    theta0: [
10561        2.0202186091834364f64,
10562        2.4729570171507653f64,
10563        2.356718088967943f64,
10564        1.0780898789568973f64,
10565        4.351454891072263f64,
10566        0.7655014099247129f64,
10567        1.3554226970987964f64,
10568        2.746450110938277f64,
10569        1.776919711455427f64,
10570        2.419724474964938f64,
10571        1.784250094313803f64,
10572        5.522396286235258f64,
10573        5.3059754589879615f64,
10574        5.388005933831694f64,
10575        5.948431156647074f64,
10576        4.522846223618106f64,
10577        3.568500188627606f64,
10578        11.044792572470516f64,
10579    ],
10580    theta1: [
10581        959.7891933286942f64,
10582        731.077582955928f64,
10583        522.3307938967249f64,
10584        449.1358738582876f64,
10585        427.10754977009157f64,
10586        388.83160660922994f64,
10587        354.1171823199879f64,
10588        290.6454915444109f64,
10589        224.66977689099764f64,
10590        140.70512817020406f64,
10591        -35.32930378471962f64,
10592        49.9855316454168f64,
10593        -0.9065240134858548f64,
10594        -1.626123264083117f64,
10595        -1.314581992602129f64,
10596        -8.810596596992575f64,
10597        -70.65860756943924f64,
10598        99.9710632908336f64,
10599    ],
10600};
10601const DECLINATION_PUCK: RotationalElement<18usize> = RotationalElement {
10602    typ: RotationalElementType::Declination,
10603    c0: -0.2649409804527392f64,
10604    c1: 0f64,
10605    c2: 0f64,
10606    c: [
10607        0f64,
10608        0f64,
10609        0f64,
10610        0f64,
10611        0f64,
10612        0f64,
10613        0f64,
10614        0f64,
10615        0f64,
10616        0.0054105206811824215f64,
10617        0f64,
10618        0f64,
10619        0f64,
10620        0f64,
10621        0f64,
10622        0f64,
10623        0f64,
10624        0f64,
10625    ],
10626    theta0: [
10627        2.0202186091834364f64,
10628        2.4729570171507653f64,
10629        2.356718088967943f64,
10630        1.0780898789568973f64,
10631        4.351454891072263f64,
10632        0.7655014099247129f64,
10633        1.3554226970987964f64,
10634        2.746450110938277f64,
10635        1.776919711455427f64,
10636        2.419724474964938f64,
10637        1.784250094313803f64,
10638        5.522396286235258f64,
10639        5.3059754589879615f64,
10640        5.388005933831694f64,
10641        5.948431156647074f64,
10642        4.522846223618106f64,
10643        3.568500188627606f64,
10644        11.044792572470516f64,
10645    ],
10646    theta1: [
10647        959.7891933286942f64,
10648        731.077582955928f64,
10649        522.3307938967249f64,
10650        449.1358738582876f64,
10651        427.10754977009157f64,
10652        388.83160660922994f64,
10653        354.1171823199879f64,
10654        290.6454915444109f64,
10655        224.66977689099764f64,
10656        140.70512817020406f64,
10657        -35.32930378471962f64,
10658        49.9855316454168f64,
10659        -0.9065240134858548f64,
10660        -1.626123264083117f64,
10661        -1.314581992602129f64,
10662        -8.810596596992575f64,
10663        -70.65860756943924f64,
10664        99.9710632908336f64,
10665    ],
10666};
10667const ROTATION_PUCK: RotationalElement<18usize> = RotationalElement {
10668    typ: RotationalElementType::Rotation,
10669    c0: 1.5924384095196262f64,
10670    c1: -8.247467318113788f64,
10671    c2: 0f64,
10672    c: [
10673        0f64,
10674        0f64,
10675        0f64,
10676        0f64,
10677        0f64,
10678        0f64,
10679        0f64,
10680        0f64,
10681        0f64,
10682        -0.0015707963267948964f64,
10683        0f64,
10684        0f64,
10685        0f64,
10686        0f64,
10687        0f64,
10688        0f64,
10689        0f64,
10690        0f64,
10691    ],
10692    theta0: [
10693        2.0202186091834364f64,
10694        2.4729570171507653f64,
10695        2.356718088967943f64,
10696        1.0780898789568973f64,
10697        4.351454891072263f64,
10698        0.7655014099247129f64,
10699        1.3554226970987964f64,
10700        2.746450110938277f64,
10701        1.776919711455427f64,
10702        2.419724474964938f64,
10703        1.784250094313803f64,
10704        5.522396286235258f64,
10705        5.3059754589879615f64,
10706        5.388005933831694f64,
10707        5.948431156647074f64,
10708        4.522846223618106f64,
10709        3.568500188627606f64,
10710        11.044792572470516f64,
10711    ],
10712    theta1: [
10713        959.7891933286942f64,
10714        731.077582955928f64,
10715        522.3307938967249f64,
10716        449.1358738582876f64,
10717        427.10754977009157f64,
10718        388.83160660922994f64,
10719        354.1171823199879f64,
10720        290.6454915444109f64,
10721        224.66977689099764f64,
10722        140.70512817020406f64,
10723        -35.32930378471962f64,
10724        49.9855316454168f64,
10725        -0.9065240134858548f64,
10726        -1.626123264083117f64,
10727        -1.314581992602129f64,
10728        -8.810596596992575f64,
10729        -70.65860756943924f64,
10730        99.9710632908336f64,
10731    ],
10732};
10733impl RotationalElements for Puck {
10734    fn rotational_elements(&self, t: f64) -> Elements {
10735        (
10736            RIGHT_ASCENSION_PUCK.angle(t),
10737            DECLINATION_PUCK.angle(t),
10738            ROTATION_PUCK.angle(t),
10739        )
10740    }
10741    fn rotational_element_rates(&self, t: f64) -> Elements {
10742        (
10743            RIGHT_ASCENSION_PUCK.angle_dot(t),
10744            DECLINATION_PUCK.angle_dot(t),
10745            ROTATION_PUCK.angle_dot(t),
10746        )
10747    }
10748}
10749#[doc = "Caliban (NAIF ID: 716)."]
10750#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10751#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10752pub struct Caliban;
10753impl Origin for Caliban {
10754    fn id(&self) -> NaifId {
10755        NaifId(716i32)
10756    }
10757    fn name(&self) -> &'static str {
10758        "Caliban"
10759    }
10760}
10761impl Display for Caliban {
10762    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10763        write!(f, "{}", self.name())
10764    }
10765}
10766impl From<Caliban> for DynOrigin {
10767    fn from(_: Caliban) -> Self {
10768        DynOrigin::Caliban
10769    }
10770}
10771#[doc = "Sycorax (NAIF ID: 717)."]
10772#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10773#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10774pub struct Sycorax;
10775impl Origin for Sycorax {
10776    fn id(&self) -> NaifId {
10777        NaifId(717i32)
10778    }
10779    fn name(&self) -> &'static str {
10780        "Sycorax"
10781    }
10782}
10783impl Display for Sycorax {
10784    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10785        write!(f, "{}", self.name())
10786    }
10787}
10788impl From<Sycorax> for DynOrigin {
10789    fn from(_: Sycorax) -> Self {
10790        DynOrigin::Sycorax
10791    }
10792}
10793#[doc = "Prospero (NAIF ID: 718)."]
10794#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10795#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10796pub struct Prospero;
10797impl Origin for Prospero {
10798    fn id(&self) -> NaifId {
10799        NaifId(718i32)
10800    }
10801    fn name(&self) -> &'static str {
10802        "Prospero"
10803    }
10804}
10805impl Display for Prospero {
10806    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10807        write!(f, "{}", self.name())
10808    }
10809}
10810impl From<Prospero> for DynOrigin {
10811    fn from(_: Prospero) -> Self {
10812        DynOrigin::Prospero
10813    }
10814}
10815#[doc = "Setebos (NAIF ID: 719)."]
10816#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10817#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10818pub struct Setebos;
10819impl Origin for Setebos {
10820    fn id(&self) -> NaifId {
10821        NaifId(719i32)
10822    }
10823    fn name(&self) -> &'static str {
10824        "Setebos"
10825    }
10826}
10827impl Display for Setebos {
10828    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10829        write!(f, "{}", self.name())
10830    }
10831}
10832impl From<Setebos> for DynOrigin {
10833    fn from(_: Setebos) -> Self {
10834        DynOrigin::Setebos
10835    }
10836}
10837#[doc = "Stephano (NAIF ID: 720)."]
10838#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10839#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10840pub struct Stephano;
10841impl Origin for Stephano {
10842    fn id(&self) -> NaifId {
10843        NaifId(720i32)
10844    }
10845    fn name(&self) -> &'static str {
10846        "Stephano"
10847    }
10848}
10849impl Display for Stephano {
10850    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10851        write!(f, "{}", self.name())
10852    }
10853}
10854impl From<Stephano> for DynOrigin {
10855    fn from(_: Stephano) -> Self {
10856        DynOrigin::Stephano
10857    }
10858}
10859#[doc = "Trinculo (NAIF ID: 721)."]
10860#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10861#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10862pub struct Trinculo;
10863impl Origin for Trinculo {
10864    fn id(&self) -> NaifId {
10865        NaifId(721i32)
10866    }
10867    fn name(&self) -> &'static str {
10868        "Trinculo"
10869    }
10870}
10871impl Display for Trinculo {
10872    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10873        write!(f, "{}", self.name())
10874    }
10875}
10876impl From<Trinculo> for DynOrigin {
10877    fn from(_: Trinculo) -> Self {
10878        DynOrigin::Trinculo
10879    }
10880}
10881#[doc = "Francisco (NAIF ID: 722)."]
10882#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10883#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10884pub struct Francisco;
10885impl Origin for Francisco {
10886    fn id(&self) -> NaifId {
10887        NaifId(722i32)
10888    }
10889    fn name(&self) -> &'static str {
10890        "Francisco"
10891    }
10892}
10893impl Display for Francisco {
10894    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10895        write!(f, "{}", self.name())
10896    }
10897}
10898impl From<Francisco> for DynOrigin {
10899    fn from(_: Francisco) -> Self {
10900        DynOrigin::Francisco
10901    }
10902}
10903#[doc = "Margaret (NAIF ID: 723)."]
10904#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10905#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10906pub struct Margaret;
10907impl Origin for Margaret {
10908    fn id(&self) -> NaifId {
10909        NaifId(723i32)
10910    }
10911    fn name(&self) -> &'static str {
10912        "Margaret"
10913    }
10914}
10915impl Display for Margaret {
10916    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10917        write!(f, "{}", self.name())
10918    }
10919}
10920impl From<Margaret> for DynOrigin {
10921    fn from(_: Margaret) -> Self {
10922        DynOrigin::Margaret
10923    }
10924}
10925#[doc = "Ferdinand (NAIF ID: 724)."]
10926#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10927#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10928pub struct Ferdinand;
10929impl Origin for Ferdinand {
10930    fn id(&self) -> NaifId {
10931        NaifId(724i32)
10932    }
10933    fn name(&self) -> &'static str {
10934        "Ferdinand"
10935    }
10936}
10937impl Display for Ferdinand {
10938    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10939        write!(f, "{}", self.name())
10940    }
10941}
10942impl From<Ferdinand> for DynOrigin {
10943    fn from(_: Ferdinand) -> Self {
10944        DynOrigin::Ferdinand
10945    }
10946}
10947#[doc = "Perdita (NAIF ID: 725)."]
10948#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10949#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10950pub struct Perdita;
10951impl Origin for Perdita {
10952    fn id(&self) -> NaifId {
10953        NaifId(725i32)
10954    }
10955    fn name(&self) -> &'static str {
10956        "Perdita"
10957    }
10958}
10959impl Display for Perdita {
10960    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10961        write!(f, "{}", self.name())
10962    }
10963}
10964impl From<Perdita> for DynOrigin {
10965    fn from(_: Perdita) -> Self {
10966        DynOrigin::Perdita
10967    }
10968}
10969#[doc = "Mab (NAIF ID: 726)."]
10970#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10971#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10972pub struct Mab;
10973impl Origin for Mab {
10974    fn id(&self) -> NaifId {
10975        NaifId(726i32)
10976    }
10977    fn name(&self) -> &'static str {
10978        "Mab"
10979    }
10980}
10981impl Display for Mab {
10982    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10983        write!(f, "{}", self.name())
10984    }
10985}
10986impl From<Mab> for DynOrigin {
10987    fn from(_: Mab) -> Self {
10988        DynOrigin::Mab
10989    }
10990}
10991#[doc = "Cupid (NAIF ID: 727)."]
10992#[derive(Debug, Copy, Clone, Eq, PartialEq)]
10993#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10994pub struct Cupid;
10995impl Origin for Cupid {
10996    fn id(&self) -> NaifId {
10997        NaifId(727i32)
10998    }
10999    fn name(&self) -> &'static str {
11000        "Cupid"
11001    }
11002}
11003impl Display for Cupid {
11004    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11005        write!(f, "{}", self.name())
11006    }
11007}
11008impl From<Cupid> for DynOrigin {
11009    fn from(_: Cupid) -> Self {
11010        DynOrigin::Cupid
11011    }
11012}
11013#[doc = "Triton (NAIF ID: 801)."]
11014#[derive(Debug, Copy, Clone, Eq, PartialEq)]
11015#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11016pub struct Triton;
11017impl Origin for Triton {
11018    fn id(&self) -> NaifId {
11019        NaifId(801i32)
11020    }
11021    fn name(&self) -> &'static str {
11022        "Triton"
11023    }
11024}
11025impl Display for Triton {
11026    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11027        write!(f, "{}", self.name())
11028    }
11029}
11030impl From<Triton> for DynOrigin {
11031    fn from(_: Triton) -> Self {
11032        DynOrigin::Triton
11033    }
11034}
11035impl PointMass for Triton {
11036    fn gravitational_parameter(&self) -> GravitationalParameter {
11037        GravitationalParameter::km3_per_s2(1428.495462910464f64)
11038    }
11039}
11040impl MeanRadius for Triton {
11041    fn mean_radius(&self) -> Distance {
11042        Distance::kilometers(1352.6f64)
11043    }
11044}
11045impl TriaxialEllipsoid for Triton {
11046    fn radii(&self) -> Radii {
11047        (
11048            Distance::kilometers(1352.6f64),
11049            Distance::kilometers(1352.6f64),
11050            Distance::kilometers(1352.6f64),
11051        )
11052    }
11053}
11054impl Spheroid for Triton {}
11055const RIGHT_ASCENSION_TRITON: RotationalElement<17usize> = RotationalElement {
11056    typ: RotationalElementType::RightAscension,
11057    c0: 5.224817648770225f64,
11058    c1: 0f64,
11059    c2: 0f64,
11060    c: [
11061        0f64,
11062        0f64,
11063        0f64,
11064        0f64,
11065        0f64,
11066        0f64,
11067        0f64,
11068        -0.5646140130201657f64,
11069        0f64,
11070        -0.1096066770252439f64,
11071        -0.03630284844148206f64,
11072        -0.012915436464758038f64,
11073        -0.004886921905584123f64,
11074        -0.0019198621771937625f64,
11075        -0.0012217304763960308f64,
11076        -0.00034906585039886593f64,
11077        -0.00017453292519943296f64,
11078    ],
11079    theta0: [
11080        6.245660728261709f64,
11081        5.653470513060032f64,
11082        3.848625533572696f64,
11083        6.183177941040311f64,
11084        1.3144074596769295f64,
11085        0.6171484235051949f64,
11086        2.4890140462691135f64,
11087        3.104068074671915f64,
11088        11.306941026120064f64,
11089        6.20813614934383f64,
11090        9.312204224015744f64,
11091        12.41627229868766f64,
11092        15.520340373359575f64,
11093        18.624408448031488f64,
11094        21.728476522703406f64,
11095        24.83254459737532f64,
11096        27.936612672047236f64,
11097    ],
11098    theta1: [
11099        0.9130864514733535f64,
11100        1092.6913034790819f64,
11101        961.0515899766616f64,
11102        812.7038395448996f64,
11103        455.6949957202075f64,
11104        250.02539666519567f64,
11105        49.29857005183183f64,
11106        0.9130864514733535f64,
11107        2185.3826069581637f64,
11108        1.826172902946707f64,
11109        2.7392593544200605f64,
11110        3.652345805893414f64,
11111        4.565432257366767f64,
11112        5.478518708840121f64,
11113        6.391605160313474f64,
11114        7.304691611786828f64,
11115        8.21777806326018f64,
11116    ],
11117};
11118const DECLINATION_TRITON: RotationalElement<17usize> = RotationalElement {
11119    typ: RotationalElementType::Declination,
11120    c0: 0.7185520530460655f64,
11121    c1: 0f64,
11122    c2: 0f64,
11123    c: [
11124        0f64,
11125        0f64,
11126        0f64,
11127        0f64,
11128        0f64,
11129        0f64,
11130        0f64,
11131        0.3935717463247213f64,
11132        0f64,
11133        0.03665191429188092f64,
11134        0.009599310885968814f64,
11135        0.0027925268031909274f64,
11136        0.0008726646259971648f64,
11137        0.00034906585039886593f64,
11138        0.00017453292519943296f64,
11139        0f64,
11140        0f64,
11141    ],
11142    theta0: [
11143        6.245660728261709f64,
11144        5.653470513060032f64,
11145        3.848625533572696f64,
11146        6.183177941040311f64,
11147        1.3144074596769295f64,
11148        0.6171484235051949f64,
11149        2.4890140462691135f64,
11150        3.104068074671915f64,
11151        11.306941026120064f64,
11152        6.20813614934383f64,
11153        9.312204224015744f64,
11154        12.41627229868766f64,
11155        15.520340373359575f64,
11156        18.624408448031488f64,
11157        21.728476522703406f64,
11158        24.83254459737532f64,
11159        27.936612672047236f64,
11160    ],
11161    theta1: [
11162        0.9130864514733535f64,
11163        1092.6913034790819f64,
11164        961.0515899766616f64,
11165        812.7038395448996f64,
11166        455.6949957202075f64,
11167        250.02539666519567f64,
11168        49.29857005183183f64,
11169        0.9130864514733535f64,
11170        2185.3826069581637f64,
11171        1.826172902946707f64,
11172        2.7392593544200605f64,
11173        3.652345805893414f64,
11174        4.565432257366767f64,
11175        5.478518708840121f64,
11176        6.391605160313474f64,
11177        7.304691611786828f64,
11178        8.21777806326018f64,
11179    ],
11180};
11181const ROTATION_TRITON: RotationalElement<17usize> = RotationalElement {
11182    typ: RotationalElementType::Rotation,
11183    c0: 5.175424830938785f64,
11184    c1: -1.069140942327404f64,
11185    c2: 0f64,
11186    c: [
11187        0f64,
11188        0f64,
11189        0f64,
11190        0f64,
11191        0f64,
11192        0f64,
11193        0f64,
11194        0.3883357585687383f64,
11195        0f64,
11196        0.11746065865921838f64,
11197        0.03577924966588375f64,
11198        0.012915436464758038f64,
11199        0.004886921905584123f64,
11200        0.0019198621771937625f64,
11201        0.0008726646259971648f64,
11202        0.00034906585039886593f64,
11203        0.00017453292519943296f64,
11204    ],
11205    theta0: [
11206        6.245660728261709f64,
11207        5.653470513060032f64,
11208        3.848625533572696f64,
11209        6.183177941040311f64,
11210        1.3144074596769295f64,
11211        0.6171484235051949f64,
11212        2.4890140462691135f64,
11213        3.104068074671915f64,
11214        11.306941026120064f64,
11215        6.20813614934383f64,
11216        9.312204224015744f64,
11217        12.41627229868766f64,
11218        15.520340373359575f64,
11219        18.624408448031488f64,
11220        21.728476522703406f64,
11221        24.83254459737532f64,
11222        27.936612672047236f64,
11223    ],
11224    theta1: [
11225        0.9130864514733535f64,
11226        1092.6913034790819f64,
11227        961.0515899766616f64,
11228        812.7038395448996f64,
11229        455.6949957202075f64,
11230        250.02539666519567f64,
11231        49.29857005183183f64,
11232        0.9130864514733535f64,
11233        2185.3826069581637f64,
11234        1.826172902946707f64,
11235        2.7392593544200605f64,
11236        3.652345805893414f64,
11237        4.565432257366767f64,
11238        5.478518708840121f64,
11239        6.391605160313474f64,
11240        7.304691611786828f64,
11241        8.21777806326018f64,
11242    ],
11243};
11244impl RotationalElements for Triton {
11245    fn rotational_elements(&self, t: f64) -> Elements {
11246        (
11247            RIGHT_ASCENSION_TRITON.angle(t),
11248            DECLINATION_TRITON.angle(t),
11249            ROTATION_TRITON.angle(t),
11250        )
11251    }
11252    fn rotational_element_rates(&self, t: f64) -> Elements {
11253        (
11254            RIGHT_ASCENSION_TRITON.angle_dot(t),
11255            DECLINATION_TRITON.angle_dot(t),
11256            ROTATION_TRITON.angle_dot(t),
11257        )
11258    }
11259}
11260#[doc = "Nereid (NAIF ID: 802)."]
11261#[derive(Debug, Copy, Clone, Eq, PartialEq)]
11262#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11263pub struct Nereid;
11264impl Origin for Nereid {
11265    fn id(&self) -> NaifId {
11266        NaifId(802i32)
11267    }
11268    fn name(&self) -> &'static str {
11269        "Nereid"
11270    }
11271}
11272impl Display for Nereid {
11273    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11274        write!(f, "{}", self.name())
11275    }
11276}
11277impl From<Nereid> for DynOrigin {
11278    fn from(_: Nereid) -> Self {
11279        DynOrigin::Nereid
11280    }
11281}
11282impl MeanRadius for Nereid {
11283    fn mean_radius(&self) -> Distance {
11284        Distance::kilometers(170f64)
11285    }
11286}
11287impl TriaxialEllipsoid for Nereid {
11288    fn radii(&self) -> Radii {
11289        (
11290            Distance::kilometers(170f64),
11291            Distance::kilometers(170f64),
11292            Distance::kilometers(170f64),
11293        )
11294    }
11295}
11296impl Spheroid for Nereid {}
11297#[doc = "Naiad (NAIF ID: 803)."]
11298#[derive(Debug, Copy, Clone, Eq, PartialEq)]
11299#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11300pub struct Naiad;
11301impl Origin for Naiad {
11302    fn id(&self) -> NaifId {
11303        NaifId(803i32)
11304    }
11305    fn name(&self) -> &'static str {
11306        "Naiad"
11307    }
11308}
11309impl Display for Naiad {
11310    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11311        write!(f, "{}", self.name())
11312    }
11313}
11314impl From<Naiad> for DynOrigin {
11315    fn from(_: Naiad) -> Self {
11316        DynOrigin::Naiad
11317    }
11318}
11319impl PointMass for Naiad {
11320    fn gravitational_parameter(&self) -> GravitationalParameter {
11321        GravitationalParameter::km3_per_s2(0.008530281246540886f64)
11322    }
11323}
11324impl MeanRadius for Naiad {
11325    fn mean_radius(&self) -> Distance {
11326        Distance::kilometers(29f64)
11327    }
11328}
11329impl TriaxialEllipsoid for Naiad {
11330    fn radii(&self) -> Radii {
11331        (
11332            Distance::kilometers(29f64),
11333            Distance::kilometers(29f64),
11334            Distance::kilometers(29f64),
11335        )
11336    }
11337}
11338impl Spheroid for Naiad {}
11339const RIGHT_ASCENSION_NAIAD: RotationalElement<17usize> = RotationalElement {
11340    typ: RotationalElementType::RightAscension,
11341    c0: 5.224817648770225f64,
11342    c1: 0f64,
11343    c2: 0f64,
11344    c: [
11345        0.012217304763960306f64,
11346        -0.11327186845443199f64,
11347        0f64,
11348        0f64,
11349        0f64,
11350        0f64,
11351        0f64,
11352        0f64,
11353        0.004363323129985824f64,
11354        0f64,
11355        0f64,
11356        0f64,
11357        0f64,
11358        0f64,
11359        0f64,
11360        0f64,
11361        0f64,
11362    ],
11363    theta0: [
11364        6.245660728261709f64,
11365        5.653470513060032f64,
11366        3.848625533572696f64,
11367        6.183177941040311f64,
11368        1.3144074596769295f64,
11369        0.6171484235051949f64,
11370        2.4890140462691135f64,
11371        3.104068074671915f64,
11372        11.306941026120064f64,
11373        6.20813614934383f64,
11374        9.312204224015744f64,
11375        12.41627229868766f64,
11376        15.520340373359575f64,
11377        18.624408448031488f64,
11378        21.728476522703406f64,
11379        24.83254459737532f64,
11380        27.936612672047236f64,
11381    ],
11382    theta1: [
11383        0.9130864514733535f64,
11384        1092.6913034790819f64,
11385        961.0515899766616f64,
11386        812.7038395448996f64,
11387        455.6949957202075f64,
11388        250.02539666519567f64,
11389        49.29857005183183f64,
11390        0.9130864514733535f64,
11391        2185.3826069581637f64,
11392        1.826172902946707f64,
11393        2.7392593544200605f64,
11394        3.652345805893414f64,
11395        4.565432257366767f64,
11396        5.478518708840121f64,
11397        6.391605160313474f64,
11398        7.304691611786828f64,
11399        8.21777806326018f64,
11400    ],
11401};
11402const DECLINATION_NAIAD: RotationalElement<17usize> = RotationalElement {
11403    typ: RotationalElementType::Declination,
11404    c0: 0.7567747636647413f64,
11405    c1: 0f64,
11406    c2: 0f64,
11407    c: [
11408        -0.00890117918517108f64,
11409        -0.08290313946973066f64,
11410        0f64,
11411        0f64,
11412        0f64,
11413        0f64,
11414        0f64,
11415        0f64,
11416        0.0015707963267948964f64,
11417        0f64,
11418        0f64,
11419        0f64,
11420        0f64,
11421        0f64,
11422        0f64,
11423        0f64,
11424        0f64,
11425    ],
11426    theta0: [
11427        6.245660728261709f64,
11428        5.653470513060032f64,
11429        3.848625533572696f64,
11430        6.183177941040311f64,
11431        1.3144074596769295f64,
11432        0.6171484235051949f64,
11433        2.4890140462691135f64,
11434        3.104068074671915f64,
11435        11.306941026120064f64,
11436        6.20813614934383f64,
11437        9.312204224015744f64,
11438        12.41627229868766f64,
11439        15.520340373359575f64,
11440        18.624408448031488f64,
11441        21.728476522703406f64,
11442        24.83254459737532f64,
11443        27.936612672047236f64,
11444    ],
11445    theta1: [
11446        0.9130864514733535f64,
11447        1092.6913034790819f64,
11448        961.0515899766616f64,
11449        812.7038395448996f64,
11450        455.6949957202075f64,
11451        250.02539666519567f64,
11452        49.29857005183183f64,
11453        0.9130864514733535f64,
11454        2185.3826069581637f64,
11455        1.826172902946707f64,
11456        2.7392593544200605f64,
11457        3.652345805893414f64,
11458        4.565432257366767f64,
11459        5.478518708840121f64,
11460        6.391605160313474f64,
11461        7.304691611786828f64,
11462        8.21777806326018f64,
11463    ],
11464};
11465const ROTATION_NAIAD: RotationalElement<17usize> = RotationalElement {
11466    typ: RotationalElementType::Rotation,
11467    c0: 4.434183497616794f64,
11468    c1: 21.342656148360604f64,
11469    c2: 0f64,
11470    c: [
11471        -0.008377580409572781f64,
11472        0.07679448708775051f64,
11473        0f64,
11474        0f64,
11475        0f64,
11476        0f64,
11477        0f64,
11478        0f64,
11479        -0.00471238898038469f64,
11480        0f64,
11481        0f64,
11482        0f64,
11483        0f64,
11484        0f64,
11485        0f64,
11486        0f64,
11487        0f64,
11488    ],
11489    theta0: [
11490        6.245660728261709f64,
11491        5.653470513060032f64,
11492        3.848625533572696f64,
11493        6.183177941040311f64,
11494        1.3144074596769295f64,
11495        0.6171484235051949f64,
11496        2.4890140462691135f64,
11497        3.104068074671915f64,
11498        11.306941026120064f64,
11499        6.20813614934383f64,
11500        9.312204224015744f64,
11501        12.41627229868766f64,
11502        15.520340373359575f64,
11503        18.624408448031488f64,
11504        21.728476522703406f64,
11505        24.83254459737532f64,
11506        27.936612672047236f64,
11507    ],
11508    theta1: [
11509        0.9130864514733535f64,
11510        1092.6913034790819f64,
11511        961.0515899766616f64,
11512        812.7038395448996f64,
11513        455.6949957202075f64,
11514        250.02539666519567f64,
11515        49.29857005183183f64,
11516        0.9130864514733535f64,
11517        2185.3826069581637f64,
11518        1.826172902946707f64,
11519        2.7392593544200605f64,
11520        3.652345805893414f64,
11521        4.565432257366767f64,
11522        5.478518708840121f64,
11523        6.391605160313474f64,
11524        7.304691611786828f64,
11525        8.21777806326018f64,
11526    ],
11527};
11528impl RotationalElements for Naiad {
11529    fn rotational_elements(&self, t: f64) -> Elements {
11530        (
11531            RIGHT_ASCENSION_NAIAD.angle(t),
11532            DECLINATION_NAIAD.angle(t),
11533            ROTATION_NAIAD.angle(t),
11534        )
11535    }
11536    fn rotational_element_rates(&self, t: f64) -> Elements {
11537        (
11538            RIGHT_ASCENSION_NAIAD.angle_dot(t),
11539            DECLINATION_NAIAD.angle_dot(t),
11540            ROTATION_NAIAD.angle_dot(t),
11541        )
11542    }
11543}
11544#[doc = "Thalassa (NAIF ID: 804)."]
11545#[derive(Debug, Copy, Clone, Eq, PartialEq)]
11546#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11547pub struct Thalassa;
11548impl Origin for Thalassa {
11549    fn id(&self) -> NaifId {
11550        NaifId(804i32)
11551    }
11552    fn name(&self) -> &'static str {
11553        "Thalassa"
11554    }
11555}
11556impl Display for Thalassa {
11557    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11558        write!(f, "{}", self.name())
11559    }
11560}
11561impl From<Thalassa> for DynOrigin {
11562    fn from(_: Thalassa) -> Self {
11563        DynOrigin::Thalassa
11564    }
11565}
11566impl PointMass for Thalassa {
11567    fn gravitational_parameter(&self) -> GravitationalParameter {
11568        GravitationalParameter::km3_per_s2(0.0235887319799217f64)
11569    }
11570}
11571impl MeanRadius for Thalassa {
11572    fn mean_radius(&self) -> Distance {
11573        Distance::kilometers(40f64)
11574    }
11575}
11576impl TriaxialEllipsoid for Thalassa {
11577    fn radii(&self) -> Radii {
11578        (
11579            Distance::kilometers(40f64),
11580            Distance::kilometers(40f64),
11581            Distance::kilometers(40f64),
11582        )
11583    }
11584}
11585impl Spheroid for Thalassa {}
11586const RIGHT_ASCENSION_THALASSA: RotationalElement<17usize> = RotationalElement {
11587    typ: RotationalElementType::RightAscension,
11588    c0: 5.224817648770225f64,
11589    c1: 0f64,
11590    c2: 0f64,
11591    c: [
11592        0.012217304763960306f64,
11593        0f64,
11594        -0.004886921905584123f64,
11595        0f64,
11596        0f64,
11597        0f64,
11598        0f64,
11599        0f64,
11600        0f64,
11601        0f64,
11602        0f64,
11603        0f64,
11604        0f64,
11605        0f64,
11606        0f64,
11607        0f64,
11608        0f64,
11609    ],
11610    theta0: [
11611        6.245660728261709f64,
11612        5.653470513060032f64,
11613        3.848625533572696f64,
11614        6.183177941040311f64,
11615        1.3144074596769295f64,
11616        0.6171484235051949f64,
11617        2.4890140462691135f64,
11618        3.104068074671915f64,
11619        11.306941026120064f64,
11620        6.20813614934383f64,
11621        9.312204224015744f64,
11622        12.41627229868766f64,
11623        15.520340373359575f64,
11624        18.624408448031488f64,
11625        21.728476522703406f64,
11626        24.83254459737532f64,
11627        27.936612672047236f64,
11628    ],
11629    theta1: [
11630        0.9130864514733535f64,
11631        1092.6913034790819f64,
11632        961.0515899766616f64,
11633        812.7038395448996f64,
11634        455.6949957202075f64,
11635        250.02539666519567f64,
11636        49.29857005183183f64,
11637        0.9130864514733535f64,
11638        2185.3826069581637f64,
11639        1.826172902946707f64,
11640        2.7392593544200605f64,
11641        3.652345805893414f64,
11642        4.565432257366767f64,
11643        5.478518708840121f64,
11644        6.391605160313474f64,
11645        7.304691611786828f64,
11646        8.21777806326018f64,
11647    ],
11648};
11649const DECLINATION_THALASSA: RotationalElement<17usize> = RotationalElement {
11650    typ: RotationalElementType::Declination,
11651    c0: 0.7583455599915362f64,
11652    c1: 0f64,
11653    c2: 0f64,
11654    c: [
11655        -0.00890117918517108f64,
11656        0f64,
11657        -0.003665191429188092f64,
11658        0f64,
11659        0f64,
11660        0f64,
11661        0f64,
11662        0f64,
11663        0f64,
11664        0f64,
11665        0f64,
11666        0f64,
11667        0f64,
11668        0f64,
11669        0f64,
11670        0f64,
11671        0f64,
11672    ],
11673    theta0: [
11674        6.245660728261709f64,
11675        5.653470513060032f64,
11676        3.848625533572696f64,
11677        6.183177941040311f64,
11678        1.3144074596769295f64,
11679        0.6171484235051949f64,
11680        2.4890140462691135f64,
11681        3.104068074671915f64,
11682        11.306941026120064f64,
11683        6.20813614934383f64,
11684        9.312204224015744f64,
11685        12.41627229868766f64,
11686        15.520340373359575f64,
11687        18.624408448031488f64,
11688        21.728476522703406f64,
11689        24.83254459737532f64,
11690        27.936612672047236f64,
11691    ],
11692    theta1: [
11693        0.9130864514733535f64,
11694        1092.6913034790819f64,
11695        961.0515899766616f64,
11696        812.7038395448996f64,
11697        455.6949957202075f64,
11698        250.02539666519567f64,
11699        49.29857005183183f64,
11700        0.9130864514733535f64,
11701        2185.3826069581637f64,
11702        1.826172902946707f64,
11703        2.7392593544200605f64,
11704        3.652345805893414f64,
11705        4.565432257366767f64,
11706        5.478518708840121f64,
11707        6.391605160313474f64,
11708        7.304691611786828f64,
11709        8.21777806326018f64,
11710    ],
11711};
11712const ROTATION_THALASSA: RotationalElement<17usize> = RotationalElement {
11713    typ: RotationalElementType::Rotation,
11714    c0: 1.7812830345854127f64,
11715    c1: 20.171739891174827f64,
11716    c2: 0f64,
11717    c: [
11718        -0.008377580409572781f64,
11719        0f64,
11720        0.0033161255787892262f64,
11721        0f64,
11722        0f64,
11723        0f64,
11724        0f64,
11725        0f64,
11726        0f64,
11727        0f64,
11728        0f64,
11729        0f64,
11730        0f64,
11731        0f64,
11732        0f64,
11733        0f64,
11734        0f64,
11735    ],
11736    theta0: [
11737        6.245660728261709f64,
11738        5.653470513060032f64,
11739        3.848625533572696f64,
11740        6.183177941040311f64,
11741        1.3144074596769295f64,
11742        0.6171484235051949f64,
11743        2.4890140462691135f64,
11744        3.104068074671915f64,
11745        11.306941026120064f64,
11746        6.20813614934383f64,
11747        9.312204224015744f64,
11748        12.41627229868766f64,
11749        15.520340373359575f64,
11750        18.624408448031488f64,
11751        21.728476522703406f64,
11752        24.83254459737532f64,
11753        27.936612672047236f64,
11754    ],
11755    theta1: [
11756        0.9130864514733535f64,
11757        1092.6913034790819f64,
11758        961.0515899766616f64,
11759        812.7038395448996f64,
11760        455.6949957202075f64,
11761        250.02539666519567f64,
11762        49.29857005183183f64,
11763        0.9130864514733535f64,
11764        2185.3826069581637f64,
11765        1.826172902946707f64,
11766        2.7392593544200605f64,
11767        3.652345805893414f64,
11768        4.565432257366767f64,
11769        5.478518708840121f64,
11770        6.391605160313474f64,
11771        7.304691611786828f64,
11772        8.21777806326018f64,
11773    ],
11774};
11775impl RotationalElements for Thalassa {
11776    fn rotational_elements(&self, t: f64) -> Elements {
11777        (
11778            RIGHT_ASCENSION_THALASSA.angle(t),
11779            DECLINATION_THALASSA.angle(t),
11780            ROTATION_THALASSA.angle(t),
11781        )
11782    }
11783    fn rotational_element_rates(&self, t: f64) -> Elements {
11784        (
11785            RIGHT_ASCENSION_THALASSA.angle_dot(t),
11786            DECLINATION_THALASSA.angle_dot(t),
11787            ROTATION_THALASSA.angle_dot(t),
11788        )
11789    }
11790}
11791#[doc = "Despina (NAIF ID: 805)."]
11792#[derive(Debug, Copy, Clone, Eq, PartialEq)]
11793#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11794pub struct Despina;
11795impl Origin for Despina {
11796    fn id(&self) -> NaifId {
11797        NaifId(805i32)
11798    }
11799    fn name(&self) -> &'static str {
11800        "Despina"
11801    }
11802}
11803impl Display for Despina {
11804    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11805        write!(f, "{}", self.name())
11806    }
11807}
11808impl From<Despina> for DynOrigin {
11809    fn from(_: Despina) -> Self {
11810        DynOrigin::Despina
11811    }
11812}
11813impl PointMass for Despina {
11814    fn gravitational_parameter(&self) -> GravitationalParameter {
11815        GravitationalParameter::km3_per_s2(0.1167318403814998f64)
11816    }
11817}
11818impl MeanRadius for Despina {
11819    fn mean_radius(&self) -> Distance {
11820        Distance::kilometers(74f64)
11821    }
11822}
11823impl TriaxialEllipsoid for Despina {
11824    fn radii(&self) -> Radii {
11825        (
11826            Distance::kilometers(74f64),
11827            Distance::kilometers(74f64),
11828            Distance::kilometers(74f64),
11829        )
11830    }
11831}
11832impl Spheroid for Despina {}
11833const RIGHT_ASCENSION_DESPINA: RotationalElement<17usize> = RotationalElement {
11834    typ: RotationalElementType::RightAscension,
11835    c0: 5.224817648770225f64,
11836    c1: 0f64,
11837    c2: 0f64,
11838    c: [
11839        0.012217304763960306f64,
11840        0f64,
11841        0f64,
11842        -0.0015707963267948964f64,
11843        0f64,
11844        0f64,
11845        0f64,
11846        0f64,
11847        0f64,
11848        0f64,
11849        0f64,
11850        0f64,
11851        0f64,
11852        0f64,
11853        0f64,
11854        0f64,
11855        0f64,
11856    ],
11857    theta0: [
11858        6.245660728261709f64,
11859        5.653470513060032f64,
11860        3.848625533572696f64,
11861        6.183177941040311f64,
11862        1.3144074596769295f64,
11863        0.6171484235051949f64,
11864        2.4890140462691135f64,
11865        3.104068074671915f64,
11866        11.306941026120064f64,
11867        6.20813614934383f64,
11868        9.312204224015744f64,
11869        12.41627229868766f64,
11870        15.520340373359575f64,
11871        18.624408448031488f64,
11872        21.728476522703406f64,
11873        24.83254459737532f64,
11874        27.936612672047236f64,
11875    ],
11876    theta1: [
11877        0.9130864514733535f64,
11878        1092.6913034790819f64,
11879        961.0515899766616f64,
11880        812.7038395448996f64,
11881        455.6949957202075f64,
11882        250.02539666519567f64,
11883        49.29857005183183f64,
11884        0.9130864514733535f64,
11885        2185.3826069581637f64,
11886        1.826172902946707f64,
11887        2.7392593544200605f64,
11888        3.652345805893414f64,
11889        4.565432257366767f64,
11890        5.478518708840121f64,
11891        6.391605160313474f64,
11892        7.304691611786828f64,
11893        8.21777806326018f64,
11894    ],
11895};
11896const DECLINATION_DESPINA: RotationalElement<17usize> = RotationalElement {
11897    typ: RotationalElementType::Declination,
11898    c0: 0.7583455599915362f64,
11899    c1: 0f64,
11900    c2: 0f64,
11901    c: [
11902        -0.00890117918517108f64,
11903        0f64,
11904        0f64,
11905        -0.0012217304763960308f64,
11906        0f64,
11907        0f64,
11908        0f64,
11909        0f64,
11910        0f64,
11911        0f64,
11912        0f64,
11913        0f64,
11914        0f64,
11915        0f64,
11916        0f64,
11917        0f64,
11918        0f64,
11919    ],
11920    theta0: [
11921        6.245660728261709f64,
11922        5.653470513060032f64,
11923        3.848625533572696f64,
11924        6.183177941040311f64,
11925        1.3144074596769295f64,
11926        0.6171484235051949f64,
11927        2.4890140462691135f64,
11928        3.104068074671915f64,
11929        11.306941026120064f64,
11930        6.20813614934383f64,
11931        9.312204224015744f64,
11932        12.41627229868766f64,
11933        15.520340373359575f64,
11934        18.624408448031488f64,
11935        21.728476522703406f64,
11936        24.83254459737532f64,
11937        27.936612672047236f64,
11938    ],
11939    theta1: [
11940        0.9130864514733535f64,
11941        1092.6913034790819f64,
11942        961.0515899766616f64,
11943        812.7038395448996f64,
11944        455.6949957202075f64,
11945        250.02539666519567f64,
11946        49.29857005183183f64,
11947        0.9130864514733535f64,
11948        2185.3826069581637f64,
11949        1.826172902946707f64,
11950        2.7392593544200605f64,
11951        3.652345805893414f64,
11952        4.565432257366767f64,
11953        5.478518708840121f64,
11954        6.391605160313474f64,
11955        7.304691611786828f64,
11956        8.21777806326018f64,
11957    ],
11958};
11959const ROTATION_DESPINA: RotationalElement<17usize> = RotationalElement {
11960    typ: RotationalElementType::Rotation,
11961    c0: 5.34960869028782f64,
11962    c1: 18.77510290185297f64,
11963    c2: 0f64,
11964    c: [
11965        -0.008552113334772215f64,
11966        0f64,
11967        0f64,
11968        0.0010471975511965976f64,
11969        0f64,
11970        0f64,
11971        0f64,
11972        0f64,
11973        0f64,
11974        0f64,
11975        0f64,
11976        0f64,
11977        0f64,
11978        0f64,
11979        0f64,
11980        0f64,
11981        0f64,
11982    ],
11983    theta0: [
11984        6.245660728261709f64,
11985        5.653470513060032f64,
11986        3.848625533572696f64,
11987        6.183177941040311f64,
11988        1.3144074596769295f64,
11989        0.6171484235051949f64,
11990        2.4890140462691135f64,
11991        3.104068074671915f64,
11992        11.306941026120064f64,
11993        6.20813614934383f64,
11994        9.312204224015744f64,
11995        12.41627229868766f64,
11996        15.520340373359575f64,
11997        18.624408448031488f64,
11998        21.728476522703406f64,
11999        24.83254459737532f64,
12000        27.936612672047236f64,
12001    ],
12002    theta1: [
12003        0.9130864514733535f64,
12004        1092.6913034790819f64,
12005        961.0515899766616f64,
12006        812.7038395448996f64,
12007        455.6949957202075f64,
12008        250.02539666519567f64,
12009        49.29857005183183f64,
12010        0.9130864514733535f64,
12011        2185.3826069581637f64,
12012        1.826172902946707f64,
12013        2.7392593544200605f64,
12014        3.652345805893414f64,
12015        4.565432257366767f64,
12016        5.478518708840121f64,
12017        6.391605160313474f64,
12018        7.304691611786828f64,
12019        8.21777806326018f64,
12020    ],
12021};
12022impl RotationalElements for Despina {
12023    fn rotational_elements(&self, t: f64) -> Elements {
12024        (
12025            RIGHT_ASCENSION_DESPINA.angle(t),
12026            DECLINATION_DESPINA.angle(t),
12027            ROTATION_DESPINA.angle(t),
12028        )
12029    }
12030    fn rotational_element_rates(&self, t: f64) -> Elements {
12031        (
12032            RIGHT_ASCENSION_DESPINA.angle_dot(t),
12033            DECLINATION_DESPINA.angle_dot(t),
12034            ROTATION_DESPINA.angle_dot(t),
12035        )
12036    }
12037}
12038#[doc = "Galatea (NAIF ID: 806)."]
12039#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12040#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12041pub struct Galatea;
12042impl Origin for Galatea {
12043    fn id(&self) -> NaifId {
12044        NaifId(806i32)
12045    }
12046    fn name(&self) -> &'static str {
12047        "Galatea"
12048    }
12049}
12050impl Display for Galatea {
12051    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12052        write!(f, "{}", self.name())
12053    }
12054}
12055impl From<Galatea> for DynOrigin {
12056    fn from(_: Galatea) -> Self {
12057        DynOrigin::Galatea
12058    }
12059}
12060impl PointMass for Galatea {
12061    fn gravitational_parameter(&self) -> GravitationalParameter {
12062        GravitationalParameter::km3_per_s2(0.189898503906069f64)
12063    }
12064}
12065impl MeanRadius for Galatea {
12066    fn mean_radius(&self) -> Distance {
12067        Distance::kilometers(79f64)
12068    }
12069}
12070impl TriaxialEllipsoid for Galatea {
12071    fn radii(&self) -> Radii {
12072        (
12073            Distance::kilometers(79f64),
12074            Distance::kilometers(79f64),
12075            Distance::kilometers(79f64),
12076        )
12077    }
12078}
12079impl Spheroid for Galatea {}
12080const RIGHT_ASCENSION_GALATEA: RotationalElement<17usize> = RotationalElement {
12081    typ: RotationalElementType::RightAscension,
12082    c0: 5.224817648770225f64,
12083    c1: 0f64,
12084    c2: 0f64,
12085    c: [
12086        0.012217304763960306f64,
12087        0f64,
12088        0f64,
12089        0f64,
12090        -0.0012217304763960308f64,
12091        0f64,
12092        0f64,
12093        0f64,
12094        0f64,
12095        0f64,
12096        0f64,
12097        0f64,
12098        0f64,
12099        0f64,
12100        0f64,
12101        0f64,
12102        0f64,
12103    ],
12104    theta0: [
12105        6.245660728261709f64,
12106        5.653470513060032f64,
12107        3.848625533572696f64,
12108        6.183177941040311f64,
12109        1.3144074596769295f64,
12110        0.6171484235051949f64,
12111        2.4890140462691135f64,
12112        3.104068074671915f64,
12113        11.306941026120064f64,
12114        6.20813614934383f64,
12115        9.312204224015744f64,
12116        12.41627229868766f64,
12117        15.520340373359575f64,
12118        18.624408448031488f64,
12119        21.728476522703406f64,
12120        24.83254459737532f64,
12121        27.936612672047236f64,
12122    ],
12123    theta1: [
12124        0.9130864514733535f64,
12125        1092.6913034790819f64,
12126        961.0515899766616f64,
12127        812.7038395448996f64,
12128        455.6949957202075f64,
12129        250.02539666519567f64,
12130        49.29857005183183f64,
12131        0.9130864514733535f64,
12132        2185.3826069581637f64,
12133        1.826172902946707f64,
12134        2.7392593544200605f64,
12135        3.652345805893414f64,
12136        4.565432257366767f64,
12137        5.478518708840121f64,
12138        6.391605160313474f64,
12139        7.304691611786828f64,
12140        8.21777806326018f64,
12141    ],
12142};
12143const DECLINATION_GALATEA: RotationalElement<17usize> = RotationalElement {
12144    typ: RotationalElementType::Declination,
12145    c0: 0.7579964941411373f64,
12146    c1: 0f64,
12147    c2: 0f64,
12148    c: [
12149        -0.00890117918517108f64,
12150        0f64,
12151        0f64,
12152        0f64,
12153        -0.0008726646259971648f64,
12154        0f64,
12155        0f64,
12156        0f64,
12157        0f64,
12158        0f64,
12159        0f64,
12160        0f64,
12161        0f64,
12162        0f64,
12163        0f64,
12164        0f64,
12165        0f64,
12166    ],
12167    theta0: [
12168        6.245660728261709f64,
12169        5.653470513060032f64,
12170        3.848625533572696f64,
12171        6.183177941040311f64,
12172        1.3144074596769295f64,
12173        0.6171484235051949f64,
12174        2.4890140462691135f64,
12175        3.104068074671915f64,
12176        11.306941026120064f64,
12177        6.20813614934383f64,
12178        9.312204224015744f64,
12179        12.41627229868766f64,
12180        15.520340373359575f64,
12181        18.624408448031488f64,
12182        21.728476522703406f64,
12183        24.83254459737532f64,
12184        27.936612672047236f64,
12185    ],
12186    theta1: [
12187        0.9130864514733535f64,
12188        1092.6913034790819f64,
12189        961.0515899766616f64,
12190        812.7038395448996f64,
12191        455.6949957202075f64,
12192        250.02539666519567f64,
12193        49.29857005183183f64,
12194        0.9130864514733535f64,
12195        2185.3826069581637f64,
12196        1.826172902946707f64,
12197        2.7392593544200605f64,
12198        3.652345805893414f64,
12199        4.565432257366767f64,
12200        5.478518708840121f64,
12201        6.391605160313474f64,
12202        7.304691611786828f64,
12203        8.21777806326018f64,
12204    ],
12205};
12206const ROTATION_GALATEA: RotationalElement<17usize> = RotationalElement {
12207    typ: RotationalElementType::Rotation,
12208    c0: 4.504520266472165f64,
12209    c1: 14.6548275586037f64,
12210    c2: 0f64,
12211    c: [
12212        -0.008377580409572781f64,
12213        0f64,
12214        0f64,
12215        0f64,
12216        0.0008726646259971648f64,
12217        0f64,
12218        0f64,
12219        0f64,
12220        0f64,
12221        0f64,
12222        0f64,
12223        0f64,
12224        0f64,
12225        0f64,
12226        0f64,
12227        0f64,
12228        0f64,
12229    ],
12230    theta0: [
12231        6.245660728261709f64,
12232        5.653470513060032f64,
12233        3.848625533572696f64,
12234        6.183177941040311f64,
12235        1.3144074596769295f64,
12236        0.6171484235051949f64,
12237        2.4890140462691135f64,
12238        3.104068074671915f64,
12239        11.306941026120064f64,
12240        6.20813614934383f64,
12241        9.312204224015744f64,
12242        12.41627229868766f64,
12243        15.520340373359575f64,
12244        18.624408448031488f64,
12245        21.728476522703406f64,
12246        24.83254459737532f64,
12247        27.936612672047236f64,
12248    ],
12249    theta1: [
12250        0.9130864514733535f64,
12251        1092.6913034790819f64,
12252        961.0515899766616f64,
12253        812.7038395448996f64,
12254        455.6949957202075f64,
12255        250.02539666519567f64,
12256        49.29857005183183f64,
12257        0.9130864514733535f64,
12258        2185.3826069581637f64,
12259        1.826172902946707f64,
12260        2.7392593544200605f64,
12261        3.652345805893414f64,
12262        4.565432257366767f64,
12263        5.478518708840121f64,
12264        6.391605160313474f64,
12265        7.304691611786828f64,
12266        8.21777806326018f64,
12267    ],
12268};
12269impl RotationalElements for Galatea {
12270    fn rotational_elements(&self, t: f64) -> Elements {
12271        (
12272            RIGHT_ASCENSION_GALATEA.angle(t),
12273            DECLINATION_GALATEA.angle(t),
12274            ROTATION_GALATEA.angle(t),
12275        )
12276    }
12277    fn rotational_element_rates(&self, t: f64) -> Elements {
12278        (
12279            RIGHT_ASCENSION_GALATEA.angle_dot(t),
12280            DECLINATION_GALATEA.angle_dot(t),
12281            ROTATION_GALATEA.angle_dot(t),
12282        )
12283    }
12284}
12285#[doc = "Larissa (NAIF ID: 807)."]
12286#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12287#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12288pub struct Larissa;
12289impl Origin for Larissa {
12290    fn id(&self) -> NaifId {
12291        NaifId(807i32)
12292    }
12293    fn name(&self) -> &'static str {
12294        "Larissa"
12295    }
12296}
12297impl Display for Larissa {
12298    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12299        write!(f, "{}", self.name())
12300    }
12301}
12302impl From<Larissa> for DynOrigin {
12303    fn from(_: Larissa) -> Self {
12304        DynOrigin::Larissa
12305    }
12306}
12307impl PointMass for Larissa {
12308    fn gravitational_parameter(&self) -> GravitationalParameter {
12309        GravitationalParameter::km3_per_s2(0.2548437405693583f64)
12310    }
12311}
12312impl MeanRadius for Larissa {
12313    fn mean_radius(&self) -> Distance {
12314        Distance::kilometers(96f64)
12315    }
12316}
12317impl TriaxialEllipsoid for Larissa {
12318    fn radii(&self) -> Radii {
12319        (
12320            Distance::kilometers(96f64),
12321            Distance::kilometers(96f64),
12322            Distance::kilometers(96f64),
12323        )
12324    }
12325}
12326impl Spheroid for Larissa {}
12327const RIGHT_ASCENSION_LARISSA: RotationalElement<17usize> = RotationalElement {
12328    typ: RotationalElementType::RightAscension,
12329    c0: 5.224817648770225f64,
12330    c1: 0f64,
12331    c2: 0f64,
12332    c: [
12333        0.012217304763960306f64,
12334        0f64,
12335        0f64,
12336        0f64,
12337        0f64,
12338        -0.00471238898038469f64,
12339        0f64,
12340        0f64,
12341        0f64,
12342        0f64,
12343        0f64,
12344        0f64,
12345        0f64,
12346        0f64,
12347        0f64,
12348        0f64,
12349        0f64,
12350    ],
12351    theta0: [
12352        6.245660728261709f64,
12353        5.653470513060032f64,
12354        3.848625533572696f64,
12355        6.183177941040311f64,
12356        1.3144074596769295f64,
12357        0.6171484235051949f64,
12358        2.4890140462691135f64,
12359        3.104068074671915f64,
12360        11.306941026120064f64,
12361        6.20813614934383f64,
12362        9.312204224015744f64,
12363        12.41627229868766f64,
12364        15.520340373359575f64,
12365        18.624408448031488f64,
12366        21.728476522703406f64,
12367        24.83254459737532f64,
12368        27.936612672047236f64,
12369    ],
12370    theta1: [
12371        0.9130864514733535f64,
12372        1092.6913034790819f64,
12373        961.0515899766616f64,
12374        812.7038395448996f64,
12375        455.6949957202075f64,
12376        250.02539666519567f64,
12377        49.29857005183183f64,
12378        0.9130864514733535f64,
12379        2185.3826069581637f64,
12380        1.826172902946707f64,
12381        2.7392593544200605f64,
12382        3.652345805893414f64,
12383        4.565432257366767f64,
12384        5.478518708840121f64,
12385        6.391605160313474f64,
12386        7.304691611786828f64,
12387        8.21777806326018f64,
12388    ],
12389};
12390const DECLINATION_LARISSA: RotationalElement<17usize> = RotationalElement {
12391    typ: RotationalElementType::Declination,
12392    c0: 0.7576474282907384f64,
12393    c1: 0f64,
12394    c2: 0f64,
12395    c: [
12396        -0.00890117918517108f64,
12397        0f64,
12398        0f64,
12399        0f64,
12400        0f64,
12401        -0.003490658503988659f64,
12402        0f64,
12403        0f64,
12404        0f64,
12405        0f64,
12406        0f64,
12407        0f64,
12408        0f64,
12409        0f64,
12410        0f64,
12411        0f64,
12412        0f64,
12413    ],
12414    theta0: [
12415        6.245660728261709f64,
12416        5.653470513060032f64,
12417        3.848625533572696f64,
12418        6.183177941040311f64,
12419        1.3144074596769295f64,
12420        0.6171484235051949f64,
12421        2.4890140462691135f64,
12422        3.104068074671915f64,
12423        11.306941026120064f64,
12424        6.20813614934383f64,
12425        9.312204224015744f64,
12426        12.41627229868766f64,
12427        15.520340373359575f64,
12428        18.624408448031488f64,
12429        21.728476522703406f64,
12430        24.83254459737532f64,
12431        27.936612672047236f64,
12432    ],
12433    theta1: [
12434        0.9130864514733535f64,
12435        1092.6913034790819f64,
12436        961.0515899766616f64,
12437        812.7038395448996f64,
12438        455.6949957202075f64,
12439        250.02539666519567f64,
12440        49.29857005183183f64,
12441        0.9130864514733535f64,
12442        2185.3826069581637f64,
12443        1.826172902946707f64,
12444        2.7392593544200605f64,
12445        3.652345805893414f64,
12446        4.565432257366767f64,
12447        5.478518708840121f64,
12448        6.391605160313474f64,
12449        7.304691611786828f64,
12450        8.21777806326018f64,
12451    ],
12452};
12453const ROTATION_LARISSA: RotationalElement<17usize> = RotationalElement {
12454    typ: RotationalElementType::Rotation,
12455    c0: 3.1312952110030268f64,
12456    c1: 11.328119671568512f64,
12457    c2: 0f64,
12458    c: [
12459        -0.008377580409572781f64,
12460        0f64,
12461        0f64,
12462        0f64,
12463        0f64,
12464        0.0033161255787892262f64,
12465        0f64,
12466        0f64,
12467        0f64,
12468        0f64,
12469        0f64,
12470        0f64,
12471        0f64,
12472        0f64,
12473        0f64,
12474        0f64,
12475        0f64,
12476    ],
12477    theta0: [
12478        6.245660728261709f64,
12479        5.653470513060032f64,
12480        3.848625533572696f64,
12481        6.183177941040311f64,
12482        1.3144074596769295f64,
12483        0.6171484235051949f64,
12484        2.4890140462691135f64,
12485        3.104068074671915f64,
12486        11.306941026120064f64,
12487        6.20813614934383f64,
12488        9.312204224015744f64,
12489        12.41627229868766f64,
12490        15.520340373359575f64,
12491        18.624408448031488f64,
12492        21.728476522703406f64,
12493        24.83254459737532f64,
12494        27.936612672047236f64,
12495    ],
12496    theta1: [
12497        0.9130864514733535f64,
12498        1092.6913034790819f64,
12499        961.0515899766616f64,
12500        812.7038395448996f64,
12501        455.6949957202075f64,
12502        250.02539666519567f64,
12503        49.29857005183183f64,
12504        0.9130864514733535f64,
12505        2185.3826069581637f64,
12506        1.826172902946707f64,
12507        2.7392593544200605f64,
12508        3.652345805893414f64,
12509        4.565432257366767f64,
12510        5.478518708840121f64,
12511        6.391605160313474f64,
12512        7.304691611786828f64,
12513        8.21777806326018f64,
12514    ],
12515};
12516impl RotationalElements for Larissa {
12517    fn rotational_elements(&self, t: f64) -> Elements {
12518        (
12519            RIGHT_ASCENSION_LARISSA.angle(t),
12520            DECLINATION_LARISSA.angle(t),
12521            ROTATION_LARISSA.angle(t),
12522        )
12523    }
12524    fn rotational_element_rates(&self, t: f64) -> Elements {
12525        (
12526            RIGHT_ASCENSION_LARISSA.angle_dot(t),
12527            DECLINATION_LARISSA.angle_dot(t),
12528            ROTATION_LARISSA.angle_dot(t),
12529        )
12530    }
12531}
12532#[doc = "Proteus (NAIF ID: 808)."]
12533#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12534#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12535pub struct Proteus;
12536impl Origin for Proteus {
12537    fn id(&self) -> NaifId {
12538        NaifId(808i32)
12539    }
12540    fn name(&self) -> &'static str {
12541        "Proteus"
12542    }
12543}
12544impl Display for Proteus {
12545    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12546        write!(f, "{}", self.name())
12547    }
12548}
12549impl From<Proteus> for DynOrigin {
12550    fn from(_: Proteus) -> Self {
12551        DynOrigin::Proteus
12552    }
12553}
12554impl PointMass for Proteus {
12555    fn gravitational_parameter(&self) -> GravitationalParameter {
12556        GravitationalParameter::km3_per_s2(2.583422379120727f64)
12557    }
12558}
12559impl MeanRadius for Proteus {
12560    fn mean_radius(&self) -> Distance {
12561        Distance::kilometers(208f64)
12562    }
12563}
12564impl TriaxialEllipsoid for Proteus {
12565    fn radii(&self) -> Radii {
12566        (
12567            Distance::kilometers(218f64),
12568            Distance::kilometers(208f64),
12569            Distance::kilometers(201f64),
12570        )
12571    }
12572}
12573const RIGHT_ASCENSION_PROTEUS: RotationalElement<17usize> = RotationalElement {
12574    typ: RotationalElementType::RightAscension,
12575    c0: 5.22324685244343f64,
12576    c1: 0f64,
12577    c2: 0f64,
12578    c: [
12579        0.012217304763960306f64,
12580        0f64,
12581        0f64,
12582        0f64,
12583        0f64,
12584        0f64,
12585        -0.0008726646259971648f64,
12586        0f64,
12587        0f64,
12588        0f64,
12589        0f64,
12590        0f64,
12591        0f64,
12592        0f64,
12593        0f64,
12594        0f64,
12595        0f64,
12596    ],
12597    theta0: [
12598        6.245660728261709f64,
12599        5.653470513060032f64,
12600        3.848625533572696f64,
12601        6.183177941040311f64,
12602        1.3144074596769295f64,
12603        0.6171484235051949f64,
12604        2.4890140462691135f64,
12605        3.104068074671915f64,
12606        11.306941026120064f64,
12607        6.20813614934383f64,
12608        9.312204224015744f64,
12609        12.41627229868766f64,
12610        15.520340373359575f64,
12611        18.624408448031488f64,
12612        21.728476522703406f64,
12613        24.83254459737532f64,
12614        27.936612672047236f64,
12615    ],
12616    theta1: [
12617        0.9130864514733535f64,
12618        1092.6913034790819f64,
12619        961.0515899766616f64,
12620        812.7038395448996f64,
12621        455.6949957202075f64,
12622        250.02539666519567f64,
12623        49.29857005183183f64,
12624        0.9130864514733535f64,
12625        2185.3826069581637f64,
12626        1.826172902946707f64,
12627        2.7392593544200605f64,
12628        3.652345805893414f64,
12629        4.565432257366767f64,
12630        5.478518708840121f64,
12631        6.391605160313474f64,
12632        7.304691611786828f64,
12633        8.21777806326018f64,
12634    ],
12635};
12636const DECLINATION_PROTEUS: RotationalElement<17usize> = RotationalElement {
12637    typ: RotationalElementType::Declination,
12638    c0: 0.7489207820307667f64,
12639    c1: 0f64,
12640    c2: 0f64,
12641    c: [
12642        -0.00890117918517108f64,
12643        0f64,
12644        0f64,
12645        0f64,
12646        0f64,
12647        0f64,
12648        -0.0006981317007977319f64,
12649        0f64,
12650        0f64,
12651        0f64,
12652        0f64,
12653        0f64,
12654        0f64,
12655        0f64,
12656        0f64,
12657        0f64,
12658        0f64,
12659    ],
12660    theta0: [
12661        6.245660728261709f64,
12662        5.653470513060032f64,
12663        3.848625533572696f64,
12664        6.183177941040311f64,
12665        1.3144074596769295f64,
12666        0.6171484235051949f64,
12667        2.4890140462691135f64,
12668        3.104068074671915f64,
12669        11.306941026120064f64,
12670        6.20813614934383f64,
12671        9.312204224015744f64,
12672        12.41627229868766f64,
12673        15.520340373359575f64,
12674        18.624408448031488f64,
12675        21.728476522703406f64,
12676        24.83254459737532f64,
12677        27.936612672047236f64,
12678    ],
12679    theta1: [
12680        0.9130864514733535f64,
12681        1092.6913034790819f64,
12682        961.0515899766616f64,
12683        812.7038395448996f64,
12684        455.6949957202075f64,
12685        250.02539666519567f64,
12686        49.29857005183183f64,
12687        0.9130864514733535f64,
12688        2185.3826069581637f64,
12689        1.826172902946707f64,
12690        2.7392593544200605f64,
12691        3.652345805893414f64,
12692        4.565432257366767f64,
12693        5.478518708840121f64,
12694        6.391605160313474f64,
12695        7.304691611786828f64,
12696        8.21777806326018f64,
12697    ],
12698};
12699const ROTATION_PROTEUS: RotationalElement<17usize> = RotationalElement {
12700    typ: RotationalElementType::Rotation,
12701    c0: 1.6297884555123048f64,
12702    c1: 5.598412754411688f64,
12703    c2: 0f64,
12704    c: [
12705        -0.008377580409572781f64,
12706        0f64,
12707        0f64,
12708        0f64,
12709        0f64,
12710        0f64,
12711        0.0006981317007977319f64,
12712        0f64,
12713        0f64,
12714        0f64,
12715        0f64,
12716        0f64,
12717        0f64,
12718        0f64,
12719        0f64,
12720        0f64,
12721        0f64,
12722    ],
12723    theta0: [
12724        6.245660728261709f64,
12725        5.653470513060032f64,
12726        3.848625533572696f64,
12727        6.183177941040311f64,
12728        1.3144074596769295f64,
12729        0.6171484235051949f64,
12730        2.4890140462691135f64,
12731        3.104068074671915f64,
12732        11.306941026120064f64,
12733        6.20813614934383f64,
12734        9.312204224015744f64,
12735        12.41627229868766f64,
12736        15.520340373359575f64,
12737        18.624408448031488f64,
12738        21.728476522703406f64,
12739        24.83254459737532f64,
12740        27.936612672047236f64,
12741    ],
12742    theta1: [
12743        0.9130864514733535f64,
12744        1092.6913034790819f64,
12745        961.0515899766616f64,
12746        812.7038395448996f64,
12747        455.6949957202075f64,
12748        250.02539666519567f64,
12749        49.29857005183183f64,
12750        0.9130864514733535f64,
12751        2185.3826069581637f64,
12752        1.826172902946707f64,
12753        2.7392593544200605f64,
12754        3.652345805893414f64,
12755        4.565432257366767f64,
12756        5.478518708840121f64,
12757        6.391605160313474f64,
12758        7.304691611786828f64,
12759        8.21777806326018f64,
12760    ],
12761};
12762impl RotationalElements for Proteus {
12763    fn rotational_elements(&self, t: f64) -> Elements {
12764        (
12765            RIGHT_ASCENSION_PROTEUS.angle(t),
12766            DECLINATION_PROTEUS.angle(t),
12767            ROTATION_PROTEUS.angle(t),
12768        )
12769    }
12770    fn rotational_element_rates(&self, t: f64) -> Elements {
12771        (
12772            RIGHT_ASCENSION_PROTEUS.angle_dot(t),
12773            DECLINATION_PROTEUS.angle_dot(t),
12774            ROTATION_PROTEUS.angle_dot(t),
12775        )
12776    }
12777}
12778#[doc = "Halimede (NAIF ID: 809)."]
12779#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12780#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12781pub struct Halimede;
12782impl Origin for Halimede {
12783    fn id(&self) -> NaifId {
12784        NaifId(809i32)
12785    }
12786    fn name(&self) -> &'static str {
12787        "Halimede"
12788    }
12789}
12790impl Display for Halimede {
12791    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12792        write!(f, "{}", self.name())
12793    }
12794}
12795impl From<Halimede> for DynOrigin {
12796    fn from(_: Halimede) -> Self {
12797        DynOrigin::Halimede
12798    }
12799}
12800#[doc = "Psamathe (NAIF ID: 810)."]
12801#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12802#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12803pub struct Psamathe;
12804impl Origin for Psamathe {
12805    fn id(&self) -> NaifId {
12806        NaifId(810i32)
12807    }
12808    fn name(&self) -> &'static str {
12809        "Psamathe"
12810    }
12811}
12812impl Display for Psamathe {
12813    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12814        write!(f, "{}", self.name())
12815    }
12816}
12817impl From<Psamathe> for DynOrigin {
12818    fn from(_: Psamathe) -> Self {
12819        DynOrigin::Psamathe
12820    }
12821}
12822#[doc = "Sao (NAIF ID: 811)."]
12823#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12824#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12825pub struct Sao;
12826impl Origin for Sao {
12827    fn id(&self) -> NaifId {
12828        NaifId(811i32)
12829    }
12830    fn name(&self) -> &'static str {
12831        "Sao"
12832    }
12833}
12834impl Display for Sao {
12835    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12836        write!(f, "{}", self.name())
12837    }
12838}
12839impl From<Sao> for DynOrigin {
12840    fn from(_: Sao) -> Self {
12841        DynOrigin::Sao
12842    }
12843}
12844#[doc = "Laomedeia (NAIF ID: 812)."]
12845#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12846#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12847pub struct Laomedeia;
12848impl Origin for Laomedeia {
12849    fn id(&self) -> NaifId {
12850        NaifId(812i32)
12851    }
12852    fn name(&self) -> &'static str {
12853        "Laomedeia"
12854    }
12855}
12856impl Display for Laomedeia {
12857    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12858        write!(f, "{}", self.name())
12859    }
12860}
12861impl From<Laomedeia> for DynOrigin {
12862    fn from(_: Laomedeia) -> Self {
12863        DynOrigin::Laomedeia
12864    }
12865}
12866#[doc = "Neso (NAIF ID: 813)."]
12867#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12868#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12869pub struct Neso;
12870impl Origin for Neso {
12871    fn id(&self) -> NaifId {
12872        NaifId(813i32)
12873    }
12874    fn name(&self) -> &'static str {
12875        "Neso"
12876    }
12877}
12878impl Display for Neso {
12879    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12880        write!(f, "{}", self.name())
12881    }
12882}
12883impl From<Neso> for DynOrigin {
12884    fn from(_: Neso) -> Self {
12885        DynOrigin::Neso
12886    }
12887}
12888#[doc = "Charon (NAIF ID: 901)."]
12889#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12890#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12891pub struct Charon;
12892impl Origin for Charon {
12893    fn id(&self) -> NaifId {
12894        NaifId(901i32)
12895    }
12896    fn name(&self) -> &'static str {
12897        "Charon"
12898    }
12899}
12900impl Display for Charon {
12901    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12902        write!(f, "{}", self.name())
12903    }
12904}
12905impl From<Charon> for DynOrigin {
12906    fn from(_: Charon) -> Self {
12907        DynOrigin::Charon
12908    }
12909}
12910impl PointMass for Charon {
12911    fn gravitational_parameter(&self) -> GravitationalParameter {
12912        GravitationalParameter::km3_per_s2(105.8799888601881f64)
12913    }
12914}
12915impl MeanRadius for Charon {
12916    fn mean_radius(&self) -> Distance {
12917        Distance::kilometers(606f64)
12918    }
12919}
12920impl TriaxialEllipsoid for Charon {
12921    fn radii(&self) -> Radii {
12922        (
12923            Distance::kilometers(606f64),
12924            Distance::kilometers(606f64),
12925            Distance::kilometers(606f64),
12926        )
12927    }
12928}
12929impl Spheroid for Charon {}
12930const RIGHT_ASCENSION_CHARON: RotationalElement<0usize> = RotationalElement {
12931    typ: RotationalElementType::RightAscension,
12932    c0: 2.3211657321048187f64,
12933    c1: 0f64,
12934    c2: 0f64,
12935    c: [],
12936    theta0: [],
12937    theta1: [],
12938};
12939const DECLINATION_CHARON: RotationalElement<0usize> = RotationalElement {
12940    typ: RotationalElementType::Declination,
12941    c0: -0.10756464180041053f64,
12942    c1: 0f64,
12943    c2: 0f64,
12944    c: [],
12945    theta0: [],
12946    theta1: [],
12947};
12948const ROTATION_CHARON: RotationalElement<0usize> = RotationalElement {
12949    typ: RotationalElementType::Rotation,
12950    c0: 2.1414317257344426f64,
12951    c1: 0.9837115923543857f64,
12952    c2: 0f64,
12953    c: [],
12954    theta0: [],
12955    theta1: [],
12956};
12957impl RotationalElements for Charon {
12958    fn rotational_elements(&self, t: f64) -> Elements {
12959        (
12960            RIGHT_ASCENSION_CHARON.angle(t),
12961            DECLINATION_CHARON.angle(t),
12962            ROTATION_CHARON.angle(t),
12963        )
12964    }
12965    fn rotational_element_rates(&self, t: f64) -> Elements {
12966        (
12967            RIGHT_ASCENSION_CHARON.angle_dot(t),
12968            DECLINATION_CHARON.angle_dot(t),
12969            ROTATION_CHARON.angle_dot(t),
12970        )
12971    }
12972}
12973#[doc = "Nix (NAIF ID: 902)."]
12974#[derive(Debug, Copy, Clone, Eq, PartialEq)]
12975#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12976pub struct Nix;
12977impl Origin for Nix {
12978    fn id(&self) -> NaifId {
12979        NaifId(902i32)
12980    }
12981    fn name(&self) -> &'static str {
12982        "Nix"
12983    }
12984}
12985impl Display for Nix {
12986    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
12987        write!(f, "{}", self.name())
12988    }
12989}
12990impl From<Nix> for DynOrigin {
12991    fn from(_: Nix) -> Self {
12992        DynOrigin::Nix
12993    }
12994}
12995impl PointMass for Nix {
12996    fn gravitational_parameter(&self) -> GravitationalParameter {
12997        GravitationalParameter::km3_per_s2(0.00304817564816976f64)
12998    }
12999}
13000#[doc = "Hydra (NAIF ID: 903)."]
13001#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13002#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13003pub struct Hydra;
13004impl Origin for Hydra {
13005    fn id(&self) -> NaifId {
13006        NaifId(903i32)
13007    }
13008    fn name(&self) -> &'static str {
13009        "Hydra"
13010    }
13011}
13012impl Display for Hydra {
13013    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13014        write!(f, "{}", self.name())
13015    }
13016}
13017impl From<Hydra> for DynOrigin {
13018    fn from(_: Hydra) -> Self {
13019        DynOrigin::Hydra
13020    }
13021}
13022impl PointMass for Hydra {
13023    fn gravitational_parameter(&self) -> GravitationalParameter {
13024        GravitationalParameter::km3_per_s2(0.003211039206155255f64)
13025    }
13026}
13027#[doc = "Kerberos (NAIF ID: 904)."]
13028#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13029#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13030pub struct Kerberos;
13031impl Origin for Kerberos {
13032    fn id(&self) -> NaifId {
13033        NaifId(904i32)
13034    }
13035    fn name(&self) -> &'static str {
13036        "Kerberos"
13037    }
13038}
13039impl Display for Kerberos {
13040    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13041        write!(f, "{}", self.name())
13042    }
13043}
13044impl From<Kerberos> for DynOrigin {
13045    fn from(_: Kerberos) -> Self {
13046        DynOrigin::Kerberos
13047    }
13048}
13049impl PointMass for Kerberos {
13050    fn gravitational_parameter(&self) -> GravitationalParameter {
13051        GravitationalParameter::km3_per_s2(0.001110040850536676f64)
13052    }
13053}
13054#[doc = "Styx (NAIF ID: 905)."]
13055#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13056#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13057pub struct Styx;
13058impl Origin for Styx {
13059    fn id(&self) -> NaifId {
13060        NaifId(905i32)
13061    }
13062    fn name(&self) -> &'static str {
13063        "Styx"
13064    }
13065}
13066impl Display for Styx {
13067    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13068        write!(f, "{}", self.name())
13069    }
13070}
13071impl From<Styx> for DynOrigin {
13072    fn from(_: Styx) -> Self {
13073        DynOrigin::Styx
13074    }
13075}
13076impl PointMass for Styx {
13077    fn gravitational_parameter(&self) -> GravitationalParameter {
13078        GravitationalParameter::km3_per_s2(0f64)
13079    }
13080}
13081#[doc = "Gaspra (NAIF ID: 9511010)."]
13082#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13083#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13084pub struct Gaspra;
13085impl Origin for Gaspra {
13086    fn id(&self) -> NaifId {
13087        NaifId(9511010i32)
13088    }
13089    fn name(&self) -> &'static str {
13090        "Gaspra"
13091    }
13092}
13093impl Display for Gaspra {
13094    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13095        write!(f, "{}", self.name())
13096    }
13097}
13098impl From<Gaspra> for DynOrigin {
13099    fn from(_: Gaspra) -> Self {
13100        DynOrigin::Gaspra
13101    }
13102}
13103impl MeanRadius for Gaspra {
13104    fn mean_radius(&self) -> Distance {
13105        Distance::kilometers(6.1f64)
13106    }
13107}
13108impl TriaxialEllipsoid for Gaspra {
13109    fn radii(&self) -> Radii {
13110        (
13111            Distance::kilometers(9.1f64),
13112            Distance::kilometers(5.2f64),
13113            Distance::kilometers(4.4f64),
13114        )
13115    }
13116}
13117const RIGHT_ASCENSION_GASPRA: RotationalElement<0usize> = RotationalElement {
13118    typ: RotationalElementType::RightAscension,
13119    c0: 0.16528268016386302f64,
13120    c1: 0f64,
13121    c2: 0f64,
13122    c: [],
13123    theta0: [],
13124    theta1: [],
13125};
13126const DECLINATION_GASPRA: RotationalElement<0usize> = RotationalElement {
13127    typ: RotationalElementType::Declination,
13128    c0: 0.46600291028248597f64,
13129    c1: 0f64,
13130    c2: 0f64,
13131    c: [],
13132    theta0: [],
13133    theta1: [],
13134};
13135const ROTATION_GASPRA: RotationalElement<0usize> = RotationalElement {
13136    typ: RotationalElementType::Rotation,
13137    c0: 1.4603169851436555f64,
13138    c1: 21.41364504378302f64,
13139    c2: 0f64,
13140    c: [],
13141    theta0: [],
13142    theta1: [],
13143};
13144impl RotationalElements for Gaspra {
13145    fn rotational_elements(&self, t: f64) -> Elements {
13146        (
13147            RIGHT_ASCENSION_GASPRA.angle(t),
13148            DECLINATION_GASPRA.angle(t),
13149            ROTATION_GASPRA.angle(t),
13150        )
13151    }
13152    fn rotational_element_rates(&self, t: f64) -> Elements {
13153        (
13154            RIGHT_ASCENSION_GASPRA.angle_dot(t),
13155            DECLINATION_GASPRA.angle_dot(t),
13156            ROTATION_GASPRA.angle_dot(t),
13157        )
13158    }
13159}
13160#[doc = "Ida (NAIF ID: 2431010)."]
13161#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13162#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13163pub struct Ida;
13164impl Origin for Ida {
13165    fn id(&self) -> NaifId {
13166        NaifId(2431010i32)
13167    }
13168    fn name(&self) -> &'static str {
13169        "Ida"
13170    }
13171}
13172impl Display for Ida {
13173    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13174        write!(f, "{}", self.name())
13175    }
13176}
13177impl From<Ida> for DynOrigin {
13178    fn from(_: Ida) -> Self {
13179        DynOrigin::Ida
13180    }
13181}
13182impl MeanRadius for Ida {
13183    fn mean_radius(&self) -> Distance {
13184        Distance::kilometers(15.65f64)
13185    }
13186}
13187impl TriaxialEllipsoid for Ida {
13188    fn radii(&self) -> Radii {
13189        (
13190            Distance::kilometers(26.8f64),
13191            Distance::kilometers(12f64),
13192            Distance::kilometers(7.6f64),
13193        )
13194    }
13195}
13196const RIGHT_ASCENSION_IDA: RotationalElement<0usize> = RotationalElement {
13197    typ: RotationalElementType::RightAscension,
13198    c0: 2.9454176456656302f64,
13199    c1: 0f64,
13200    c2: 0f64,
13201    c: [],
13202    theta0: [],
13203    theta1: [],
13204};
13205const DECLINATION_IDA: RotationalElement<0usize> = RotationalElement {
13206    typ: RotationalElementType::Declination,
13207    c0: -1.5205308443374599f64,
13208    c1: 0f64,
13209    c2: 0f64,
13210    c: [],
13211    theta0: [],
13212    theta1: [],
13213};
13214const ROTATION_IDA: RotationalElement<0usize> = RotationalElement {
13215    typ: RotationalElementType::Rotation,
13216    c0: 4.78307481509046f64,
13217    c1: 32.54389804704987f64,
13218    c2: 0f64,
13219    c: [],
13220    theta0: [],
13221    theta1: [],
13222};
13223impl RotationalElements for Ida {
13224    fn rotational_elements(&self, t: f64) -> Elements {
13225        (
13226            RIGHT_ASCENSION_IDA.angle(t),
13227            DECLINATION_IDA.angle(t),
13228            ROTATION_IDA.angle(t),
13229        )
13230    }
13231    fn rotational_element_rates(&self, t: f64) -> Elements {
13232        (
13233            RIGHT_ASCENSION_IDA.angle_dot(t),
13234            DECLINATION_IDA.angle_dot(t),
13235            ROTATION_IDA.angle_dot(t),
13236        )
13237    }
13238}
13239#[doc = "Dactyl (NAIF ID: 2431011)."]
13240#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13241#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13242pub struct Dactyl;
13243impl Origin for Dactyl {
13244    fn id(&self) -> NaifId {
13245        NaifId(2431011i32)
13246    }
13247    fn name(&self) -> &'static str {
13248        "Dactyl"
13249    }
13250}
13251impl Display for Dactyl {
13252    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13253        write!(f, "{}", self.name())
13254    }
13255}
13256impl From<Dactyl> for DynOrigin {
13257    fn from(_: Dactyl) -> Self {
13258        DynOrigin::Dactyl
13259    }
13260}
13261#[doc = "Ceres (NAIF ID: 2000001)."]
13262#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13263#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13264pub struct Ceres;
13265impl Origin for Ceres {
13266    fn id(&self) -> NaifId {
13267        NaifId(2000001i32)
13268    }
13269    fn name(&self) -> &'static str {
13270        "Ceres"
13271    }
13272}
13273impl Display for Ceres {
13274    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13275        write!(f, "{}", self.name())
13276    }
13277}
13278impl From<Ceres> for DynOrigin {
13279    fn from(_: Ceres) -> Self {
13280        DynOrigin::Ceres
13281    }
13282}
13283impl PointMass for Ceres {
13284    fn gravitational_parameter(&self) -> GravitationalParameter {
13285        GravitationalParameter::km3_per_s2(62.62888864440993f64)
13286    }
13287}
13288impl MeanRadius for Ceres {
13289    fn mean_radius(&self) -> Distance {
13290        Distance::kilometers(470f64)
13291    }
13292}
13293impl TriaxialEllipsoid for Ceres {
13294    fn radii(&self) -> Radii {
13295        (
13296            Distance::kilometers(487.3f64),
13297            Distance::kilometers(487.3f64),
13298            Distance::kilometers(446f64),
13299        )
13300    }
13301}
13302impl Spheroid for Ceres {}
13303const RIGHT_ASCENSION_CERES: RotationalElement<0usize> = RotationalElement {
13304    typ: RotationalElementType::RightAscension,
13305    c0: 5.0862035995768355f64,
13306    c1: 0f64,
13307    c2: 0f64,
13308    c: [],
13309    theta0: [],
13310    theta1: [],
13311};
13312const DECLINATION_CERES: RotationalElement<0usize> = RotationalElement {
13313    typ: RotationalElementType::Declination,
13314    c0: 1.165251621801494f64,
13315    c1: 0f64,
13316    c2: 0f64,
13317    c: [],
13318    theta0: [],
13319    theta1: [],
13320};
13321const ROTATION_CERES: RotationalElement<0usize> = RotationalElement {
13322    typ: RotationalElementType::Rotation,
13323    c0: 2.9784043685283237f64,
13324    c1: 16.618208323400072f64,
13325    c2: 0f64,
13326    c: [],
13327    theta0: [],
13328    theta1: [],
13329};
13330impl RotationalElements for Ceres {
13331    fn rotational_elements(&self, t: f64) -> Elements {
13332        (
13333            RIGHT_ASCENSION_CERES.angle(t),
13334            DECLINATION_CERES.angle(t),
13335            ROTATION_CERES.angle(t),
13336        )
13337    }
13338    fn rotational_element_rates(&self, t: f64) -> Elements {
13339        (
13340            RIGHT_ASCENSION_CERES.angle_dot(t),
13341            DECLINATION_CERES.angle_dot(t),
13342            ROTATION_CERES.angle_dot(t),
13343        )
13344    }
13345}
13346#[doc = "Pallas (NAIF ID: 2000002)."]
13347#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13348#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13349pub struct Pallas;
13350impl Origin for Pallas {
13351    fn id(&self) -> NaifId {
13352        NaifId(2000002i32)
13353    }
13354    fn name(&self) -> &'static str {
13355        "Pallas"
13356    }
13357}
13358impl Display for Pallas {
13359    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13360        write!(f, "{}", self.name())
13361    }
13362}
13363impl From<Pallas> for DynOrigin {
13364    fn from(_: Pallas) -> Self {
13365        DynOrigin::Pallas
13366    }
13367}
13368impl PointMass for Pallas {
13369    fn gravitational_parameter(&self) -> GravitationalParameter {
13370        GravitationalParameter::km3_per_s2(13.665878145967422f64)
13371    }
13372}
13373const RIGHT_ASCENSION_PALLAS: RotationalElement<0usize> = RotationalElement {
13374    typ: RotationalElementType::RightAscension,
13375    c0: 0.5759586531581288f64,
13376    c1: 0f64,
13377    c2: 0f64,
13378    c: [],
13379    theta0: [],
13380    theta1: [],
13381};
13382const DECLINATION_PALLAS: RotationalElement<0usize> = RotationalElement {
13383    typ: RotationalElementType::Declination,
13384    c0: -0.05235987755982989f64,
13385    c1: 0f64,
13386    c2: 0f64,
13387    c: [],
13388    theta0: [],
13389    theta1: [],
13390};
13391const ROTATION_PALLAS: RotationalElement<0usize> = RotationalElement {
13392    typ: RotationalElementType::Rotation,
13393    c0: 0.6632251157578453f64,
13394    c1: 19.299913700406368f64,
13395    c2: 0f64,
13396    c: [],
13397    theta0: [],
13398    theta1: [],
13399};
13400impl RotationalElements for Pallas {
13401    fn rotational_elements(&self, t: f64) -> Elements {
13402        (
13403            RIGHT_ASCENSION_PALLAS.angle(t),
13404            DECLINATION_PALLAS.angle(t),
13405            ROTATION_PALLAS.angle(t),
13406        )
13407    }
13408    fn rotational_element_rates(&self, t: f64) -> Elements {
13409        (
13410            RIGHT_ASCENSION_PALLAS.angle_dot(t),
13411            DECLINATION_PALLAS.angle_dot(t),
13412            ROTATION_PALLAS.angle_dot(t),
13413        )
13414    }
13415}
13416#[doc = "Vesta (NAIF ID: 2000004)."]
13417#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13418#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13419pub struct Vesta;
13420impl Origin for Vesta {
13421    fn id(&self) -> NaifId {
13422        NaifId(2000004i32)
13423    }
13424    fn name(&self) -> &'static str {
13425        "Vesta"
13426    }
13427}
13428impl Display for Vesta {
13429    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13430        write!(f, "{}", self.name())
13431    }
13432}
13433impl From<Vesta> for DynOrigin {
13434    fn from(_: Vesta) -> Self {
13435        DynOrigin::Vesta
13436    }
13437}
13438impl PointMass for Vesta {
13439    fn gravitational_parameter(&self) -> GravitationalParameter {
13440        GravitationalParameter::km3_per_s2(17.288232879171513f64)
13441    }
13442}
13443impl TriaxialEllipsoid for Vesta {
13444    fn radii(&self) -> Radii {
13445        (
13446            Distance::kilometers(289f64),
13447            Distance::kilometers(280f64),
13448            Distance::kilometers(229f64),
13449        )
13450    }
13451}
13452const RIGHT_ASCENSION_VESTA: RotationalElement<0usize> = RotationalElement {
13453    typ: RotationalElementType::RightAscension,
13454    c0: 5.393608440730596f64,
13455    c1: 0f64,
13456    c2: 0f64,
13457    c: [],
13458    theta0: [],
13459    theta1: [],
13460};
13461const DECLINATION_VESTA: RotationalElement<0usize> = RotationalElement {
13462    typ: RotationalElementType::Declination,
13463    c0: 0.7371398095798051f64,
13464    c1: 0f64,
13465    c2: 0f64,
13466    c: [],
13467    theta0: [],
13468    theta1: [],
13469};
13470const ROTATION_VESTA: RotationalElement<0usize> = RotationalElement {
13471    typ: RotationalElementType::Rotation,
13472    c0: 4.980995152266617f64,
13473    c1: 28.22778495282912f64,
13474    c2: 0f64,
13475    c: [],
13476    theta0: [],
13477    theta1: [],
13478};
13479impl RotationalElements for Vesta {
13480    fn rotational_elements(&self, t: f64) -> Elements {
13481        (
13482            RIGHT_ASCENSION_VESTA.angle(t),
13483            DECLINATION_VESTA.angle(t),
13484            ROTATION_VESTA.angle(t),
13485        )
13486    }
13487    fn rotational_element_rates(&self, t: f64) -> Elements {
13488        (
13489            RIGHT_ASCENSION_VESTA.angle_dot(t),
13490            DECLINATION_VESTA.angle_dot(t),
13491            ROTATION_VESTA.angle_dot(t),
13492        )
13493    }
13494}
13495#[doc = "Psyche (NAIF ID: 2000016)."]
13496#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13497#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13498pub struct Psyche;
13499impl Origin for Psyche {
13500    fn id(&self) -> NaifId {
13501        NaifId(2000016i32)
13502    }
13503    fn name(&self) -> &'static str {
13504        "Psyche"
13505    }
13506}
13507impl Display for Psyche {
13508    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13509        write!(f, "{}", self.name())
13510    }
13511}
13512impl From<Psyche> for DynOrigin {
13513    fn from(_: Psyche) -> Self {
13514        DynOrigin::Psyche
13515    }
13516}
13517impl PointMass for Psyche {
13518    fn gravitational_parameter(&self) -> GravitationalParameter {
13519        GravitationalParameter::km3_per_s2(1.5896582441709424f64)
13520    }
13521}
13522impl MeanRadius for Psyche {
13523    fn mean_radius(&self) -> Distance {
13524        Distance::kilometers(113f64)
13525    }
13526}
13527impl TriaxialEllipsoid for Psyche {
13528    fn radii(&self) -> Radii {
13529        (
13530            Distance::kilometers(139.5f64),
13531            Distance::kilometers(116f64),
13532            Distance::kilometers(94.5f64),
13533        )
13534    }
13535}
13536#[doc = "Lutetia (NAIF ID: 2000021)."]
13537#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13538#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13539pub struct Lutetia;
13540impl Origin for Lutetia {
13541    fn id(&self) -> NaifId {
13542        NaifId(2000021i32)
13543    }
13544    fn name(&self) -> &'static str {
13545        "Lutetia"
13546    }
13547}
13548impl Display for Lutetia {
13549    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13550        write!(f, "{}", self.name())
13551    }
13552}
13553impl From<Lutetia> for DynOrigin {
13554    fn from(_: Lutetia) -> Self {
13555        DynOrigin::Lutetia
13556    }
13557}
13558impl MeanRadius for Lutetia {
13559    fn mean_radius(&self) -> Distance {
13560        Distance::kilometers(52.5f64)
13561    }
13562}
13563impl TriaxialEllipsoid for Lutetia {
13564    fn radii(&self) -> Radii {
13565        (
13566            Distance::kilometers(62f64),
13567            Distance::kilometers(50.5f64),
13568            Distance::kilometers(46.5f64),
13569        )
13570    }
13571}
13572const RIGHT_ASCENSION_LUTETIA: RotationalElement<0usize> = RotationalElement {
13573    typ: RotationalElementType::RightAscension,
13574    c0: 0.9075712110370514f64,
13575    c1: 0f64,
13576    c2: 0f64,
13577    c: [],
13578    theta0: [],
13579    theta1: [],
13580};
13581const DECLINATION_LUTETIA: RotationalElement<0usize> = RotationalElement {
13582    typ: RotationalElementType::Declination,
13583    c0: 0.20943951023931956f64,
13584    c1: 0f64,
13585    c2: 0f64,
13586    c: [],
13587    theta0: [],
13588    theta1: [],
13589};
13590const ROTATION_LUTETIA: RotationalElement<0usize> = RotationalElement {
13591    typ: RotationalElementType::Rotation,
13592    c0: 1.6406094968746698f64,
13593    c1: 18.4612463429088f64,
13594    c2: 0f64,
13595    c: [],
13596    theta0: [],
13597    theta1: [],
13598};
13599impl RotationalElements for Lutetia {
13600    fn rotational_elements(&self, t: f64) -> Elements {
13601        (
13602            RIGHT_ASCENSION_LUTETIA.angle(t),
13603            DECLINATION_LUTETIA.angle(t),
13604            ROTATION_LUTETIA.angle(t),
13605        )
13606    }
13607    fn rotational_element_rates(&self, t: f64) -> Elements {
13608        (
13609            RIGHT_ASCENSION_LUTETIA.angle_dot(t),
13610            DECLINATION_LUTETIA.angle_dot(t),
13611            ROTATION_LUTETIA.angle_dot(t),
13612        )
13613    }
13614}
13615#[doc = "Kleopatra (NAIF ID: 2000216)."]
13616#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13617#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13618pub struct Kleopatra;
13619impl Origin for Kleopatra {
13620    fn id(&self) -> NaifId {
13621        NaifId(2000216i32)
13622    }
13623    fn name(&self) -> &'static str {
13624        "Kleopatra"
13625    }
13626}
13627impl Display for Kleopatra {
13628    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13629        write!(f, "{}", self.name())
13630    }
13631}
13632impl From<Kleopatra> for DynOrigin {
13633    fn from(_: Kleopatra) -> Self {
13634        DynOrigin::Kleopatra
13635    }
13636}
13637#[doc = "Eros (NAIF ID: 2000433)."]
13638#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13639#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13640pub struct Eros;
13641impl Origin for Eros {
13642    fn id(&self) -> NaifId {
13643        NaifId(2000433i32)
13644    }
13645    fn name(&self) -> &'static str {
13646        "Eros"
13647    }
13648}
13649impl Display for Eros {
13650    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13651        write!(f, "{}", self.name())
13652    }
13653}
13654impl From<Eros> for DynOrigin {
13655    fn from(_: Eros) -> Self {
13656        DynOrigin::Eros
13657    }
13658}
13659impl PointMass for Eros {
13660    fn gravitational_parameter(&self) -> GravitationalParameter {
13661        GravitationalParameter::km3_per_s2(0.0004463f64)
13662    }
13663}
13664impl MeanRadius for Eros {
13665    fn mean_radius(&self) -> Distance {
13666        Distance::kilometers(8.45f64)
13667    }
13668}
13669impl TriaxialEllipsoid for Eros {
13670    fn radii(&self) -> Radii {
13671        (
13672            Distance::kilometers(17f64),
13673            Distance::kilometers(5.5f64),
13674            Distance::kilometers(5.5f64),
13675        )
13676    }
13677}
13678const RIGHT_ASCENSION_EROS: RotationalElement<0usize> = RotationalElement {
13679    typ: RotationalElementType::RightAscension,
13680    c0: 0.1980948701013564f64,
13681    c1: 0f64,
13682    c2: 0f64,
13683    c: [],
13684    theta0: [],
13685    theta1: [],
13686};
13687const DECLINATION_EROS: RotationalElement<0usize> = RotationalElement {
13688    typ: RotationalElementType::Declination,
13689    c0: 0.30054569719342356f64,
13690    c1: 0f64,
13691    c2: 0f64,
13692    c: [],
13693    theta0: [],
13694    theta1: [],
13695};
13696const ROTATION_EROS: RotationalElement<0usize> = RotationalElement {
13697    typ: RotationalElementType::Rotation,
13698    c0: 5.690995091977911f64,
13699    c1: 28.612729617819042f64,
13700    c2: 0f64,
13701    c: [],
13702    theta0: [],
13703    theta1: [],
13704};
13705impl RotationalElements for Eros {
13706    fn rotational_elements(&self, t: f64) -> Elements {
13707        (
13708            RIGHT_ASCENSION_EROS.angle(t),
13709            DECLINATION_EROS.angle(t),
13710            ROTATION_EROS.angle(t),
13711        )
13712    }
13713    fn rotational_element_rates(&self, t: f64) -> Elements {
13714        (
13715            RIGHT_ASCENSION_EROS.angle_dot(t),
13716            DECLINATION_EROS.angle_dot(t),
13717            ROTATION_EROS.angle_dot(t),
13718        )
13719    }
13720}
13721#[doc = "Davida (NAIF ID: 2000511)."]
13722#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13723#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13724pub struct Davida;
13725impl Origin for Davida {
13726    fn id(&self) -> NaifId {
13727        NaifId(2000511i32)
13728    }
13729    fn name(&self) -> &'static str {
13730        "Davida"
13731    }
13732}
13733impl Display for Davida {
13734    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13735        write!(f, "{}", self.name())
13736    }
13737}
13738impl From<Davida> for DynOrigin {
13739    fn from(_: Davida) -> Self {
13740        DynOrigin::Davida
13741    }
13742}
13743impl PointMass for Davida {
13744    fn gravitational_parameter(&self) -> GravitationalParameter {
13745        GravitationalParameter::km3_per_s2(3.8944831481705644f64)
13746    }
13747}
13748impl MeanRadius for Davida {
13749    fn mean_radius(&self) -> Distance {
13750        Distance::kilometers(150f64)
13751    }
13752}
13753impl TriaxialEllipsoid for Davida {
13754    fn radii(&self) -> Radii {
13755        (
13756            Distance::kilometers(180f64),
13757            Distance::kilometers(147f64),
13758            Distance::kilometers(127f64),
13759        )
13760    }
13761}
13762const RIGHT_ASCENSION_DAVIDA: RotationalElement<0usize> = RotationalElement {
13763    typ: RotationalElementType::RightAscension,
13764    c0: 5.183627878423159f64,
13765    c1: 0f64,
13766    c2: 0f64,
13767    c: [],
13768    theta0: [],
13769    theta1: [],
13770};
13771const DECLINATION_DAVIDA: RotationalElement<0usize> = RotationalElement {
13772    typ: RotationalElementType::Declination,
13773    c0: 0.08726646259971647f64,
13774    c1: 0f64,
13775    c2: 0f64,
13776    c: [],
13777    theta0: [],
13778    theta1: [],
13779};
13780const ROTATION_DAVIDA: RotationalElement<0usize> = RotationalElement {
13781    typ: RotationalElementType::Rotation,
13782    c0: 4.679227724596798f64,
13783    c1: 29.39866372732388f64,
13784    c2: 0f64,
13785    c: [],
13786    theta0: [],
13787    theta1: [],
13788};
13789impl RotationalElements for Davida {
13790    fn rotational_elements(&self, t: f64) -> Elements {
13791        (
13792            RIGHT_ASCENSION_DAVIDA.angle(t),
13793            DECLINATION_DAVIDA.angle(t),
13794            ROTATION_DAVIDA.angle(t),
13795        )
13796    }
13797    fn rotational_element_rates(&self, t: f64) -> Elements {
13798        (
13799            RIGHT_ASCENSION_DAVIDA.angle_dot(t),
13800            DECLINATION_DAVIDA.angle_dot(t),
13801            ROTATION_DAVIDA.angle_dot(t),
13802        )
13803    }
13804}
13805#[doc = "Mathilde (NAIF ID: 2000253)."]
13806#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13807#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13808pub struct Mathilde;
13809impl Origin for Mathilde {
13810    fn id(&self) -> NaifId {
13811        NaifId(2000253i32)
13812    }
13813    fn name(&self) -> &'static str {
13814        "Mathilde"
13815    }
13816}
13817impl Display for Mathilde {
13818    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13819        write!(f, "{}", self.name())
13820    }
13821}
13822impl From<Mathilde> for DynOrigin {
13823    fn from(_: Mathilde) -> Self {
13824        DynOrigin::Mathilde
13825    }
13826}
13827impl MeanRadius for Mathilde {
13828    fn mean_radius(&self) -> Distance {
13829        Distance::kilometers(26.5f64)
13830    }
13831}
13832impl TriaxialEllipsoid for Mathilde {
13833    fn radii(&self) -> Radii {
13834        (
13835            Distance::kilometers(33f64),
13836            Distance::kilometers(24f64),
13837            Distance::kilometers(23f64),
13838        )
13839    }
13840}
13841#[doc = "Steins (NAIF ID: 2002867)."]
13842#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13843#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13844pub struct Steins;
13845impl Origin for Steins {
13846    fn id(&self) -> NaifId {
13847        NaifId(2002867i32)
13848    }
13849    fn name(&self) -> &'static str {
13850        "Steins"
13851    }
13852}
13853impl Display for Steins {
13854    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13855        write!(f, "{}", self.name())
13856    }
13857}
13858impl From<Steins> for DynOrigin {
13859    fn from(_: Steins) -> Self {
13860        DynOrigin::Steins
13861    }
13862}
13863impl MeanRadius for Steins {
13864    fn mean_radius(&self) -> Distance {
13865        Distance::kilometers(2.7f64)
13866    }
13867}
13868impl TriaxialEllipsoid for Steins {
13869    fn radii(&self) -> Radii {
13870        (
13871            Distance::kilometers(3.24f64),
13872            Distance::kilometers(2.73f64),
13873            Distance::kilometers(2.04f64),
13874        )
13875    }
13876}
13877const RIGHT_ASCENSION_STEINS: RotationalElement<0usize> = RotationalElement {
13878    typ: RotationalElementType::RightAscension,
13879    c0: 1.5882496193148399f64,
13880    c1: 0f64,
13881    c2: 0f64,
13882    c: [],
13883    theta0: [],
13884    theta1: [],
13885};
13886const DECLINATION_STEINS: RotationalElement<0usize> = RotationalElement {
13887    typ: RotationalElementType::Declination,
13888    c0: -1.0821041362364843f64,
13889    c1: 0f64,
13890    c2: 0f64,
13891    c: [],
13892    theta0: [],
13893    theta1: [],
13894};
13895const ROTATION_STEINS: RotationalElement<0usize> = RotationalElement {
13896    typ: RotationalElementType::Rotation,
13897    c0: 5.615771401216954f64,
13898    c1: 24.925032561498227f64,
13899    c2: 0f64,
13900    c: [],
13901    theta0: [],
13902    theta1: [],
13903};
13904impl RotationalElements for Steins {
13905    fn rotational_elements(&self, t: f64) -> Elements {
13906        (
13907            RIGHT_ASCENSION_STEINS.angle(t),
13908            DECLINATION_STEINS.angle(t),
13909            ROTATION_STEINS.angle(t),
13910        )
13911    }
13912    fn rotational_element_rates(&self, t: f64) -> Elements {
13913        (
13914            RIGHT_ASCENSION_STEINS.angle_dot(t),
13915            DECLINATION_STEINS.angle_dot(t),
13916            ROTATION_STEINS.angle_dot(t),
13917        )
13918    }
13919}
13920#[doc = "Braille (NAIF ID: 2009969)."]
13921#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13922#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13923pub struct Braille;
13924impl Origin for Braille {
13925    fn id(&self) -> NaifId {
13926        NaifId(2009969i32)
13927    }
13928    fn name(&self) -> &'static str {
13929        "Braille"
13930    }
13931}
13932impl Display for Braille {
13933    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13934        write!(f, "{}", self.name())
13935    }
13936}
13937impl From<Braille> for DynOrigin {
13938    fn from(_: Braille) -> Self {
13939        DynOrigin::Braille
13940    }
13941}
13942#[doc = "Wilson-Harrington (NAIF ID: 2004015)."]
13943#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13944#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13945pub struct WilsonHarrington;
13946impl Origin for WilsonHarrington {
13947    fn id(&self) -> NaifId {
13948        NaifId(2004015i32)
13949    }
13950    fn name(&self) -> &'static str {
13951        "Wilson-Harrington"
13952    }
13953}
13954impl Display for WilsonHarrington {
13955    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13956        write!(f, "{}", self.name())
13957    }
13958}
13959impl From<WilsonHarrington> for DynOrigin {
13960    fn from(_: WilsonHarrington) -> Self {
13961        DynOrigin::WilsonHarrington
13962    }
13963}
13964#[doc = "Toutatis (NAIF ID: 2004179)."]
13965#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13966#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13967pub struct Toutatis;
13968impl Origin for Toutatis {
13969    fn id(&self) -> NaifId {
13970        NaifId(2004179i32)
13971    }
13972    fn name(&self) -> &'static str {
13973        "Toutatis"
13974    }
13975}
13976impl Display for Toutatis {
13977    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13978        write!(f, "{}", self.name())
13979    }
13980}
13981impl From<Toutatis> for DynOrigin {
13982    fn from(_: Toutatis) -> Self {
13983        DynOrigin::Toutatis
13984    }
13985}
13986impl TriaxialEllipsoid for Toutatis {
13987    fn radii(&self) -> Radii {
13988        (
13989            Distance::kilometers(2.13f64),
13990            Distance::kilometers(1.015f64),
13991            Distance::kilometers(0.85f64),
13992        )
13993    }
13994}
13995#[doc = "Itokawa (NAIF ID: 2025143)."]
13996#[derive(Debug, Copy, Clone, Eq, PartialEq)]
13997#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
13998pub struct Itokawa;
13999impl Origin for Itokawa {
14000    fn id(&self) -> NaifId {
14001        NaifId(2025143i32)
14002    }
14003    fn name(&self) -> &'static str {
14004        "Itokawa"
14005    }
14006}
14007impl Display for Itokawa {
14008    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
14009        write!(f, "{}", self.name())
14010    }
14011}
14012impl From<Itokawa> for DynOrigin {
14013    fn from(_: Itokawa) -> Self {
14014        DynOrigin::Itokawa
14015    }
14016}
14017impl TriaxialEllipsoid for Itokawa {
14018    fn radii(&self) -> Radii {
14019        (
14020            Distance::kilometers(0.268f64),
14021            Distance::kilometers(0.147f64),
14022            Distance::kilometers(0.104f64),
14023        )
14024    }
14025}
14026const RIGHT_ASCENSION_ITOKAWA: RotationalElement<0usize> = RotationalElement {
14027    typ: RotationalElementType::RightAscension,
14028    c0: 1.5800465718304666f64,
14029    c1: 0f64,
14030    c2: 0f64,
14031    c: [],
14032    theta0: [],
14033    theta1: [],
14034};
14035const DECLINATION_ITOKAWA: RotationalElement<0usize> = RotationalElement {
14036    typ: RotationalElementType::Declination,
14037    c0: -1.1571532940722404f64,
14038    c1: 0f64,
14039    c2: 0f64,
14040    c: [],
14041    theta0: [],
14042    theta1: [],
14043};
14044const ROTATION_ITOKAWA: RotationalElement<0usize> = RotationalElement {
14045    typ: RotationalElementType::Rotation,
14046    c0: 0f64,
14047    c1: 12.429240095029979f64,
14048    c2: 0f64,
14049    c: [],
14050    theta0: [],
14051    theta1: [],
14052};
14053impl RotationalElements for Itokawa {
14054    fn rotational_elements(&self, t: f64) -> Elements {
14055        (
14056            RIGHT_ASCENSION_ITOKAWA.angle(t),
14057            DECLINATION_ITOKAWA.angle(t),
14058            ROTATION_ITOKAWA.angle(t),
14059        )
14060    }
14061    fn rotational_element_rates(&self, t: f64) -> Elements {
14062        (
14063            RIGHT_ASCENSION_ITOKAWA.angle_dot(t),
14064            DECLINATION_ITOKAWA.angle_dot(t),
14065            ROTATION_ITOKAWA.angle_dot(t),
14066        )
14067    }
14068}
14069#[doc = "Bennu (NAIF ID: 2101955)."]
14070#[derive(Debug, Copy, Clone, Eq, PartialEq)]
14071#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14072pub struct Bennu;
14073impl Origin for Bennu {
14074    fn id(&self) -> NaifId {
14075        NaifId(2101955i32)
14076    }
14077    fn name(&self) -> &'static str {
14078        "Bennu"
14079    }
14080}
14081impl Display for Bennu {
14082    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
14083        write!(f, "{}", self.name())
14084    }
14085}
14086impl From<Bennu> for DynOrigin {
14087    fn from(_: Bennu) -> Self {
14088        DynOrigin::Bennu
14089    }
14090}
14091impl TryPointMass for DynOrigin {
14092    fn try_gravitational_parameter(
14093        &self,
14094    ) -> Result<GravitationalParameter, UndefinedOriginPropertyError> {
14095        match self {
14096            DynOrigin::Sun => Ok(GravitationalParameter::km3_per_s2(132712440041.27942f64)),
14097            DynOrigin::Mercury => Ok(GravitationalParameter::km3_per_s2(22031.868551400003f64)),
14098            DynOrigin::Venus => Ok(GravitationalParameter::km3_per_s2(324858.592f64)),
14099            DynOrigin::Earth => Ok(GravitationalParameter::km3_per_s2(398600.43550702266f64)),
14100            DynOrigin::Mars => Ok(GravitationalParameter::km3_per_s2(42828.37362069909f64)),
14101            DynOrigin::Jupiter => Ok(GravitationalParameter::km3_per_s2(126686531.9003704f64)),
14102            DynOrigin::Saturn => Ok(GravitationalParameter::km3_per_s2(37931206.23436167f64)),
14103            DynOrigin::Uranus => Ok(GravitationalParameter::km3_per_s2(5793951.256527211f64)),
14104            DynOrigin::Neptune => Ok(GravitationalParameter::km3_per_s2(6835103.145462294f64)),
14105            DynOrigin::Pluto => Ok(GravitationalParameter::km3_per_s2(869.6138177608748f64)),
14106            DynOrigin::SolarSystemBarycenter => {
14107                Ok(GravitationalParameter::km3_per_s2(132712440041.27942f64))
14108            }
14109            DynOrigin::MercuryBarycenter => {
14110                Ok(GravitationalParameter::km3_per_s2(22031.868551400003f64))
14111            }
14112            DynOrigin::VenusBarycenter => Ok(GravitationalParameter::km3_per_s2(324858.592f64)),
14113            DynOrigin::EarthBarycenter => {
14114                Ok(GravitationalParameter::km3_per_s2(403503.2356254802f64))
14115            }
14116            DynOrigin::MarsBarycenter => {
14117                Ok(GravitationalParameter::km3_per_s2(42828.3758157561f64))
14118            }
14119            DynOrigin::JupiterBarycenter => {
14120                Ok(GravitationalParameter::km3_per_s2(126712764.09999998f64))
14121            }
14122            DynOrigin::SaturnBarycenter => Ok(GravitationalParameter::km3_per_s2(37940584.8418f64)),
14123            DynOrigin::UranusBarycenter => {
14124                Ok(GravitationalParameter::km3_per_s2(5794556.3999999985f64))
14125            }
14126            DynOrigin::NeptuneBarycenter => {
14127                Ok(GravitationalParameter::km3_per_s2(6836527.100580399f64))
14128            }
14129            DynOrigin::PlutoBarycenter => Ok(GravitationalParameter::km3_per_s2(975.5f64)),
14130            DynOrigin::Moon => Ok(GravitationalParameter::km3_per_s2(4902.80011845755f64)),
14131            DynOrigin::Phobos => Ok(GravitationalParameter::km3_per_s2(0.0007087546066894452f64)),
14132            DynOrigin::Deimos => Ok(GravitationalParameter::km3_per_s2(
14133                0.00009615569648120313f64,
14134            )),
14135            DynOrigin::Io => Ok(GravitationalParameter::km3_per_s2(5959.915466180539f64)),
14136            DynOrigin::Europa => Ok(GravitationalParameter::km3_per_s2(3202.712099607295f64)),
14137            DynOrigin::Ganymede => Ok(GravitationalParameter::km3_per_s2(9887.832752719638f64)),
14138            DynOrigin::Callisto => Ok(GravitationalParameter::km3_per_s2(7179.283402579837f64)),
14139            DynOrigin::Amalthea => Ok(GravitationalParameter::km3_per_s2(0.1645634534798259f64)),
14140            DynOrigin::Himalia => Ok(GravitationalParameter::km3_per_s2(0.1515524299611265f64)),
14141            DynOrigin::Thebe => Ok(GravitationalParameter::km3_per_s2(0.030148f64)),
14142            DynOrigin::Adrastea => Ok(GravitationalParameter::km3_per_s2(0.000139f64)),
14143            DynOrigin::Metis => Ok(GravitationalParameter::km3_per_s2(0.002501f64)),
14144            DynOrigin::Mimas => Ok(GravitationalParameter::km3_per_s2(2.503488768152587f64)),
14145            DynOrigin::Enceladus => Ok(GravitationalParameter::km3_per_s2(7.210366688598896f64)),
14146            DynOrigin::Tethys => Ok(GravitationalParameter::km3_per_s2(41.21352885489587f64)),
14147            DynOrigin::Dione => Ok(GravitationalParameter::km3_per_s2(73.11607172482067f64)),
14148            DynOrigin::Rhea => Ok(GravitationalParameter::km3_per_s2(153.9417519146563f64)),
14149            DynOrigin::Titan => Ok(GravitationalParameter::km3_per_s2(8978.137095521046f64)),
14150            DynOrigin::Hyperion => Ok(GravitationalParameter::km3_per_s2(0.3704913747932265f64)),
14151            DynOrigin::Iapetus => Ok(GravitationalParameter::km3_per_s2(120.5151060137642f64)),
14152            DynOrigin::Phoebe => Ok(GravitationalParameter::km3_per_s2(0.5547860052791678f64)),
14153            DynOrigin::Janus => Ok(GravitationalParameter::km3_per_s2(0.1265765099012197f64)),
14154            DynOrigin::Epimetheus => Ok(GravitationalParameter::km3_per_s2(0.03512333288208074f64)),
14155            DynOrigin::Helene => Ok(GravitationalParameter::km3_per_s2(0.0004757419551776972f64)),
14156            DynOrigin::Atlas => Ok(GravitationalParameter::km3_per_s2(0.0003718871247516475f64)),
14157            DynOrigin::Prometheus => Ok(GravitationalParameter::km3_per_s2(0.0107520800100761f64)),
14158            DynOrigin::Pandora => Ok(GravitationalParameter::km3_per_s2(0.009290325122028795f64)),
14159            DynOrigin::Ariel => Ok(GravitationalParameter::km3_per_s2(83.46344431770477f64)),
14160            DynOrigin::Umbriel => Ok(GravitationalParameter::km3_per_s2(85.09338094489388f64)),
14161            DynOrigin::Titania => Ok(GravitationalParameter::km3_per_s2(226.9437003741248f64)),
14162            DynOrigin::Oberon => Ok(GravitationalParameter::km3_per_s2(205.3234302535623f64)),
14163            DynOrigin::Miranda => Ok(GravitationalParameter::km3_per_s2(4.3195168992321f64)),
14164            DynOrigin::Triton => Ok(GravitationalParameter::km3_per_s2(1428.495462910464f64)),
14165            DynOrigin::Naiad => Ok(GravitationalParameter::km3_per_s2(0.008530281246540886f64)),
14166            DynOrigin::Thalassa => Ok(GravitationalParameter::km3_per_s2(0.0235887319799217f64)),
14167            DynOrigin::Despina => Ok(GravitationalParameter::km3_per_s2(0.1167318403814998f64)),
14168            DynOrigin::Galatea => Ok(GravitationalParameter::km3_per_s2(0.189898503906069f64)),
14169            DynOrigin::Larissa => Ok(GravitationalParameter::km3_per_s2(0.2548437405693583f64)),
14170            DynOrigin::Proteus => Ok(GravitationalParameter::km3_per_s2(2.583422379120727f64)),
14171            DynOrigin::Charon => Ok(GravitationalParameter::km3_per_s2(105.8799888601881f64)),
14172            DynOrigin::Nix => Ok(GravitationalParameter::km3_per_s2(0.00304817564816976f64)),
14173            DynOrigin::Hydra => Ok(GravitationalParameter::km3_per_s2(0.003211039206155255f64)),
14174            DynOrigin::Kerberos => Ok(GravitationalParameter::km3_per_s2(0.001110040850536676f64)),
14175            DynOrigin::Styx => Ok(GravitationalParameter::km3_per_s2(0f64)),
14176            DynOrigin::Ceres => Ok(GravitationalParameter::km3_per_s2(62.62888864440993f64)),
14177            DynOrigin::Pallas => Ok(GravitationalParameter::km3_per_s2(13.665878145967422f64)),
14178            DynOrigin::Vesta => Ok(GravitationalParameter::km3_per_s2(17.288232879171513f64)),
14179            DynOrigin::Psyche => Ok(GravitationalParameter::km3_per_s2(1.5896582441709424f64)),
14180            DynOrigin::Eros => Ok(GravitationalParameter::km3_per_s2(0.0004463f64)),
14181            DynOrigin::Davida => Ok(GravitationalParameter::km3_per_s2(3.8944831481705644f64)),
14182            _ => Err(UndefinedOriginPropertyError {
14183                origin: self.to_string(),
14184                prop: "gravitational parameter".to_string(),
14185            }),
14186        }
14187    }
14188}
14189impl TryMeanRadius for DynOrigin {
14190    fn try_mean_radius(&self) -> Result<Distance, UndefinedOriginPropertyError> {
14191        match self {
14192            DynOrigin::Mercury => Ok(Distance::kilometers(2439.4f64)),
14193            DynOrigin::Venus => Ok(Distance::kilometers(6051.8f64)),
14194            DynOrigin::Earth => Ok(Distance::kilometers(6371.0084f64)),
14195            DynOrigin::Mars => Ok(Distance::kilometers(3389.5f64)),
14196            DynOrigin::Jupiter => Ok(Distance::kilometers(69911f64)),
14197            DynOrigin::Saturn => Ok(Distance::kilometers(58232f64)),
14198            DynOrigin::Uranus => Ok(Distance::kilometers(25362f64)),
14199            DynOrigin::Neptune => Ok(Distance::kilometers(24622f64)),
14200            DynOrigin::Pluto => Ok(Distance::kilometers(1188.3f64)),
14201            DynOrigin::Moon => Ok(Distance::kilometers(1737.4f64)),
14202            DynOrigin::Phobos => Ok(Distance::kilometers(11.08f64)),
14203            DynOrigin::Deimos => Ok(Distance::kilometers(6.2f64)),
14204            DynOrigin::Io => Ok(Distance::kilometers(1821.49f64)),
14205            DynOrigin::Europa => Ok(Distance::kilometers(1560.8f64)),
14206            DynOrigin::Ganymede => Ok(Distance::kilometers(2631.2f64)),
14207            DynOrigin::Callisto => Ok(Distance::kilometers(2410.3f64)),
14208            DynOrigin::Amalthea => Ok(Distance::kilometers(83.5f64)),
14209            DynOrigin::Himalia => Ok(Distance::kilometers(85f64)),
14210            DynOrigin::Elara => Ok(Distance::kilometers(40f64)),
14211            DynOrigin::Pasiphae => Ok(Distance::kilometers(18f64)),
14212            DynOrigin::Sinope => Ok(Distance::kilometers(14f64)),
14213            DynOrigin::Lysithea => Ok(Distance::kilometers(12f64)),
14214            DynOrigin::Carme => Ok(Distance::kilometers(15f64)),
14215            DynOrigin::Ananke => Ok(Distance::kilometers(10f64)),
14216            DynOrigin::Leda => Ok(Distance::kilometers(5f64)),
14217            DynOrigin::Thebe => Ok(Distance::kilometers(49.3f64)),
14218            DynOrigin::Adrastea => Ok(Distance::kilometers(8.2f64)),
14219            DynOrigin::Metis => Ok(Distance::kilometers(21.5f64)),
14220            DynOrigin::Mimas => Ok(Distance::kilometers(198.2f64)),
14221            DynOrigin::Enceladus => Ok(Distance::kilometers(252.1f64)),
14222            DynOrigin::Tethys => Ok(Distance::kilometers(531f64)),
14223            DynOrigin::Dione => Ok(Distance::kilometers(561.4f64)),
14224            DynOrigin::Rhea => Ok(Distance::kilometers(763.5f64)),
14225            DynOrigin::Titan => Ok(Distance::kilometers(2575f64)),
14226            DynOrigin::Hyperion => Ok(Distance::kilometers(135f64)),
14227            DynOrigin::Iapetus => Ok(Distance::kilometers(734.3f64)),
14228            DynOrigin::Phoebe => Ok(Distance::kilometers(106.5f64)),
14229            DynOrigin::Janus => Ok(Distance::kilometers(89.2f64)),
14230            DynOrigin::Epimetheus => Ok(Distance::kilometers(58.2f64)),
14231            DynOrigin::Helene => Ok(Distance::kilometers(18f64)),
14232            DynOrigin::Telesto => Ok(Distance::kilometers(12.4f64)),
14233            DynOrigin::Calypso => Ok(Distance::kilometers(9.6f64)),
14234            DynOrigin::Atlas => Ok(Distance::kilometers(15.1f64)),
14235            DynOrigin::Prometheus => Ok(Distance::kilometers(43.1f64)),
14236            DynOrigin::Pandora => Ok(Distance::kilometers(40.6f64)),
14237            DynOrigin::Pan => Ok(Distance::kilometers(14f64)),
14238            DynOrigin::Methone => Ok(Distance::kilometers(1.45f64)),
14239            DynOrigin::Pallene => Ok(Distance::kilometers(2.23f64)),
14240            DynOrigin::Polydeuces => Ok(Distance::kilometers(1.3f64)),
14241            DynOrigin::Daphnis => Ok(Distance::kilometers(3.8f64)),
14242            DynOrigin::Anthe => Ok(Distance::kilometers(0.5f64)),
14243            DynOrigin::Aegaeon => Ok(Distance::kilometers(0.33f64)),
14244            DynOrigin::Ariel => Ok(Distance::kilometers(578.9f64)),
14245            DynOrigin::Umbriel => Ok(Distance::kilometers(584.7f64)),
14246            DynOrigin::Titania => Ok(Distance::kilometers(788.9f64)),
14247            DynOrigin::Oberon => Ok(Distance::kilometers(761.4f64)),
14248            DynOrigin::Miranda => Ok(Distance::kilometers(235.8f64)),
14249            DynOrigin::Cordelia => Ok(Distance::kilometers(13f64)),
14250            DynOrigin::Ophelia => Ok(Distance::kilometers(15f64)),
14251            DynOrigin::Bianca => Ok(Distance::kilometers(21f64)),
14252            DynOrigin::Cressida => Ok(Distance::kilometers(31f64)),
14253            DynOrigin::Desdemona => Ok(Distance::kilometers(27f64)),
14254            DynOrigin::Juliet => Ok(Distance::kilometers(42f64)),
14255            DynOrigin::Portia => Ok(Distance::kilometers(54f64)),
14256            DynOrigin::Rosalind => Ok(Distance::kilometers(27f64)),
14257            DynOrigin::Belinda => Ok(Distance::kilometers(33f64)),
14258            DynOrigin::Puck => Ok(Distance::kilometers(77f64)),
14259            DynOrigin::Triton => Ok(Distance::kilometers(1352.6f64)),
14260            DynOrigin::Nereid => Ok(Distance::kilometers(170f64)),
14261            DynOrigin::Naiad => Ok(Distance::kilometers(29f64)),
14262            DynOrigin::Thalassa => Ok(Distance::kilometers(40f64)),
14263            DynOrigin::Despina => Ok(Distance::kilometers(74f64)),
14264            DynOrigin::Galatea => Ok(Distance::kilometers(79f64)),
14265            DynOrigin::Larissa => Ok(Distance::kilometers(96f64)),
14266            DynOrigin::Proteus => Ok(Distance::kilometers(208f64)),
14267            DynOrigin::Charon => Ok(Distance::kilometers(606f64)),
14268            DynOrigin::Gaspra => Ok(Distance::kilometers(6.1f64)),
14269            DynOrigin::Ida => Ok(Distance::kilometers(15.65f64)),
14270            DynOrigin::Ceres => Ok(Distance::kilometers(470f64)),
14271            DynOrigin::Psyche => Ok(Distance::kilometers(113f64)),
14272            DynOrigin::Lutetia => Ok(Distance::kilometers(52.5f64)),
14273            DynOrigin::Eros => Ok(Distance::kilometers(8.45f64)),
14274            DynOrigin::Davida => Ok(Distance::kilometers(150f64)),
14275            DynOrigin::Mathilde => Ok(Distance::kilometers(26.5f64)),
14276            DynOrigin::Steins => Ok(Distance::kilometers(2.7f64)),
14277            _ => Err(UndefinedOriginPropertyError {
14278                origin: self.to_string(),
14279                prop: "mean radius".to_string(),
14280            }),
14281        }
14282    }
14283}
14284impl TryTriaxialEllipsoid for DynOrigin {
14285    fn try_radii(&self) -> Result<Radii, UndefinedOriginPropertyError> {
14286        match self {
14287            DynOrigin::Sun => Ok((
14288                Distance::kilometers(695700f64),
14289                Distance::kilometers(695700f64),
14290                Distance::kilometers(695700f64),
14291            )),
14292            DynOrigin::Mercury => Ok((
14293                Distance::kilometers(2440.53f64),
14294                Distance::kilometers(2440.53f64),
14295                Distance::kilometers(2438.26f64),
14296            )),
14297            DynOrigin::Venus => Ok((
14298                Distance::kilometers(6051.8f64),
14299                Distance::kilometers(6051.8f64),
14300                Distance::kilometers(6051.8f64),
14301            )),
14302            DynOrigin::Earth => Ok((
14303                Distance::kilometers(6378.1366f64),
14304                Distance::kilometers(6378.1366f64),
14305                Distance::kilometers(6356.7519f64),
14306            )),
14307            DynOrigin::Mars => Ok((
14308                Distance::kilometers(3396.19f64),
14309                Distance::kilometers(3396.19f64),
14310                Distance::kilometers(3376.2f64),
14311            )),
14312            DynOrigin::Jupiter => Ok((
14313                Distance::kilometers(71492f64),
14314                Distance::kilometers(71492f64),
14315                Distance::kilometers(66854f64),
14316            )),
14317            DynOrigin::Saturn => Ok((
14318                Distance::kilometers(60268f64),
14319                Distance::kilometers(60268f64),
14320                Distance::kilometers(54364f64),
14321            )),
14322            DynOrigin::Uranus => Ok((
14323                Distance::kilometers(25559f64),
14324                Distance::kilometers(25559f64),
14325                Distance::kilometers(24973f64),
14326            )),
14327            DynOrigin::Neptune => Ok((
14328                Distance::kilometers(24764f64),
14329                Distance::kilometers(24764f64),
14330                Distance::kilometers(24341f64),
14331            )),
14332            DynOrigin::Pluto => Ok((
14333                Distance::kilometers(1188.3f64),
14334                Distance::kilometers(1188.3f64),
14335                Distance::kilometers(1188.3f64),
14336            )),
14337            DynOrigin::Moon => Ok((
14338                Distance::kilometers(1737.4f64),
14339                Distance::kilometers(1737.4f64),
14340                Distance::kilometers(1737.4f64),
14341            )),
14342            DynOrigin::Phobos => Ok((
14343                Distance::kilometers(13f64),
14344                Distance::kilometers(11.4f64),
14345                Distance::kilometers(9.1f64),
14346            )),
14347            DynOrigin::Deimos => Ok((
14348                Distance::kilometers(7.8f64),
14349                Distance::kilometers(6f64),
14350                Distance::kilometers(5.1f64),
14351            )),
14352            DynOrigin::Io => Ok((
14353                Distance::kilometers(1829.4f64),
14354                Distance::kilometers(1819.4f64),
14355                Distance::kilometers(1815.7f64),
14356            )),
14357            DynOrigin::Europa => Ok((
14358                Distance::kilometers(1562.6f64),
14359                Distance::kilometers(1560.3f64),
14360                Distance::kilometers(1559.5f64),
14361            )),
14362            DynOrigin::Ganymede => Ok((
14363                Distance::kilometers(2631.2f64),
14364                Distance::kilometers(2631.2f64),
14365                Distance::kilometers(2631.2f64),
14366            )),
14367            DynOrigin::Callisto => Ok((
14368                Distance::kilometers(2410.3f64),
14369                Distance::kilometers(2410.3f64),
14370                Distance::kilometers(2410.3f64),
14371            )),
14372            DynOrigin::Amalthea => Ok((
14373                Distance::kilometers(125f64),
14374                Distance::kilometers(73f64),
14375                Distance::kilometers(64f64),
14376            )),
14377            DynOrigin::Himalia => Ok((
14378                Distance::kilometers(85f64),
14379                Distance::kilometers(85f64),
14380                Distance::kilometers(85f64),
14381            )),
14382            DynOrigin::Elara => Ok((
14383                Distance::kilometers(40f64),
14384                Distance::kilometers(40f64),
14385                Distance::kilometers(40f64),
14386            )),
14387            DynOrigin::Pasiphae => Ok((
14388                Distance::kilometers(18f64),
14389                Distance::kilometers(18f64),
14390                Distance::kilometers(18f64),
14391            )),
14392            DynOrigin::Sinope => Ok((
14393                Distance::kilometers(14f64),
14394                Distance::kilometers(14f64),
14395                Distance::kilometers(14f64),
14396            )),
14397            DynOrigin::Lysithea => Ok((
14398                Distance::kilometers(12f64),
14399                Distance::kilometers(12f64),
14400                Distance::kilometers(12f64),
14401            )),
14402            DynOrigin::Carme => Ok((
14403                Distance::kilometers(15f64),
14404                Distance::kilometers(15f64),
14405                Distance::kilometers(15f64),
14406            )),
14407            DynOrigin::Ananke => Ok((
14408                Distance::kilometers(10f64),
14409                Distance::kilometers(10f64),
14410                Distance::kilometers(10f64),
14411            )),
14412            DynOrigin::Leda => Ok((
14413                Distance::kilometers(5f64),
14414                Distance::kilometers(5f64),
14415                Distance::kilometers(5f64),
14416            )),
14417            DynOrigin::Thebe => Ok((
14418                Distance::kilometers(58f64),
14419                Distance::kilometers(49f64),
14420                Distance::kilometers(42f64),
14421            )),
14422            DynOrigin::Adrastea => Ok((
14423                Distance::kilometers(10f64),
14424                Distance::kilometers(8f64),
14425                Distance::kilometers(7f64),
14426            )),
14427            DynOrigin::Metis => Ok((
14428                Distance::kilometers(30f64),
14429                Distance::kilometers(20f64),
14430                Distance::kilometers(17f64),
14431            )),
14432            DynOrigin::Mimas => Ok((
14433                Distance::kilometers(207.8f64),
14434                Distance::kilometers(196.7f64),
14435                Distance::kilometers(190.6f64),
14436            )),
14437            DynOrigin::Enceladus => Ok((
14438                Distance::kilometers(256.6f64),
14439                Distance::kilometers(251.4f64),
14440                Distance::kilometers(248.3f64),
14441            )),
14442            DynOrigin::Tethys => Ok((
14443                Distance::kilometers(538.4f64),
14444                Distance::kilometers(528.3f64),
14445                Distance::kilometers(526.3f64),
14446            )),
14447            DynOrigin::Dione => Ok((
14448                Distance::kilometers(563.4f64),
14449                Distance::kilometers(561.3f64),
14450                Distance::kilometers(559.6f64),
14451            )),
14452            DynOrigin::Rhea => Ok((
14453                Distance::kilometers(765f64),
14454                Distance::kilometers(763.1f64),
14455                Distance::kilometers(762.4f64),
14456            )),
14457            DynOrigin::Titan => Ok((
14458                Distance::kilometers(2575.15f64),
14459                Distance::kilometers(2574.78f64),
14460                Distance::kilometers(2574.47f64),
14461            )),
14462            DynOrigin::Hyperion => Ok((
14463                Distance::kilometers(180.1f64),
14464                Distance::kilometers(133f64),
14465                Distance::kilometers(102.7f64),
14466            )),
14467            DynOrigin::Iapetus => Ok((
14468                Distance::kilometers(745.7f64),
14469                Distance::kilometers(745.7f64),
14470                Distance::kilometers(712.1f64),
14471            )),
14472            DynOrigin::Phoebe => Ok((
14473                Distance::kilometers(109.4f64),
14474                Distance::kilometers(108.5f64),
14475                Distance::kilometers(101.8f64),
14476            )),
14477            DynOrigin::Janus => Ok((
14478                Distance::kilometers(101.7f64),
14479                Distance::kilometers(93f64),
14480                Distance::kilometers(76.3f64),
14481            )),
14482            DynOrigin::Epimetheus => Ok((
14483                Distance::kilometers(64.9f64),
14484                Distance::kilometers(57.3f64),
14485                Distance::kilometers(53f64),
14486            )),
14487            DynOrigin::Helene => Ok((
14488                Distance::kilometers(22.5f64),
14489                Distance::kilometers(19.6f64),
14490                Distance::kilometers(13.3f64),
14491            )),
14492            DynOrigin::Telesto => Ok((
14493                Distance::kilometers(16.3f64),
14494                Distance::kilometers(11.8f64),
14495                Distance::kilometers(9.8f64),
14496            )),
14497            DynOrigin::Calypso => Ok((
14498                Distance::kilometers(15.3f64),
14499                Distance::kilometers(9.3f64),
14500                Distance::kilometers(6.3f64),
14501            )),
14502            DynOrigin::Atlas => Ok((
14503                Distance::kilometers(20.5f64),
14504                Distance::kilometers(17.8f64),
14505                Distance::kilometers(9.4f64),
14506            )),
14507            DynOrigin::Prometheus => Ok((
14508                Distance::kilometers(68.2f64),
14509                Distance::kilometers(41.6f64),
14510                Distance::kilometers(28.2f64),
14511            )),
14512            DynOrigin::Pandora => Ok((
14513                Distance::kilometers(52.2f64),
14514                Distance::kilometers(40.8f64),
14515                Distance::kilometers(31.5f64),
14516            )),
14517            DynOrigin::Pan => Ok((
14518                Distance::kilometers(17.2f64),
14519                Distance::kilometers(15.4f64),
14520                Distance::kilometers(10.4f64),
14521            )),
14522            DynOrigin::Methone => Ok((
14523                Distance::kilometers(1.94f64),
14524                Distance::kilometers(1.29f64),
14525                Distance::kilometers(1.21f64),
14526            )),
14527            DynOrigin::Pallene => Ok((
14528                Distance::kilometers(2.88f64),
14529                Distance::kilometers(2.08f64),
14530                Distance::kilometers(1.8f64),
14531            )),
14532            DynOrigin::Polydeuces => Ok((
14533                Distance::kilometers(1.5f64),
14534                Distance::kilometers(1.2f64),
14535                Distance::kilometers(1f64),
14536            )),
14537            DynOrigin::Daphnis => Ok((
14538                Distance::kilometers(4.6f64),
14539                Distance::kilometers(4.5f64),
14540                Distance::kilometers(2.8f64),
14541            )),
14542            DynOrigin::Anthe => Ok((
14543                Distance::kilometers(0.5f64),
14544                Distance::kilometers(0.5f64),
14545                Distance::kilometers(0.5f64),
14546            )),
14547            DynOrigin::Aegaeon => Ok((
14548                Distance::kilometers(0.7f64),
14549                Distance::kilometers(0.25f64),
14550                Distance::kilometers(0.2f64),
14551            )),
14552            DynOrigin::Ariel => Ok((
14553                Distance::kilometers(581.1f64),
14554                Distance::kilometers(577.9f64),
14555                Distance::kilometers(577.7f64),
14556            )),
14557            DynOrigin::Umbriel => Ok((
14558                Distance::kilometers(584.7f64),
14559                Distance::kilometers(584.7f64),
14560                Distance::kilometers(584.7f64),
14561            )),
14562            DynOrigin::Titania => Ok((
14563                Distance::kilometers(788.9f64),
14564                Distance::kilometers(788.9f64),
14565                Distance::kilometers(788.9f64),
14566            )),
14567            DynOrigin::Oberon => Ok((
14568                Distance::kilometers(761.4f64),
14569                Distance::kilometers(761.4f64),
14570                Distance::kilometers(761.4f64),
14571            )),
14572            DynOrigin::Miranda => Ok((
14573                Distance::kilometers(240.4f64),
14574                Distance::kilometers(234.2f64),
14575                Distance::kilometers(232.9f64),
14576            )),
14577            DynOrigin::Cordelia => Ok((
14578                Distance::kilometers(13f64),
14579                Distance::kilometers(13f64),
14580                Distance::kilometers(13f64),
14581            )),
14582            DynOrigin::Ophelia => Ok((
14583                Distance::kilometers(15f64),
14584                Distance::kilometers(15f64),
14585                Distance::kilometers(15f64),
14586            )),
14587            DynOrigin::Bianca => Ok((
14588                Distance::kilometers(21f64),
14589                Distance::kilometers(21f64),
14590                Distance::kilometers(21f64),
14591            )),
14592            DynOrigin::Cressida => Ok((
14593                Distance::kilometers(31f64),
14594                Distance::kilometers(31f64),
14595                Distance::kilometers(31f64),
14596            )),
14597            DynOrigin::Desdemona => Ok((
14598                Distance::kilometers(27f64),
14599                Distance::kilometers(27f64),
14600                Distance::kilometers(27f64),
14601            )),
14602            DynOrigin::Juliet => Ok((
14603                Distance::kilometers(42f64),
14604                Distance::kilometers(42f64),
14605                Distance::kilometers(42f64),
14606            )),
14607            DynOrigin::Portia => Ok((
14608                Distance::kilometers(54f64),
14609                Distance::kilometers(54f64),
14610                Distance::kilometers(54f64),
14611            )),
14612            DynOrigin::Rosalind => Ok((
14613                Distance::kilometers(27f64),
14614                Distance::kilometers(27f64),
14615                Distance::kilometers(27f64),
14616            )),
14617            DynOrigin::Belinda => Ok((
14618                Distance::kilometers(33f64),
14619                Distance::kilometers(33f64),
14620                Distance::kilometers(33f64),
14621            )),
14622            DynOrigin::Puck => Ok((
14623                Distance::kilometers(77f64),
14624                Distance::kilometers(77f64),
14625                Distance::kilometers(77f64),
14626            )),
14627            DynOrigin::Triton => Ok((
14628                Distance::kilometers(1352.6f64),
14629                Distance::kilometers(1352.6f64),
14630                Distance::kilometers(1352.6f64),
14631            )),
14632            DynOrigin::Nereid => Ok((
14633                Distance::kilometers(170f64),
14634                Distance::kilometers(170f64),
14635                Distance::kilometers(170f64),
14636            )),
14637            DynOrigin::Naiad => Ok((
14638                Distance::kilometers(29f64),
14639                Distance::kilometers(29f64),
14640                Distance::kilometers(29f64),
14641            )),
14642            DynOrigin::Thalassa => Ok((
14643                Distance::kilometers(40f64),
14644                Distance::kilometers(40f64),
14645                Distance::kilometers(40f64),
14646            )),
14647            DynOrigin::Despina => Ok((
14648                Distance::kilometers(74f64),
14649                Distance::kilometers(74f64),
14650                Distance::kilometers(74f64),
14651            )),
14652            DynOrigin::Galatea => Ok((
14653                Distance::kilometers(79f64),
14654                Distance::kilometers(79f64),
14655                Distance::kilometers(79f64),
14656            )),
14657            DynOrigin::Larissa => Ok((
14658                Distance::kilometers(96f64),
14659                Distance::kilometers(96f64),
14660                Distance::kilometers(96f64),
14661            )),
14662            DynOrigin::Proteus => Ok((
14663                Distance::kilometers(218f64),
14664                Distance::kilometers(208f64),
14665                Distance::kilometers(201f64),
14666            )),
14667            DynOrigin::Charon => Ok((
14668                Distance::kilometers(606f64),
14669                Distance::kilometers(606f64),
14670                Distance::kilometers(606f64),
14671            )),
14672            DynOrigin::Gaspra => Ok((
14673                Distance::kilometers(9.1f64),
14674                Distance::kilometers(5.2f64),
14675                Distance::kilometers(4.4f64),
14676            )),
14677            DynOrigin::Ida => Ok((
14678                Distance::kilometers(26.8f64),
14679                Distance::kilometers(12f64),
14680                Distance::kilometers(7.6f64),
14681            )),
14682            DynOrigin::Ceres => Ok((
14683                Distance::kilometers(487.3f64),
14684                Distance::kilometers(487.3f64),
14685                Distance::kilometers(446f64),
14686            )),
14687            DynOrigin::Vesta => Ok((
14688                Distance::kilometers(289f64),
14689                Distance::kilometers(280f64),
14690                Distance::kilometers(229f64),
14691            )),
14692            DynOrigin::Psyche => Ok((
14693                Distance::kilometers(139.5f64),
14694                Distance::kilometers(116f64),
14695                Distance::kilometers(94.5f64),
14696            )),
14697            DynOrigin::Lutetia => Ok((
14698                Distance::kilometers(62f64),
14699                Distance::kilometers(50.5f64),
14700                Distance::kilometers(46.5f64),
14701            )),
14702            DynOrigin::Eros => Ok((
14703                Distance::kilometers(17f64),
14704                Distance::kilometers(5.5f64),
14705                Distance::kilometers(5.5f64),
14706            )),
14707            DynOrigin::Davida => Ok((
14708                Distance::kilometers(180f64),
14709                Distance::kilometers(147f64),
14710                Distance::kilometers(127f64),
14711            )),
14712            DynOrigin::Mathilde => Ok((
14713                Distance::kilometers(33f64),
14714                Distance::kilometers(24f64),
14715                Distance::kilometers(23f64),
14716            )),
14717            DynOrigin::Steins => Ok((
14718                Distance::kilometers(3.24f64),
14719                Distance::kilometers(2.73f64),
14720                Distance::kilometers(2.04f64),
14721            )),
14722            DynOrigin::Toutatis => Ok((
14723                Distance::kilometers(2.13f64),
14724                Distance::kilometers(1.015f64),
14725                Distance::kilometers(0.85f64),
14726            )),
14727            DynOrigin::Itokawa => Ok((
14728                Distance::kilometers(0.268f64),
14729                Distance::kilometers(0.147f64),
14730                Distance::kilometers(0.104f64),
14731            )),
14732            _ => Err(UndefinedOriginPropertyError {
14733                origin: self.to_string(),
14734                prop: "radii".to_string(),
14735            }),
14736        }
14737    }
14738}
14739impl TrySpheroid for DynOrigin {
14740    fn try_polar_radius(&self) -> Result<Distance, UndefinedOriginPropertyError> {
14741        match self {
14742            DynOrigin::Sun => Ok(Distance::kilometers(695700f64)),
14743            DynOrigin::Mercury => Ok(Distance::kilometers(2438.26f64)),
14744            DynOrigin::Venus => Ok(Distance::kilometers(6051.8f64)),
14745            DynOrigin::Earth => Ok(Distance::kilometers(6356.7519f64)),
14746            DynOrigin::Mars => Ok(Distance::kilometers(3376.2f64)),
14747            DynOrigin::Jupiter => Ok(Distance::kilometers(66854f64)),
14748            DynOrigin::Saturn => Ok(Distance::kilometers(54364f64)),
14749            DynOrigin::Uranus => Ok(Distance::kilometers(24973f64)),
14750            DynOrigin::Neptune => Ok(Distance::kilometers(24341f64)),
14751            DynOrigin::Pluto => Ok(Distance::kilometers(1188.3f64)),
14752            DynOrigin::Moon => Ok(Distance::kilometers(1737.4f64)),
14753            DynOrigin::Ganymede => Ok(Distance::kilometers(2631.2f64)),
14754            DynOrigin::Callisto => Ok(Distance::kilometers(2410.3f64)),
14755            DynOrigin::Himalia => Ok(Distance::kilometers(85f64)),
14756            DynOrigin::Elara => Ok(Distance::kilometers(40f64)),
14757            DynOrigin::Pasiphae => Ok(Distance::kilometers(18f64)),
14758            DynOrigin::Sinope => Ok(Distance::kilometers(14f64)),
14759            DynOrigin::Lysithea => Ok(Distance::kilometers(12f64)),
14760            DynOrigin::Carme => Ok(Distance::kilometers(15f64)),
14761            DynOrigin::Ananke => Ok(Distance::kilometers(10f64)),
14762            DynOrigin::Leda => Ok(Distance::kilometers(5f64)),
14763            DynOrigin::Iapetus => Ok(Distance::kilometers(712.1f64)),
14764            DynOrigin::Anthe => Ok(Distance::kilometers(0.5f64)),
14765            DynOrigin::Umbriel => Ok(Distance::kilometers(584.7f64)),
14766            DynOrigin::Titania => Ok(Distance::kilometers(788.9f64)),
14767            DynOrigin::Oberon => Ok(Distance::kilometers(761.4f64)),
14768            DynOrigin::Cordelia => Ok(Distance::kilometers(13f64)),
14769            DynOrigin::Ophelia => Ok(Distance::kilometers(15f64)),
14770            DynOrigin::Bianca => Ok(Distance::kilometers(21f64)),
14771            DynOrigin::Cressida => Ok(Distance::kilometers(31f64)),
14772            DynOrigin::Desdemona => Ok(Distance::kilometers(27f64)),
14773            DynOrigin::Juliet => Ok(Distance::kilometers(42f64)),
14774            DynOrigin::Portia => Ok(Distance::kilometers(54f64)),
14775            DynOrigin::Rosalind => Ok(Distance::kilometers(27f64)),
14776            DynOrigin::Belinda => Ok(Distance::kilometers(33f64)),
14777            DynOrigin::Puck => Ok(Distance::kilometers(77f64)),
14778            DynOrigin::Triton => Ok(Distance::kilometers(1352.6f64)),
14779            DynOrigin::Nereid => Ok(Distance::kilometers(170f64)),
14780            DynOrigin::Naiad => Ok(Distance::kilometers(29f64)),
14781            DynOrigin::Thalassa => Ok(Distance::kilometers(40f64)),
14782            DynOrigin::Despina => Ok(Distance::kilometers(74f64)),
14783            DynOrigin::Galatea => Ok(Distance::kilometers(79f64)),
14784            DynOrigin::Larissa => Ok(Distance::kilometers(96f64)),
14785            DynOrigin::Charon => Ok(Distance::kilometers(606f64)),
14786            DynOrigin::Ceres => Ok(Distance::kilometers(446f64)),
14787            _ => Err(UndefinedOriginPropertyError {
14788                origin: self.to_string(),
14789                prop: "polar radius".to_string(),
14790            }),
14791        }
14792    }
14793    fn try_equatorial_radius(&self) -> Result<Distance, UndefinedOriginPropertyError> {
14794        match self {
14795            DynOrigin::Sun => Ok(Distance::kilometers(695700f64)),
14796            DynOrigin::Mercury => Ok(Distance::kilometers(2440.53f64)),
14797            DynOrigin::Venus => Ok(Distance::kilometers(6051.8f64)),
14798            DynOrigin::Earth => Ok(Distance::kilometers(6378.1366f64)),
14799            DynOrigin::Mars => Ok(Distance::kilometers(3396.19f64)),
14800            DynOrigin::Jupiter => Ok(Distance::kilometers(71492f64)),
14801            DynOrigin::Saturn => Ok(Distance::kilometers(60268f64)),
14802            DynOrigin::Uranus => Ok(Distance::kilometers(25559f64)),
14803            DynOrigin::Neptune => Ok(Distance::kilometers(24764f64)),
14804            DynOrigin::Pluto => Ok(Distance::kilometers(1188.3f64)),
14805            DynOrigin::Moon => Ok(Distance::kilometers(1737.4f64)),
14806            DynOrigin::Ganymede => Ok(Distance::kilometers(2631.2f64)),
14807            DynOrigin::Callisto => Ok(Distance::kilometers(2410.3f64)),
14808            DynOrigin::Himalia => Ok(Distance::kilometers(85f64)),
14809            DynOrigin::Elara => Ok(Distance::kilometers(40f64)),
14810            DynOrigin::Pasiphae => Ok(Distance::kilometers(18f64)),
14811            DynOrigin::Sinope => Ok(Distance::kilometers(14f64)),
14812            DynOrigin::Lysithea => Ok(Distance::kilometers(12f64)),
14813            DynOrigin::Carme => Ok(Distance::kilometers(15f64)),
14814            DynOrigin::Ananke => Ok(Distance::kilometers(10f64)),
14815            DynOrigin::Leda => Ok(Distance::kilometers(5f64)),
14816            DynOrigin::Iapetus => Ok(Distance::kilometers(745.7f64)),
14817            DynOrigin::Anthe => Ok(Distance::kilometers(0.5f64)),
14818            DynOrigin::Umbriel => Ok(Distance::kilometers(584.7f64)),
14819            DynOrigin::Titania => Ok(Distance::kilometers(788.9f64)),
14820            DynOrigin::Oberon => Ok(Distance::kilometers(761.4f64)),
14821            DynOrigin::Cordelia => Ok(Distance::kilometers(13f64)),
14822            DynOrigin::Ophelia => Ok(Distance::kilometers(15f64)),
14823            DynOrigin::Bianca => Ok(Distance::kilometers(21f64)),
14824            DynOrigin::Cressida => Ok(Distance::kilometers(31f64)),
14825            DynOrigin::Desdemona => Ok(Distance::kilometers(27f64)),
14826            DynOrigin::Juliet => Ok(Distance::kilometers(42f64)),
14827            DynOrigin::Portia => Ok(Distance::kilometers(54f64)),
14828            DynOrigin::Rosalind => Ok(Distance::kilometers(27f64)),
14829            DynOrigin::Belinda => Ok(Distance::kilometers(33f64)),
14830            DynOrigin::Puck => Ok(Distance::kilometers(77f64)),
14831            DynOrigin::Triton => Ok(Distance::kilometers(1352.6f64)),
14832            DynOrigin::Nereid => Ok(Distance::kilometers(170f64)),
14833            DynOrigin::Naiad => Ok(Distance::kilometers(29f64)),
14834            DynOrigin::Thalassa => Ok(Distance::kilometers(40f64)),
14835            DynOrigin::Despina => Ok(Distance::kilometers(74f64)),
14836            DynOrigin::Galatea => Ok(Distance::kilometers(79f64)),
14837            DynOrigin::Larissa => Ok(Distance::kilometers(96f64)),
14838            DynOrigin::Charon => Ok(Distance::kilometers(606f64)),
14839            DynOrigin::Ceres => Ok(Distance::kilometers(487.3f64)),
14840            _ => Err(UndefinedOriginPropertyError {
14841                origin: self.to_string(),
14842                prop: "equatorial radius".to_string(),
14843            }),
14844        }
14845    }
14846}
14847impl TryRotationalElements for DynOrigin {
14848    fn try_rotational_elements(&self, t: f64) -> Result<Elements, UndefinedOriginPropertyError> {
14849        match self {
14850            DynOrigin::Sun => Ok(Sun.rotational_elements(t)),
14851            DynOrigin::Mercury => Ok(Mercury.rotational_elements(t)),
14852            DynOrigin::Venus => Ok(Venus.rotational_elements(t)),
14853            DynOrigin::Earth => Ok(Earth.rotational_elements(t)),
14854            DynOrigin::Mars => Ok(Mars.rotational_elements(t)),
14855            DynOrigin::Jupiter => Ok(Jupiter.rotational_elements(t)),
14856            DynOrigin::Saturn => Ok(Saturn.rotational_elements(t)),
14857            DynOrigin::Uranus => Ok(Uranus.rotational_elements(t)),
14858            DynOrigin::Neptune => Ok(Neptune.rotational_elements(t)),
14859            DynOrigin::Pluto => Ok(Pluto.rotational_elements(t)),
14860            DynOrigin::Moon => Ok(Moon.rotational_elements(t)),
14861            DynOrigin::Phobos => Ok(Phobos.rotational_elements(t)),
14862            DynOrigin::Deimos => Ok(Deimos.rotational_elements(t)),
14863            DynOrigin::Io => Ok(Io.rotational_elements(t)),
14864            DynOrigin::Europa => Ok(Europa.rotational_elements(t)),
14865            DynOrigin::Ganymede => Ok(Ganymede.rotational_elements(t)),
14866            DynOrigin::Callisto => Ok(Callisto.rotational_elements(t)),
14867            DynOrigin::Amalthea => Ok(Amalthea.rotational_elements(t)),
14868            DynOrigin::Thebe => Ok(Thebe.rotational_elements(t)),
14869            DynOrigin::Adrastea => Ok(Adrastea.rotational_elements(t)),
14870            DynOrigin::Metis => Ok(Metis.rotational_elements(t)),
14871            DynOrigin::Mimas => Ok(Mimas.rotational_elements(t)),
14872            DynOrigin::Enceladus => Ok(Enceladus.rotational_elements(t)),
14873            DynOrigin::Tethys => Ok(Tethys.rotational_elements(t)),
14874            DynOrigin::Dione => Ok(Dione.rotational_elements(t)),
14875            DynOrigin::Rhea => Ok(Rhea.rotational_elements(t)),
14876            DynOrigin::Titan => Ok(Titan.rotational_elements(t)),
14877            DynOrigin::Iapetus => Ok(Iapetus.rotational_elements(t)),
14878            DynOrigin::Phoebe => Ok(Phoebe.rotational_elements(t)),
14879            DynOrigin::Janus => Ok(Janus.rotational_elements(t)),
14880            DynOrigin::Epimetheus => Ok(Epimetheus.rotational_elements(t)),
14881            DynOrigin::Helene => Ok(Helene.rotational_elements(t)),
14882            DynOrigin::Telesto => Ok(Telesto.rotational_elements(t)),
14883            DynOrigin::Calypso => Ok(Calypso.rotational_elements(t)),
14884            DynOrigin::Atlas => Ok(Atlas.rotational_elements(t)),
14885            DynOrigin::Prometheus => Ok(Prometheus.rotational_elements(t)),
14886            DynOrigin::Pandora => Ok(Pandora.rotational_elements(t)),
14887            DynOrigin::Pan => Ok(Pan.rotational_elements(t)),
14888            DynOrigin::Ariel => Ok(Ariel.rotational_elements(t)),
14889            DynOrigin::Umbriel => Ok(Umbriel.rotational_elements(t)),
14890            DynOrigin::Titania => Ok(Titania.rotational_elements(t)),
14891            DynOrigin::Oberon => Ok(Oberon.rotational_elements(t)),
14892            DynOrigin::Miranda => Ok(Miranda.rotational_elements(t)),
14893            DynOrigin::Cordelia => Ok(Cordelia.rotational_elements(t)),
14894            DynOrigin::Ophelia => Ok(Ophelia.rotational_elements(t)),
14895            DynOrigin::Bianca => Ok(Bianca.rotational_elements(t)),
14896            DynOrigin::Cressida => Ok(Cressida.rotational_elements(t)),
14897            DynOrigin::Desdemona => Ok(Desdemona.rotational_elements(t)),
14898            DynOrigin::Juliet => Ok(Juliet.rotational_elements(t)),
14899            DynOrigin::Portia => Ok(Portia.rotational_elements(t)),
14900            DynOrigin::Rosalind => Ok(Rosalind.rotational_elements(t)),
14901            DynOrigin::Belinda => Ok(Belinda.rotational_elements(t)),
14902            DynOrigin::Puck => Ok(Puck.rotational_elements(t)),
14903            DynOrigin::Triton => Ok(Triton.rotational_elements(t)),
14904            DynOrigin::Naiad => Ok(Naiad.rotational_elements(t)),
14905            DynOrigin::Thalassa => Ok(Thalassa.rotational_elements(t)),
14906            DynOrigin::Despina => Ok(Despina.rotational_elements(t)),
14907            DynOrigin::Galatea => Ok(Galatea.rotational_elements(t)),
14908            DynOrigin::Larissa => Ok(Larissa.rotational_elements(t)),
14909            DynOrigin::Proteus => Ok(Proteus.rotational_elements(t)),
14910            DynOrigin::Charon => Ok(Charon.rotational_elements(t)),
14911            DynOrigin::Gaspra => Ok(Gaspra.rotational_elements(t)),
14912            DynOrigin::Ida => Ok(Ida.rotational_elements(t)),
14913            DynOrigin::Ceres => Ok(Ceres.rotational_elements(t)),
14914            DynOrigin::Pallas => Ok(Pallas.rotational_elements(t)),
14915            DynOrigin::Vesta => Ok(Vesta.rotational_elements(t)),
14916            DynOrigin::Lutetia => Ok(Lutetia.rotational_elements(t)),
14917            DynOrigin::Eros => Ok(Eros.rotational_elements(t)),
14918            DynOrigin::Davida => Ok(Davida.rotational_elements(t)),
14919            DynOrigin::Steins => Ok(Steins.rotational_elements(t)),
14920            DynOrigin::Itokawa => Ok(Itokawa.rotational_elements(t)),
14921            _ => Err(UndefinedOriginPropertyError {
14922                origin: self.to_string(),
14923                prop: "rotational elements".to_string(),
14924            }),
14925        }
14926    }
14927    fn try_rotational_element_rates(
14928        &self,
14929        t: f64,
14930    ) -> Result<Elements, UndefinedOriginPropertyError> {
14931        match self {
14932            DynOrigin::Sun => Ok(Sun.rotational_element_rates(t)),
14933            DynOrigin::Mercury => Ok(Mercury.rotational_element_rates(t)),
14934            DynOrigin::Venus => Ok(Venus.rotational_element_rates(t)),
14935            DynOrigin::Earth => Ok(Earth.rotational_element_rates(t)),
14936            DynOrigin::Mars => Ok(Mars.rotational_element_rates(t)),
14937            DynOrigin::Jupiter => Ok(Jupiter.rotational_element_rates(t)),
14938            DynOrigin::Saturn => Ok(Saturn.rotational_element_rates(t)),
14939            DynOrigin::Uranus => Ok(Uranus.rotational_element_rates(t)),
14940            DynOrigin::Neptune => Ok(Neptune.rotational_element_rates(t)),
14941            DynOrigin::Pluto => Ok(Pluto.rotational_element_rates(t)),
14942            DynOrigin::Moon => Ok(Moon.rotational_element_rates(t)),
14943            DynOrigin::Phobos => Ok(Phobos.rotational_element_rates(t)),
14944            DynOrigin::Deimos => Ok(Deimos.rotational_element_rates(t)),
14945            DynOrigin::Io => Ok(Io.rotational_element_rates(t)),
14946            DynOrigin::Europa => Ok(Europa.rotational_element_rates(t)),
14947            DynOrigin::Ganymede => Ok(Ganymede.rotational_element_rates(t)),
14948            DynOrigin::Callisto => Ok(Callisto.rotational_element_rates(t)),
14949            DynOrigin::Amalthea => Ok(Amalthea.rotational_element_rates(t)),
14950            DynOrigin::Thebe => Ok(Thebe.rotational_element_rates(t)),
14951            DynOrigin::Adrastea => Ok(Adrastea.rotational_element_rates(t)),
14952            DynOrigin::Metis => Ok(Metis.rotational_element_rates(t)),
14953            DynOrigin::Mimas => Ok(Mimas.rotational_element_rates(t)),
14954            DynOrigin::Enceladus => Ok(Enceladus.rotational_element_rates(t)),
14955            DynOrigin::Tethys => Ok(Tethys.rotational_element_rates(t)),
14956            DynOrigin::Dione => Ok(Dione.rotational_element_rates(t)),
14957            DynOrigin::Rhea => Ok(Rhea.rotational_element_rates(t)),
14958            DynOrigin::Titan => Ok(Titan.rotational_element_rates(t)),
14959            DynOrigin::Iapetus => Ok(Iapetus.rotational_element_rates(t)),
14960            DynOrigin::Phoebe => Ok(Phoebe.rotational_element_rates(t)),
14961            DynOrigin::Janus => Ok(Janus.rotational_element_rates(t)),
14962            DynOrigin::Epimetheus => Ok(Epimetheus.rotational_element_rates(t)),
14963            DynOrigin::Helene => Ok(Helene.rotational_element_rates(t)),
14964            DynOrigin::Telesto => Ok(Telesto.rotational_element_rates(t)),
14965            DynOrigin::Calypso => Ok(Calypso.rotational_element_rates(t)),
14966            DynOrigin::Atlas => Ok(Atlas.rotational_element_rates(t)),
14967            DynOrigin::Prometheus => Ok(Prometheus.rotational_element_rates(t)),
14968            DynOrigin::Pandora => Ok(Pandora.rotational_element_rates(t)),
14969            DynOrigin::Pan => Ok(Pan.rotational_element_rates(t)),
14970            DynOrigin::Ariel => Ok(Ariel.rotational_element_rates(t)),
14971            DynOrigin::Umbriel => Ok(Umbriel.rotational_element_rates(t)),
14972            DynOrigin::Titania => Ok(Titania.rotational_element_rates(t)),
14973            DynOrigin::Oberon => Ok(Oberon.rotational_element_rates(t)),
14974            DynOrigin::Miranda => Ok(Miranda.rotational_element_rates(t)),
14975            DynOrigin::Cordelia => Ok(Cordelia.rotational_element_rates(t)),
14976            DynOrigin::Ophelia => Ok(Ophelia.rotational_element_rates(t)),
14977            DynOrigin::Bianca => Ok(Bianca.rotational_element_rates(t)),
14978            DynOrigin::Cressida => Ok(Cressida.rotational_element_rates(t)),
14979            DynOrigin::Desdemona => Ok(Desdemona.rotational_element_rates(t)),
14980            DynOrigin::Juliet => Ok(Juliet.rotational_element_rates(t)),
14981            DynOrigin::Portia => Ok(Portia.rotational_element_rates(t)),
14982            DynOrigin::Rosalind => Ok(Rosalind.rotational_element_rates(t)),
14983            DynOrigin::Belinda => Ok(Belinda.rotational_element_rates(t)),
14984            DynOrigin::Puck => Ok(Puck.rotational_element_rates(t)),
14985            DynOrigin::Triton => Ok(Triton.rotational_element_rates(t)),
14986            DynOrigin::Naiad => Ok(Naiad.rotational_element_rates(t)),
14987            DynOrigin::Thalassa => Ok(Thalassa.rotational_element_rates(t)),
14988            DynOrigin::Despina => Ok(Despina.rotational_element_rates(t)),
14989            DynOrigin::Galatea => Ok(Galatea.rotational_element_rates(t)),
14990            DynOrigin::Larissa => Ok(Larissa.rotational_element_rates(t)),
14991            DynOrigin::Proteus => Ok(Proteus.rotational_element_rates(t)),
14992            DynOrigin::Charon => Ok(Charon.rotational_element_rates(t)),
14993            DynOrigin::Gaspra => Ok(Gaspra.rotational_element_rates(t)),
14994            DynOrigin::Ida => Ok(Ida.rotational_element_rates(t)),
14995            DynOrigin::Ceres => Ok(Ceres.rotational_element_rates(t)),
14996            DynOrigin::Pallas => Ok(Pallas.rotational_element_rates(t)),
14997            DynOrigin::Vesta => Ok(Vesta.rotational_element_rates(t)),
14998            DynOrigin::Lutetia => Ok(Lutetia.rotational_element_rates(t)),
14999            DynOrigin::Eros => Ok(Eros.rotational_element_rates(t)),
15000            DynOrigin::Davida => Ok(Davida.rotational_element_rates(t)),
15001            DynOrigin::Steins => Ok(Steins.rotational_element_rates(t)),
15002            DynOrigin::Itokawa => Ok(Itokawa.rotational_element_rates(t)),
15003            _ => Err(UndefinedOriginPropertyError {
15004                origin: self.to_string(),
15005                prop: "rotational element rates".to_string(),
15006            }),
15007        }
15008    }
15009}
15010#[cfg(test)]
15011#[allow(clippy::approx_constant)]
15012mod tests {
15013    use crate::*;
15014    #[test]
15015    fn test_origin_10() {
15016        assert_eq!(Sun.id().0, 10i32);
15017        assert_eq!(Sun.to_string(), "Sun");
15018        assert_eq!(DynOrigin::from(Sun), DynOrigin::Sun);
15019    }
15020    #[test]
15021    fn test_point_mass_10() {
15022        assert_eq!(
15023            Sun.gravitational_parameter(),
15024            GravitationalParameter::km3_per_s2(132712440041.27942f64)
15025        );
15026        assert_eq!(
15027            DynOrigin::Sun.try_gravitational_parameter(),
15028            Ok(GravitationalParameter::km3_per_s2(132712440041.27942f64))
15029        );
15030    }
15031    #[test]
15032    fn test_mean_radius_10() {
15033        assert!(DynOrigin::Sun.try_mean_radius().is_err());
15034    }
15035    #[test]
15036    fn test_spheroid_10() {
15037        assert_eq!(Sun.polar_radius(), Distance::kilometers(695700f64));
15038        assert_eq!(
15039            DynOrigin::Sun.try_polar_radius(),
15040            Ok(Distance::kilometers(695700f64))
15041        );
15042        assert_eq!(Sun.equatorial_radius(), Distance::kilometers(695700f64));
15043        assert_eq!(
15044            DynOrigin::Sun.try_equatorial_radius(),
15045            Ok(Distance::kilometers(695700f64))
15046        );
15047    }
15048    #[test]
15049    fn test_tri_axial_10() {
15050        assert_eq!(
15051            Sun.radii(),
15052            (
15053                Distance::kilometers(695700f64),
15054                Distance::kilometers(695700f64),
15055                Distance::kilometers(695700f64)
15056            )
15057        );
15058        assert_eq!(
15059            DynOrigin::Sun.try_radii(),
15060            Ok((
15061                Distance::kilometers(695700f64),
15062                Distance::kilometers(695700f64),
15063                Distance::kilometers(695700f64)
15064            ))
15065        );
15066    }
15067    #[test]
15068    fn test_origin_199() {
15069        assert_eq!(Mercury.id().0, 199i32);
15070        assert_eq!(Mercury.to_string(), "Mercury");
15071        assert_eq!(DynOrigin::from(Mercury), DynOrigin::Mercury);
15072    }
15073    #[test]
15074    fn test_point_mass_199() {
15075        assert_eq!(
15076            Mercury.gravitational_parameter(),
15077            GravitationalParameter::km3_per_s2(22031.868551400003f64)
15078        );
15079        assert_eq!(
15080            DynOrigin::Mercury.try_gravitational_parameter(),
15081            Ok(GravitationalParameter::km3_per_s2(22031.868551400003f64))
15082        );
15083    }
15084    #[test]
15085    fn test_mean_radius_199() {
15086        assert_eq!(Mercury.mean_radius(), Distance::kilometers(2439.4f64));
15087        assert_eq!(
15088            DynOrigin::Mercury.try_mean_radius(),
15089            Ok(Distance::kilometers(2439.4f64))
15090        );
15091    }
15092    #[test]
15093    fn test_spheroid_199() {
15094        assert_eq!(Mercury.polar_radius(), Distance::kilometers(2438.26f64));
15095        assert_eq!(
15096            DynOrigin::Mercury.try_polar_radius(),
15097            Ok(Distance::kilometers(2438.26f64))
15098        );
15099        assert_eq!(
15100            Mercury.equatorial_radius(),
15101            Distance::kilometers(2440.53f64)
15102        );
15103        assert_eq!(
15104            DynOrigin::Mercury.try_equatorial_radius(),
15105            Ok(Distance::kilometers(2440.53f64))
15106        );
15107    }
15108    #[test]
15109    fn test_tri_axial_199() {
15110        assert_eq!(
15111            Mercury.radii(),
15112            (
15113                Distance::kilometers(2440.53f64),
15114                Distance::kilometers(2440.53f64),
15115                Distance::kilometers(2438.26f64)
15116            )
15117        );
15118        assert_eq!(
15119            DynOrigin::Mercury.try_radii(),
15120            Ok((
15121                Distance::kilometers(2440.53f64),
15122                Distance::kilometers(2440.53f64),
15123                Distance::kilometers(2438.26f64)
15124            ))
15125        );
15126    }
15127    #[test]
15128    fn test_origin_299() {
15129        assert_eq!(Venus.id().0, 299i32);
15130        assert_eq!(Venus.to_string(), "Venus");
15131        assert_eq!(DynOrigin::from(Venus), DynOrigin::Venus);
15132    }
15133    #[test]
15134    fn test_point_mass_299() {
15135        assert_eq!(
15136            Venus.gravitational_parameter(),
15137            GravitationalParameter::km3_per_s2(324858.592f64)
15138        );
15139        assert_eq!(
15140            DynOrigin::Venus.try_gravitational_parameter(),
15141            Ok(GravitationalParameter::km3_per_s2(324858.592f64))
15142        );
15143    }
15144    #[test]
15145    fn test_mean_radius_299() {
15146        assert_eq!(Venus.mean_radius(), Distance::kilometers(6051.8f64));
15147        assert_eq!(
15148            DynOrigin::Venus.try_mean_radius(),
15149            Ok(Distance::kilometers(6051.8f64))
15150        );
15151    }
15152    #[test]
15153    fn test_spheroid_299() {
15154        assert_eq!(Venus.polar_radius(), Distance::kilometers(6051.8f64));
15155        assert_eq!(
15156            DynOrigin::Venus.try_polar_radius(),
15157            Ok(Distance::kilometers(6051.8f64))
15158        );
15159        assert_eq!(Venus.equatorial_radius(), Distance::kilometers(6051.8f64));
15160        assert_eq!(
15161            DynOrigin::Venus.try_equatorial_radius(),
15162            Ok(Distance::kilometers(6051.8f64))
15163        );
15164    }
15165    #[test]
15166    fn test_tri_axial_299() {
15167        assert_eq!(
15168            Venus.radii(),
15169            (
15170                Distance::kilometers(6051.8f64),
15171                Distance::kilometers(6051.8f64),
15172                Distance::kilometers(6051.8f64)
15173            )
15174        );
15175        assert_eq!(
15176            DynOrigin::Venus.try_radii(),
15177            Ok((
15178                Distance::kilometers(6051.8f64),
15179                Distance::kilometers(6051.8f64),
15180                Distance::kilometers(6051.8f64)
15181            ))
15182        );
15183    }
15184    #[test]
15185    fn test_origin_399() {
15186        assert_eq!(Earth.id().0, 399i32);
15187        assert_eq!(Earth.to_string(), "Earth");
15188        assert_eq!(DynOrigin::from(Earth), DynOrigin::Earth);
15189    }
15190    #[test]
15191    fn test_point_mass_399() {
15192        assert_eq!(
15193            Earth.gravitational_parameter(),
15194            GravitationalParameter::km3_per_s2(398600.43550702266f64)
15195        );
15196        assert_eq!(
15197            DynOrigin::Earth.try_gravitational_parameter(),
15198            Ok(GravitationalParameter::km3_per_s2(398600.43550702266f64))
15199        );
15200    }
15201    #[test]
15202    fn test_mean_radius_399() {
15203        assert_eq!(Earth.mean_radius(), Distance::kilometers(6371.0084f64));
15204        assert_eq!(
15205            DynOrigin::Earth.try_mean_radius(),
15206            Ok(Distance::kilometers(6371.0084f64))
15207        );
15208    }
15209    #[test]
15210    fn test_spheroid_399() {
15211        assert_eq!(Earth.polar_radius(), Distance::kilometers(6356.7519f64));
15212        assert_eq!(
15213            DynOrigin::Earth.try_polar_radius(),
15214            Ok(Distance::kilometers(6356.7519f64))
15215        );
15216        assert_eq!(
15217            Earth.equatorial_radius(),
15218            Distance::kilometers(6378.1366f64)
15219        );
15220        assert_eq!(
15221            DynOrigin::Earth.try_equatorial_radius(),
15222            Ok(Distance::kilometers(6378.1366f64))
15223        );
15224    }
15225    #[test]
15226    fn test_tri_axial_399() {
15227        assert_eq!(
15228            Earth.radii(),
15229            (
15230                Distance::kilometers(6378.1366f64),
15231                Distance::kilometers(6378.1366f64),
15232                Distance::kilometers(6356.7519f64)
15233            )
15234        );
15235        assert_eq!(
15236            DynOrigin::Earth.try_radii(),
15237            Ok((
15238                Distance::kilometers(6378.1366f64),
15239                Distance::kilometers(6378.1366f64),
15240                Distance::kilometers(6356.7519f64)
15241            ))
15242        );
15243    }
15244    #[test]
15245    fn test_origin_499() {
15246        assert_eq!(Mars.id().0, 499i32);
15247        assert_eq!(Mars.to_string(), "Mars");
15248        assert_eq!(DynOrigin::from(Mars), DynOrigin::Mars);
15249    }
15250    #[test]
15251    fn test_point_mass_499() {
15252        assert_eq!(
15253            Mars.gravitational_parameter(),
15254            GravitationalParameter::km3_per_s2(42828.37362069909f64)
15255        );
15256        assert_eq!(
15257            DynOrigin::Mars.try_gravitational_parameter(),
15258            Ok(GravitationalParameter::km3_per_s2(42828.37362069909f64))
15259        );
15260    }
15261    #[test]
15262    fn test_mean_radius_499() {
15263        assert_eq!(Mars.mean_radius(), Distance::kilometers(3389.5f64));
15264        assert_eq!(
15265            DynOrigin::Mars.try_mean_radius(),
15266            Ok(Distance::kilometers(3389.5f64))
15267        );
15268    }
15269    #[test]
15270    fn test_spheroid_499() {
15271        assert_eq!(Mars.polar_radius(), Distance::kilometers(3376.2f64));
15272        assert_eq!(
15273            DynOrigin::Mars.try_polar_radius(),
15274            Ok(Distance::kilometers(3376.2f64))
15275        );
15276        assert_eq!(Mars.equatorial_radius(), Distance::kilometers(3396.19f64));
15277        assert_eq!(
15278            DynOrigin::Mars.try_equatorial_radius(),
15279            Ok(Distance::kilometers(3396.19f64))
15280        );
15281    }
15282    #[test]
15283    fn test_tri_axial_499() {
15284        assert_eq!(
15285            Mars.radii(),
15286            (
15287                Distance::kilometers(3396.19f64),
15288                Distance::kilometers(3396.19f64),
15289                Distance::kilometers(3376.2f64)
15290            )
15291        );
15292        assert_eq!(
15293            DynOrigin::Mars.try_radii(),
15294            Ok((
15295                Distance::kilometers(3396.19f64),
15296                Distance::kilometers(3396.19f64),
15297                Distance::kilometers(3376.2f64)
15298            ))
15299        );
15300    }
15301    #[test]
15302    fn test_origin_599() {
15303        assert_eq!(Jupiter.id().0, 599i32);
15304        assert_eq!(Jupiter.to_string(), "Jupiter");
15305        assert_eq!(DynOrigin::from(Jupiter), DynOrigin::Jupiter);
15306    }
15307    #[test]
15308    fn test_point_mass_599() {
15309        assert_eq!(
15310            Jupiter.gravitational_parameter(),
15311            GravitationalParameter::km3_per_s2(126686531.9003704f64)
15312        );
15313        assert_eq!(
15314            DynOrigin::Jupiter.try_gravitational_parameter(),
15315            Ok(GravitationalParameter::km3_per_s2(126686531.9003704f64))
15316        );
15317    }
15318    #[test]
15319    fn test_mean_radius_599() {
15320        assert_eq!(Jupiter.mean_radius(), Distance::kilometers(69911f64));
15321        assert_eq!(
15322            DynOrigin::Jupiter.try_mean_radius(),
15323            Ok(Distance::kilometers(69911f64))
15324        );
15325    }
15326    #[test]
15327    fn test_spheroid_599() {
15328        assert_eq!(Jupiter.polar_radius(), Distance::kilometers(66854f64));
15329        assert_eq!(
15330            DynOrigin::Jupiter.try_polar_radius(),
15331            Ok(Distance::kilometers(66854f64))
15332        );
15333        assert_eq!(Jupiter.equatorial_radius(), Distance::kilometers(71492f64));
15334        assert_eq!(
15335            DynOrigin::Jupiter.try_equatorial_radius(),
15336            Ok(Distance::kilometers(71492f64))
15337        );
15338    }
15339    #[test]
15340    fn test_tri_axial_599() {
15341        assert_eq!(
15342            Jupiter.radii(),
15343            (
15344                Distance::kilometers(71492f64),
15345                Distance::kilometers(71492f64),
15346                Distance::kilometers(66854f64)
15347            )
15348        );
15349        assert_eq!(
15350            DynOrigin::Jupiter.try_radii(),
15351            Ok((
15352                Distance::kilometers(71492f64),
15353                Distance::kilometers(71492f64),
15354                Distance::kilometers(66854f64)
15355            ))
15356        );
15357    }
15358    #[test]
15359    fn test_origin_699() {
15360        assert_eq!(Saturn.id().0, 699i32);
15361        assert_eq!(Saturn.to_string(), "Saturn");
15362        assert_eq!(DynOrigin::from(Saturn), DynOrigin::Saturn);
15363    }
15364    #[test]
15365    fn test_point_mass_699() {
15366        assert_eq!(
15367            Saturn.gravitational_parameter(),
15368            GravitationalParameter::km3_per_s2(37931206.23436167f64)
15369        );
15370        assert_eq!(
15371            DynOrigin::Saturn.try_gravitational_parameter(),
15372            Ok(GravitationalParameter::km3_per_s2(37931206.23436167f64))
15373        );
15374    }
15375    #[test]
15376    fn test_mean_radius_699() {
15377        assert_eq!(Saturn.mean_radius(), Distance::kilometers(58232f64));
15378        assert_eq!(
15379            DynOrigin::Saturn.try_mean_radius(),
15380            Ok(Distance::kilometers(58232f64))
15381        );
15382    }
15383    #[test]
15384    fn test_spheroid_699() {
15385        assert_eq!(Saturn.polar_radius(), Distance::kilometers(54364f64));
15386        assert_eq!(
15387            DynOrigin::Saturn.try_polar_radius(),
15388            Ok(Distance::kilometers(54364f64))
15389        );
15390        assert_eq!(Saturn.equatorial_radius(), Distance::kilometers(60268f64));
15391        assert_eq!(
15392            DynOrigin::Saturn.try_equatorial_radius(),
15393            Ok(Distance::kilometers(60268f64))
15394        );
15395    }
15396    #[test]
15397    fn test_tri_axial_699() {
15398        assert_eq!(
15399            Saturn.radii(),
15400            (
15401                Distance::kilometers(60268f64),
15402                Distance::kilometers(60268f64),
15403                Distance::kilometers(54364f64)
15404            )
15405        );
15406        assert_eq!(
15407            DynOrigin::Saturn.try_radii(),
15408            Ok((
15409                Distance::kilometers(60268f64),
15410                Distance::kilometers(60268f64),
15411                Distance::kilometers(54364f64)
15412            ))
15413        );
15414    }
15415    #[test]
15416    fn test_origin_799() {
15417        assert_eq!(Uranus.id().0, 799i32);
15418        assert_eq!(Uranus.to_string(), "Uranus");
15419        assert_eq!(DynOrigin::from(Uranus), DynOrigin::Uranus);
15420    }
15421    #[test]
15422    fn test_point_mass_799() {
15423        assert_eq!(
15424            Uranus.gravitational_parameter(),
15425            GravitationalParameter::km3_per_s2(5793951.256527211f64)
15426        );
15427        assert_eq!(
15428            DynOrigin::Uranus.try_gravitational_parameter(),
15429            Ok(GravitationalParameter::km3_per_s2(5793951.256527211f64))
15430        );
15431    }
15432    #[test]
15433    fn test_mean_radius_799() {
15434        assert_eq!(Uranus.mean_radius(), Distance::kilometers(25362f64));
15435        assert_eq!(
15436            DynOrigin::Uranus.try_mean_radius(),
15437            Ok(Distance::kilometers(25362f64))
15438        );
15439    }
15440    #[test]
15441    fn test_spheroid_799() {
15442        assert_eq!(Uranus.polar_radius(), Distance::kilometers(24973f64));
15443        assert_eq!(
15444            DynOrigin::Uranus.try_polar_radius(),
15445            Ok(Distance::kilometers(24973f64))
15446        );
15447        assert_eq!(Uranus.equatorial_radius(), Distance::kilometers(25559f64));
15448        assert_eq!(
15449            DynOrigin::Uranus.try_equatorial_radius(),
15450            Ok(Distance::kilometers(25559f64))
15451        );
15452    }
15453    #[test]
15454    fn test_tri_axial_799() {
15455        assert_eq!(
15456            Uranus.radii(),
15457            (
15458                Distance::kilometers(25559f64),
15459                Distance::kilometers(25559f64),
15460                Distance::kilometers(24973f64)
15461            )
15462        );
15463        assert_eq!(
15464            DynOrigin::Uranus.try_radii(),
15465            Ok((
15466                Distance::kilometers(25559f64),
15467                Distance::kilometers(25559f64),
15468                Distance::kilometers(24973f64)
15469            ))
15470        );
15471    }
15472    #[test]
15473    fn test_origin_899() {
15474        assert_eq!(Neptune.id().0, 899i32);
15475        assert_eq!(Neptune.to_string(), "Neptune");
15476        assert_eq!(DynOrigin::from(Neptune), DynOrigin::Neptune);
15477    }
15478    #[test]
15479    fn test_point_mass_899() {
15480        assert_eq!(
15481            Neptune.gravitational_parameter(),
15482            GravitationalParameter::km3_per_s2(6835103.145462294f64)
15483        );
15484        assert_eq!(
15485            DynOrigin::Neptune.try_gravitational_parameter(),
15486            Ok(GravitationalParameter::km3_per_s2(6835103.145462294f64))
15487        );
15488    }
15489    #[test]
15490    fn test_mean_radius_899() {
15491        assert_eq!(Neptune.mean_radius(), Distance::kilometers(24622f64));
15492        assert_eq!(
15493            DynOrigin::Neptune.try_mean_radius(),
15494            Ok(Distance::kilometers(24622f64))
15495        );
15496    }
15497    #[test]
15498    fn test_spheroid_899() {
15499        assert_eq!(Neptune.polar_radius(), Distance::kilometers(24341f64));
15500        assert_eq!(
15501            DynOrigin::Neptune.try_polar_radius(),
15502            Ok(Distance::kilometers(24341f64))
15503        );
15504        assert_eq!(Neptune.equatorial_radius(), Distance::kilometers(24764f64));
15505        assert_eq!(
15506            DynOrigin::Neptune.try_equatorial_radius(),
15507            Ok(Distance::kilometers(24764f64))
15508        );
15509    }
15510    #[test]
15511    fn test_tri_axial_899() {
15512        assert_eq!(
15513            Neptune.radii(),
15514            (
15515                Distance::kilometers(24764f64),
15516                Distance::kilometers(24764f64),
15517                Distance::kilometers(24341f64)
15518            )
15519        );
15520        assert_eq!(
15521            DynOrigin::Neptune.try_radii(),
15522            Ok((
15523                Distance::kilometers(24764f64),
15524                Distance::kilometers(24764f64),
15525                Distance::kilometers(24341f64)
15526            ))
15527        );
15528    }
15529    #[test]
15530    fn test_origin_999() {
15531        assert_eq!(Pluto.id().0, 999i32);
15532        assert_eq!(Pluto.to_string(), "Pluto");
15533        assert_eq!(DynOrigin::from(Pluto), DynOrigin::Pluto);
15534    }
15535    #[test]
15536    fn test_point_mass_999() {
15537        assert_eq!(
15538            Pluto.gravitational_parameter(),
15539            GravitationalParameter::km3_per_s2(869.6138177608748f64)
15540        );
15541        assert_eq!(
15542            DynOrigin::Pluto.try_gravitational_parameter(),
15543            Ok(GravitationalParameter::km3_per_s2(869.6138177608748f64))
15544        );
15545    }
15546    #[test]
15547    fn test_mean_radius_999() {
15548        assert_eq!(Pluto.mean_radius(), Distance::kilometers(1188.3f64));
15549        assert_eq!(
15550            DynOrigin::Pluto.try_mean_radius(),
15551            Ok(Distance::kilometers(1188.3f64))
15552        );
15553    }
15554    #[test]
15555    fn test_spheroid_999() {
15556        assert_eq!(Pluto.polar_radius(), Distance::kilometers(1188.3f64));
15557        assert_eq!(
15558            DynOrigin::Pluto.try_polar_radius(),
15559            Ok(Distance::kilometers(1188.3f64))
15560        );
15561        assert_eq!(Pluto.equatorial_radius(), Distance::kilometers(1188.3f64));
15562        assert_eq!(
15563            DynOrigin::Pluto.try_equatorial_radius(),
15564            Ok(Distance::kilometers(1188.3f64))
15565        );
15566    }
15567    #[test]
15568    fn test_tri_axial_999() {
15569        assert_eq!(
15570            Pluto.radii(),
15571            (
15572                Distance::kilometers(1188.3f64),
15573                Distance::kilometers(1188.3f64),
15574                Distance::kilometers(1188.3f64)
15575            )
15576        );
15577        assert_eq!(
15578            DynOrigin::Pluto.try_radii(),
15579            Ok((
15580                Distance::kilometers(1188.3f64),
15581                Distance::kilometers(1188.3f64),
15582                Distance::kilometers(1188.3f64)
15583            ))
15584        );
15585    }
15586    #[test]
15587    fn test_origin_0() {
15588        assert_eq!(SolarSystemBarycenter.id().0, 0i32);
15589        assert_eq!(SolarSystemBarycenter.to_string(), "Solar System Barycenter");
15590        assert_eq!(
15591            DynOrigin::from(SolarSystemBarycenter),
15592            DynOrigin::SolarSystemBarycenter
15593        );
15594    }
15595    #[test]
15596    fn test_point_mass_0() {
15597        assert_eq!(
15598            SolarSystemBarycenter.gravitational_parameter(),
15599            GravitationalParameter::km3_per_s2(132712440041.27942f64)
15600        );
15601        assert_eq!(
15602            DynOrigin::SolarSystemBarycenter.try_gravitational_parameter(),
15603            Ok(GravitationalParameter::km3_per_s2(132712440041.27942f64))
15604        );
15605    }
15606    #[test]
15607    fn test_origin_1() {
15608        assert_eq!(MercuryBarycenter.id().0, 1i32);
15609        assert_eq!(MercuryBarycenter.to_string(), "Mercury Barycenter");
15610        assert_eq!(
15611            DynOrigin::from(MercuryBarycenter),
15612            DynOrigin::MercuryBarycenter
15613        );
15614    }
15615    #[test]
15616    fn test_point_mass_1() {
15617        assert_eq!(
15618            MercuryBarycenter.gravitational_parameter(),
15619            GravitationalParameter::km3_per_s2(22031.868551400003f64)
15620        );
15621        assert_eq!(
15622            DynOrigin::MercuryBarycenter.try_gravitational_parameter(),
15623            Ok(GravitationalParameter::km3_per_s2(22031.868551400003f64))
15624        );
15625    }
15626    #[test]
15627    fn test_origin_2() {
15628        assert_eq!(VenusBarycenter.id().0, 2i32);
15629        assert_eq!(VenusBarycenter.to_string(), "Venus Barycenter");
15630        assert_eq!(DynOrigin::from(VenusBarycenter), DynOrigin::VenusBarycenter);
15631    }
15632    #[test]
15633    fn test_point_mass_2() {
15634        assert_eq!(
15635            VenusBarycenter.gravitational_parameter(),
15636            GravitationalParameter::km3_per_s2(324858.592f64)
15637        );
15638        assert_eq!(
15639            DynOrigin::VenusBarycenter.try_gravitational_parameter(),
15640            Ok(GravitationalParameter::km3_per_s2(324858.592f64))
15641        );
15642    }
15643    #[test]
15644    fn test_origin_3() {
15645        assert_eq!(EarthBarycenter.id().0, 3i32);
15646        assert_eq!(EarthBarycenter.to_string(), "Earth Barycenter");
15647        assert_eq!(DynOrigin::from(EarthBarycenter), DynOrigin::EarthBarycenter);
15648    }
15649    #[test]
15650    fn test_point_mass_3() {
15651        assert_eq!(
15652            EarthBarycenter.gravitational_parameter(),
15653            GravitationalParameter::km3_per_s2(403503.2356254802f64)
15654        );
15655        assert_eq!(
15656            DynOrigin::EarthBarycenter.try_gravitational_parameter(),
15657            Ok(GravitationalParameter::km3_per_s2(403503.2356254802f64))
15658        );
15659    }
15660    #[test]
15661    fn test_origin_4() {
15662        assert_eq!(MarsBarycenter.id().0, 4i32);
15663        assert_eq!(MarsBarycenter.to_string(), "Mars Barycenter");
15664        assert_eq!(DynOrigin::from(MarsBarycenter), DynOrigin::MarsBarycenter);
15665    }
15666    #[test]
15667    fn test_point_mass_4() {
15668        assert_eq!(
15669            MarsBarycenter.gravitational_parameter(),
15670            GravitationalParameter::km3_per_s2(42828.3758157561f64)
15671        );
15672        assert_eq!(
15673            DynOrigin::MarsBarycenter.try_gravitational_parameter(),
15674            Ok(GravitationalParameter::km3_per_s2(42828.3758157561f64))
15675        );
15676    }
15677    #[test]
15678    fn test_origin_5() {
15679        assert_eq!(JupiterBarycenter.id().0, 5i32);
15680        assert_eq!(JupiterBarycenter.to_string(), "Jupiter Barycenter");
15681        assert_eq!(
15682            DynOrigin::from(JupiterBarycenter),
15683            DynOrigin::JupiterBarycenter
15684        );
15685    }
15686    #[test]
15687    fn test_point_mass_5() {
15688        assert_eq!(
15689            JupiterBarycenter.gravitational_parameter(),
15690            GravitationalParameter::km3_per_s2(126712764.09999998f64)
15691        );
15692        assert_eq!(
15693            DynOrigin::JupiterBarycenter.try_gravitational_parameter(),
15694            Ok(GravitationalParameter::km3_per_s2(126712764.09999998f64))
15695        );
15696    }
15697    #[test]
15698    fn test_origin_6() {
15699        assert_eq!(SaturnBarycenter.id().0, 6i32);
15700        assert_eq!(SaturnBarycenter.to_string(), "Saturn Barycenter");
15701        assert_eq!(
15702            DynOrigin::from(SaturnBarycenter),
15703            DynOrigin::SaturnBarycenter
15704        );
15705    }
15706    #[test]
15707    fn test_point_mass_6() {
15708        assert_eq!(
15709            SaturnBarycenter.gravitational_parameter(),
15710            GravitationalParameter::km3_per_s2(37940584.8418f64)
15711        );
15712        assert_eq!(
15713            DynOrigin::SaturnBarycenter.try_gravitational_parameter(),
15714            Ok(GravitationalParameter::km3_per_s2(37940584.8418f64))
15715        );
15716    }
15717    #[test]
15718    fn test_origin_7() {
15719        assert_eq!(UranusBarycenter.id().0, 7i32);
15720        assert_eq!(UranusBarycenter.to_string(), "Uranus Barycenter");
15721        assert_eq!(
15722            DynOrigin::from(UranusBarycenter),
15723            DynOrigin::UranusBarycenter
15724        );
15725    }
15726    #[test]
15727    fn test_point_mass_7() {
15728        assert_eq!(
15729            UranusBarycenter.gravitational_parameter(),
15730            GravitationalParameter::km3_per_s2(5794556.3999999985f64)
15731        );
15732        assert_eq!(
15733            DynOrigin::UranusBarycenter.try_gravitational_parameter(),
15734            Ok(GravitationalParameter::km3_per_s2(5794556.3999999985f64))
15735        );
15736    }
15737    #[test]
15738    fn test_origin_8() {
15739        assert_eq!(NeptuneBarycenter.id().0, 8i32);
15740        assert_eq!(NeptuneBarycenter.to_string(), "Neptune Barycenter");
15741        assert_eq!(
15742            DynOrigin::from(NeptuneBarycenter),
15743            DynOrigin::NeptuneBarycenter
15744        );
15745    }
15746    #[test]
15747    fn test_point_mass_8() {
15748        assert_eq!(
15749            NeptuneBarycenter.gravitational_parameter(),
15750            GravitationalParameter::km3_per_s2(6836527.100580399f64)
15751        );
15752        assert_eq!(
15753            DynOrigin::NeptuneBarycenter.try_gravitational_parameter(),
15754            Ok(GravitationalParameter::km3_per_s2(6836527.100580399f64))
15755        );
15756    }
15757    #[test]
15758    fn test_origin_9() {
15759        assert_eq!(PlutoBarycenter.id().0, 9i32);
15760        assert_eq!(PlutoBarycenter.to_string(), "Pluto Barycenter");
15761        assert_eq!(DynOrigin::from(PlutoBarycenter), DynOrigin::PlutoBarycenter);
15762    }
15763    #[test]
15764    fn test_point_mass_9() {
15765        assert_eq!(
15766            PlutoBarycenter.gravitational_parameter(),
15767            GravitationalParameter::km3_per_s2(975.5f64)
15768        );
15769        assert_eq!(
15770            DynOrigin::PlutoBarycenter.try_gravitational_parameter(),
15771            Ok(GravitationalParameter::km3_per_s2(975.5f64))
15772        );
15773    }
15774    #[test]
15775    fn test_origin_301() {
15776        assert_eq!(Moon.id().0, 301i32);
15777        assert_eq!(Moon.to_string(), "Moon");
15778        assert_eq!(DynOrigin::from(Moon), DynOrigin::Moon);
15779    }
15780    #[test]
15781    fn test_point_mass_301() {
15782        assert_eq!(
15783            Moon.gravitational_parameter(),
15784            GravitationalParameter::km3_per_s2(4902.80011845755f64)
15785        );
15786        assert_eq!(
15787            DynOrigin::Moon.try_gravitational_parameter(),
15788            Ok(GravitationalParameter::km3_per_s2(4902.80011845755f64))
15789        );
15790    }
15791    #[test]
15792    fn test_mean_radius_301() {
15793        assert_eq!(Moon.mean_radius(), Distance::kilometers(1737.4f64));
15794        assert_eq!(
15795            DynOrigin::Moon.try_mean_radius(),
15796            Ok(Distance::kilometers(1737.4f64))
15797        );
15798    }
15799    #[test]
15800    fn test_spheroid_301() {
15801        assert_eq!(Moon.polar_radius(), Distance::kilometers(1737.4f64));
15802        assert_eq!(
15803            DynOrigin::Moon.try_polar_radius(),
15804            Ok(Distance::kilometers(1737.4f64))
15805        );
15806        assert_eq!(Moon.equatorial_radius(), Distance::kilometers(1737.4f64));
15807        assert_eq!(
15808            DynOrigin::Moon.try_equatorial_radius(),
15809            Ok(Distance::kilometers(1737.4f64))
15810        );
15811    }
15812    #[test]
15813    fn test_tri_axial_301() {
15814        assert_eq!(
15815            Moon.radii(),
15816            (
15817                Distance::kilometers(1737.4f64),
15818                Distance::kilometers(1737.4f64),
15819                Distance::kilometers(1737.4f64)
15820            )
15821        );
15822        assert_eq!(
15823            DynOrigin::Moon.try_radii(),
15824            Ok((
15825                Distance::kilometers(1737.4f64),
15826                Distance::kilometers(1737.4f64),
15827                Distance::kilometers(1737.4f64)
15828            ))
15829        );
15830    }
15831    #[test]
15832    fn test_origin_401() {
15833        assert_eq!(Phobos.id().0, 401i32);
15834        assert_eq!(Phobos.to_string(), "Phobos");
15835        assert_eq!(DynOrigin::from(Phobos), DynOrigin::Phobos);
15836    }
15837    #[test]
15838    fn test_point_mass_401() {
15839        assert_eq!(
15840            Phobos.gravitational_parameter(),
15841            GravitationalParameter::km3_per_s2(0.0007087546066894452f64)
15842        );
15843        assert_eq!(
15844            DynOrigin::Phobos.try_gravitational_parameter(),
15845            Ok(GravitationalParameter::km3_per_s2(0.0007087546066894452f64))
15846        );
15847    }
15848    #[test]
15849    fn test_mean_radius_401() {
15850        assert_eq!(Phobos.mean_radius(), Distance::kilometers(11.08f64));
15851        assert_eq!(
15852            DynOrigin::Phobos.try_mean_radius(),
15853            Ok(Distance::kilometers(11.08f64))
15854        );
15855    }
15856    #[test]
15857    fn test_spheroid_401() {
15858        assert!(DynOrigin::Phobos.try_polar_radius().is_err());
15859        assert!(DynOrigin::Phobos.try_equatorial_radius().is_err());
15860    }
15861    #[test]
15862    fn test_tri_axial_401() {
15863        assert_eq!(
15864            Phobos.radii(),
15865            (
15866                Distance::kilometers(13f64),
15867                Distance::kilometers(11.4f64),
15868                Distance::kilometers(9.1f64)
15869            )
15870        );
15871        assert_eq!(
15872            DynOrigin::Phobos.try_radii(),
15873            Ok((
15874                Distance::kilometers(13f64),
15875                Distance::kilometers(11.4f64),
15876                Distance::kilometers(9.1f64)
15877            ))
15878        );
15879    }
15880    #[test]
15881    fn test_origin_402() {
15882        assert_eq!(Deimos.id().0, 402i32);
15883        assert_eq!(Deimos.to_string(), "Deimos");
15884        assert_eq!(DynOrigin::from(Deimos), DynOrigin::Deimos);
15885    }
15886    #[test]
15887    fn test_point_mass_402() {
15888        assert_eq!(
15889            Deimos.gravitational_parameter(),
15890            GravitationalParameter::km3_per_s2(0.00009615569648120313f64)
15891        );
15892        assert_eq!(
15893            DynOrigin::Deimos.try_gravitational_parameter(),
15894            Ok(GravitationalParameter::km3_per_s2(
15895                0.00009615569648120313f64
15896            ))
15897        );
15898    }
15899    #[test]
15900    fn test_mean_radius_402() {
15901        assert_eq!(Deimos.mean_radius(), Distance::kilometers(6.2f64));
15902        assert_eq!(
15903            DynOrigin::Deimos.try_mean_radius(),
15904            Ok(Distance::kilometers(6.2f64))
15905        );
15906    }
15907    #[test]
15908    fn test_spheroid_402() {
15909        assert!(DynOrigin::Deimos.try_polar_radius().is_err());
15910        assert!(DynOrigin::Deimos.try_equatorial_radius().is_err());
15911    }
15912    #[test]
15913    fn test_tri_axial_402() {
15914        assert_eq!(
15915            Deimos.radii(),
15916            (
15917                Distance::kilometers(7.8f64),
15918                Distance::kilometers(6f64),
15919                Distance::kilometers(5.1f64)
15920            )
15921        );
15922        assert_eq!(
15923            DynOrigin::Deimos.try_radii(),
15924            Ok((
15925                Distance::kilometers(7.8f64),
15926                Distance::kilometers(6f64),
15927                Distance::kilometers(5.1f64)
15928            ))
15929        );
15930    }
15931    #[test]
15932    fn test_origin_501() {
15933        assert_eq!(Io.id().0, 501i32);
15934        assert_eq!(Io.to_string(), "Io");
15935        assert_eq!(DynOrigin::from(Io), DynOrigin::Io);
15936    }
15937    #[test]
15938    fn test_point_mass_501() {
15939        assert_eq!(
15940            Io.gravitational_parameter(),
15941            GravitationalParameter::km3_per_s2(5959.915466180539f64)
15942        );
15943        assert_eq!(
15944            DynOrigin::Io.try_gravitational_parameter(),
15945            Ok(GravitationalParameter::km3_per_s2(5959.915466180539f64))
15946        );
15947    }
15948    #[test]
15949    fn test_mean_radius_501() {
15950        assert_eq!(Io.mean_radius(), Distance::kilometers(1821.49f64));
15951        assert_eq!(
15952            DynOrigin::Io.try_mean_radius(),
15953            Ok(Distance::kilometers(1821.49f64))
15954        );
15955    }
15956    #[test]
15957    fn test_spheroid_501() {
15958        assert!(DynOrigin::Io.try_polar_radius().is_err());
15959        assert!(DynOrigin::Io.try_equatorial_radius().is_err());
15960    }
15961    #[test]
15962    fn test_tri_axial_501() {
15963        assert_eq!(
15964            Io.radii(),
15965            (
15966                Distance::kilometers(1829.4f64),
15967                Distance::kilometers(1819.4f64),
15968                Distance::kilometers(1815.7f64)
15969            )
15970        );
15971        assert_eq!(
15972            DynOrigin::Io.try_radii(),
15973            Ok((
15974                Distance::kilometers(1829.4f64),
15975                Distance::kilometers(1819.4f64),
15976                Distance::kilometers(1815.7f64)
15977            ))
15978        );
15979    }
15980    #[test]
15981    fn test_origin_502() {
15982        assert_eq!(Europa.id().0, 502i32);
15983        assert_eq!(Europa.to_string(), "Europa");
15984        assert_eq!(DynOrigin::from(Europa), DynOrigin::Europa);
15985    }
15986    #[test]
15987    fn test_point_mass_502() {
15988        assert_eq!(
15989            Europa.gravitational_parameter(),
15990            GravitationalParameter::km3_per_s2(3202.712099607295f64)
15991        );
15992        assert_eq!(
15993            DynOrigin::Europa.try_gravitational_parameter(),
15994            Ok(GravitationalParameter::km3_per_s2(3202.712099607295f64))
15995        );
15996    }
15997    #[test]
15998    fn test_mean_radius_502() {
15999        assert_eq!(Europa.mean_radius(), Distance::kilometers(1560.8f64));
16000        assert_eq!(
16001            DynOrigin::Europa.try_mean_radius(),
16002            Ok(Distance::kilometers(1560.8f64))
16003        );
16004    }
16005    #[test]
16006    fn test_spheroid_502() {
16007        assert!(DynOrigin::Europa.try_polar_radius().is_err());
16008        assert!(DynOrigin::Europa.try_equatorial_radius().is_err());
16009    }
16010    #[test]
16011    fn test_tri_axial_502() {
16012        assert_eq!(
16013            Europa.radii(),
16014            (
16015                Distance::kilometers(1562.6f64),
16016                Distance::kilometers(1560.3f64),
16017                Distance::kilometers(1559.5f64)
16018            )
16019        );
16020        assert_eq!(
16021            DynOrigin::Europa.try_radii(),
16022            Ok((
16023                Distance::kilometers(1562.6f64),
16024                Distance::kilometers(1560.3f64),
16025                Distance::kilometers(1559.5f64)
16026            ))
16027        );
16028    }
16029    #[test]
16030    fn test_origin_503() {
16031        assert_eq!(Ganymede.id().0, 503i32);
16032        assert_eq!(Ganymede.to_string(), "Ganymede");
16033        assert_eq!(DynOrigin::from(Ganymede), DynOrigin::Ganymede);
16034    }
16035    #[test]
16036    fn test_point_mass_503() {
16037        assert_eq!(
16038            Ganymede.gravitational_parameter(),
16039            GravitationalParameter::km3_per_s2(9887.832752719638f64)
16040        );
16041        assert_eq!(
16042            DynOrigin::Ganymede.try_gravitational_parameter(),
16043            Ok(GravitationalParameter::km3_per_s2(9887.832752719638f64))
16044        );
16045    }
16046    #[test]
16047    fn test_mean_radius_503() {
16048        assert_eq!(Ganymede.mean_radius(), Distance::kilometers(2631.2f64));
16049        assert_eq!(
16050            DynOrigin::Ganymede.try_mean_radius(),
16051            Ok(Distance::kilometers(2631.2f64))
16052        );
16053    }
16054    #[test]
16055    fn test_spheroid_503() {
16056        assert_eq!(Ganymede.polar_radius(), Distance::kilometers(2631.2f64));
16057        assert_eq!(
16058            DynOrigin::Ganymede.try_polar_radius(),
16059            Ok(Distance::kilometers(2631.2f64))
16060        );
16061        assert_eq!(
16062            Ganymede.equatorial_radius(),
16063            Distance::kilometers(2631.2f64)
16064        );
16065        assert_eq!(
16066            DynOrigin::Ganymede.try_equatorial_radius(),
16067            Ok(Distance::kilometers(2631.2f64))
16068        );
16069    }
16070    #[test]
16071    fn test_tri_axial_503() {
16072        assert_eq!(
16073            Ganymede.radii(),
16074            (
16075                Distance::kilometers(2631.2f64),
16076                Distance::kilometers(2631.2f64),
16077                Distance::kilometers(2631.2f64)
16078            )
16079        );
16080        assert_eq!(
16081            DynOrigin::Ganymede.try_radii(),
16082            Ok((
16083                Distance::kilometers(2631.2f64),
16084                Distance::kilometers(2631.2f64),
16085                Distance::kilometers(2631.2f64)
16086            ))
16087        );
16088    }
16089    #[test]
16090    fn test_origin_504() {
16091        assert_eq!(Callisto.id().0, 504i32);
16092        assert_eq!(Callisto.to_string(), "Callisto");
16093        assert_eq!(DynOrigin::from(Callisto), DynOrigin::Callisto);
16094    }
16095    #[test]
16096    fn test_point_mass_504() {
16097        assert_eq!(
16098            Callisto.gravitational_parameter(),
16099            GravitationalParameter::km3_per_s2(7179.283402579837f64)
16100        );
16101        assert_eq!(
16102            DynOrigin::Callisto.try_gravitational_parameter(),
16103            Ok(GravitationalParameter::km3_per_s2(7179.283402579837f64))
16104        );
16105    }
16106    #[test]
16107    fn test_mean_radius_504() {
16108        assert_eq!(Callisto.mean_radius(), Distance::kilometers(2410.3f64));
16109        assert_eq!(
16110            DynOrigin::Callisto.try_mean_radius(),
16111            Ok(Distance::kilometers(2410.3f64))
16112        );
16113    }
16114    #[test]
16115    fn test_spheroid_504() {
16116        assert_eq!(Callisto.polar_radius(), Distance::kilometers(2410.3f64));
16117        assert_eq!(
16118            DynOrigin::Callisto.try_polar_radius(),
16119            Ok(Distance::kilometers(2410.3f64))
16120        );
16121        assert_eq!(
16122            Callisto.equatorial_radius(),
16123            Distance::kilometers(2410.3f64)
16124        );
16125        assert_eq!(
16126            DynOrigin::Callisto.try_equatorial_radius(),
16127            Ok(Distance::kilometers(2410.3f64))
16128        );
16129    }
16130    #[test]
16131    fn test_tri_axial_504() {
16132        assert_eq!(
16133            Callisto.radii(),
16134            (
16135                Distance::kilometers(2410.3f64),
16136                Distance::kilometers(2410.3f64),
16137                Distance::kilometers(2410.3f64)
16138            )
16139        );
16140        assert_eq!(
16141            DynOrigin::Callisto.try_radii(),
16142            Ok((
16143                Distance::kilometers(2410.3f64),
16144                Distance::kilometers(2410.3f64),
16145                Distance::kilometers(2410.3f64)
16146            ))
16147        );
16148    }
16149    #[test]
16150    fn test_origin_505() {
16151        assert_eq!(Amalthea.id().0, 505i32);
16152        assert_eq!(Amalthea.to_string(), "Amalthea");
16153        assert_eq!(DynOrigin::from(Amalthea), DynOrigin::Amalthea);
16154    }
16155    #[test]
16156    fn test_point_mass_505() {
16157        assert_eq!(
16158            Amalthea.gravitational_parameter(),
16159            GravitationalParameter::km3_per_s2(0.1645634534798259f64)
16160        );
16161        assert_eq!(
16162            DynOrigin::Amalthea.try_gravitational_parameter(),
16163            Ok(GravitationalParameter::km3_per_s2(0.1645634534798259f64))
16164        );
16165    }
16166    #[test]
16167    fn test_mean_radius_505() {
16168        assert_eq!(Amalthea.mean_radius(), Distance::kilometers(83.5f64));
16169        assert_eq!(
16170            DynOrigin::Amalthea.try_mean_radius(),
16171            Ok(Distance::kilometers(83.5f64))
16172        );
16173    }
16174    #[test]
16175    fn test_spheroid_505() {
16176        assert!(DynOrigin::Amalthea.try_polar_radius().is_err());
16177        assert!(DynOrigin::Amalthea.try_equatorial_radius().is_err());
16178    }
16179    #[test]
16180    fn test_tri_axial_505() {
16181        assert_eq!(
16182            Amalthea.radii(),
16183            (
16184                Distance::kilometers(125f64),
16185                Distance::kilometers(73f64),
16186                Distance::kilometers(64f64)
16187            )
16188        );
16189        assert_eq!(
16190            DynOrigin::Amalthea.try_radii(),
16191            Ok((
16192                Distance::kilometers(125f64),
16193                Distance::kilometers(73f64),
16194                Distance::kilometers(64f64)
16195            ))
16196        );
16197    }
16198    #[test]
16199    fn test_origin_506() {
16200        assert_eq!(Himalia.id().0, 506i32);
16201        assert_eq!(Himalia.to_string(), "Himalia");
16202        assert_eq!(DynOrigin::from(Himalia), DynOrigin::Himalia);
16203    }
16204    #[test]
16205    fn test_point_mass_506() {
16206        assert_eq!(
16207            Himalia.gravitational_parameter(),
16208            GravitationalParameter::km3_per_s2(0.1515524299611265f64)
16209        );
16210        assert_eq!(
16211            DynOrigin::Himalia.try_gravitational_parameter(),
16212            Ok(GravitationalParameter::km3_per_s2(0.1515524299611265f64))
16213        );
16214    }
16215    #[test]
16216    fn test_mean_radius_506() {
16217        assert_eq!(Himalia.mean_radius(), Distance::kilometers(85f64));
16218        assert_eq!(
16219            DynOrigin::Himalia.try_mean_radius(),
16220            Ok(Distance::kilometers(85f64))
16221        );
16222    }
16223    #[test]
16224    fn test_spheroid_506() {
16225        assert_eq!(Himalia.polar_radius(), Distance::kilometers(85f64));
16226        assert_eq!(
16227            DynOrigin::Himalia.try_polar_radius(),
16228            Ok(Distance::kilometers(85f64))
16229        );
16230        assert_eq!(Himalia.equatorial_radius(), Distance::kilometers(85f64));
16231        assert_eq!(
16232            DynOrigin::Himalia.try_equatorial_radius(),
16233            Ok(Distance::kilometers(85f64))
16234        );
16235    }
16236    #[test]
16237    fn test_tri_axial_506() {
16238        assert_eq!(
16239            Himalia.radii(),
16240            (
16241                Distance::kilometers(85f64),
16242                Distance::kilometers(85f64),
16243                Distance::kilometers(85f64)
16244            )
16245        );
16246        assert_eq!(
16247            DynOrigin::Himalia.try_radii(),
16248            Ok((
16249                Distance::kilometers(85f64),
16250                Distance::kilometers(85f64),
16251                Distance::kilometers(85f64)
16252            ))
16253        );
16254    }
16255    #[test]
16256    fn test_origin_507() {
16257        assert_eq!(Elara.id().0, 507i32);
16258        assert_eq!(Elara.to_string(), "Elara");
16259        assert_eq!(DynOrigin::from(Elara), DynOrigin::Elara);
16260    }
16261    #[test]
16262    fn test_point_mass_507() {
16263        assert!(DynOrigin::Elara.try_gravitational_parameter().is_err());
16264    }
16265    #[test]
16266    fn test_mean_radius_507() {
16267        assert_eq!(Elara.mean_radius(), Distance::kilometers(40f64));
16268        assert_eq!(
16269            DynOrigin::Elara.try_mean_radius(),
16270            Ok(Distance::kilometers(40f64))
16271        );
16272    }
16273    #[test]
16274    fn test_spheroid_507() {
16275        assert_eq!(Elara.polar_radius(), Distance::kilometers(40f64));
16276        assert_eq!(
16277            DynOrigin::Elara.try_polar_radius(),
16278            Ok(Distance::kilometers(40f64))
16279        );
16280        assert_eq!(Elara.equatorial_radius(), Distance::kilometers(40f64));
16281        assert_eq!(
16282            DynOrigin::Elara.try_equatorial_radius(),
16283            Ok(Distance::kilometers(40f64))
16284        );
16285    }
16286    #[test]
16287    fn test_tri_axial_507() {
16288        assert_eq!(
16289            Elara.radii(),
16290            (
16291                Distance::kilometers(40f64),
16292                Distance::kilometers(40f64),
16293                Distance::kilometers(40f64)
16294            )
16295        );
16296        assert_eq!(
16297            DynOrigin::Elara.try_radii(),
16298            Ok((
16299                Distance::kilometers(40f64),
16300                Distance::kilometers(40f64),
16301                Distance::kilometers(40f64)
16302            ))
16303        );
16304    }
16305    #[test]
16306    fn test_origin_508() {
16307        assert_eq!(Pasiphae.id().0, 508i32);
16308        assert_eq!(Pasiphae.to_string(), "Pasiphae");
16309        assert_eq!(DynOrigin::from(Pasiphae), DynOrigin::Pasiphae);
16310    }
16311    #[test]
16312    fn test_point_mass_508() {
16313        assert!(DynOrigin::Pasiphae.try_gravitational_parameter().is_err());
16314    }
16315    #[test]
16316    fn test_mean_radius_508() {
16317        assert_eq!(Pasiphae.mean_radius(), Distance::kilometers(18f64));
16318        assert_eq!(
16319            DynOrigin::Pasiphae.try_mean_radius(),
16320            Ok(Distance::kilometers(18f64))
16321        );
16322    }
16323    #[test]
16324    fn test_spheroid_508() {
16325        assert_eq!(Pasiphae.polar_radius(), Distance::kilometers(18f64));
16326        assert_eq!(
16327            DynOrigin::Pasiphae.try_polar_radius(),
16328            Ok(Distance::kilometers(18f64))
16329        );
16330        assert_eq!(Pasiphae.equatorial_radius(), Distance::kilometers(18f64));
16331        assert_eq!(
16332            DynOrigin::Pasiphae.try_equatorial_radius(),
16333            Ok(Distance::kilometers(18f64))
16334        );
16335    }
16336    #[test]
16337    fn test_tri_axial_508() {
16338        assert_eq!(
16339            Pasiphae.radii(),
16340            (
16341                Distance::kilometers(18f64),
16342                Distance::kilometers(18f64),
16343                Distance::kilometers(18f64)
16344            )
16345        );
16346        assert_eq!(
16347            DynOrigin::Pasiphae.try_radii(),
16348            Ok((
16349                Distance::kilometers(18f64),
16350                Distance::kilometers(18f64),
16351                Distance::kilometers(18f64)
16352            ))
16353        );
16354    }
16355    #[test]
16356    fn test_origin_509() {
16357        assert_eq!(Sinope.id().0, 509i32);
16358        assert_eq!(Sinope.to_string(), "Sinope");
16359        assert_eq!(DynOrigin::from(Sinope), DynOrigin::Sinope);
16360    }
16361    #[test]
16362    fn test_point_mass_509() {
16363        assert!(DynOrigin::Sinope.try_gravitational_parameter().is_err());
16364    }
16365    #[test]
16366    fn test_mean_radius_509() {
16367        assert_eq!(Sinope.mean_radius(), Distance::kilometers(14f64));
16368        assert_eq!(
16369            DynOrigin::Sinope.try_mean_radius(),
16370            Ok(Distance::kilometers(14f64))
16371        );
16372    }
16373    #[test]
16374    fn test_spheroid_509() {
16375        assert_eq!(Sinope.polar_radius(), Distance::kilometers(14f64));
16376        assert_eq!(
16377            DynOrigin::Sinope.try_polar_radius(),
16378            Ok(Distance::kilometers(14f64))
16379        );
16380        assert_eq!(Sinope.equatorial_radius(), Distance::kilometers(14f64));
16381        assert_eq!(
16382            DynOrigin::Sinope.try_equatorial_radius(),
16383            Ok(Distance::kilometers(14f64))
16384        );
16385    }
16386    #[test]
16387    fn test_tri_axial_509() {
16388        assert_eq!(
16389            Sinope.radii(),
16390            (
16391                Distance::kilometers(14f64),
16392                Distance::kilometers(14f64),
16393                Distance::kilometers(14f64)
16394            )
16395        );
16396        assert_eq!(
16397            DynOrigin::Sinope.try_radii(),
16398            Ok((
16399                Distance::kilometers(14f64),
16400                Distance::kilometers(14f64),
16401                Distance::kilometers(14f64)
16402            ))
16403        );
16404    }
16405    #[test]
16406    fn test_origin_510() {
16407        assert_eq!(Lysithea.id().0, 510i32);
16408        assert_eq!(Lysithea.to_string(), "Lysithea");
16409        assert_eq!(DynOrigin::from(Lysithea), DynOrigin::Lysithea);
16410    }
16411    #[test]
16412    fn test_point_mass_510() {
16413        assert!(DynOrigin::Lysithea.try_gravitational_parameter().is_err());
16414    }
16415    #[test]
16416    fn test_mean_radius_510() {
16417        assert_eq!(Lysithea.mean_radius(), Distance::kilometers(12f64));
16418        assert_eq!(
16419            DynOrigin::Lysithea.try_mean_radius(),
16420            Ok(Distance::kilometers(12f64))
16421        );
16422    }
16423    #[test]
16424    fn test_spheroid_510() {
16425        assert_eq!(Lysithea.polar_radius(), Distance::kilometers(12f64));
16426        assert_eq!(
16427            DynOrigin::Lysithea.try_polar_radius(),
16428            Ok(Distance::kilometers(12f64))
16429        );
16430        assert_eq!(Lysithea.equatorial_radius(), Distance::kilometers(12f64));
16431        assert_eq!(
16432            DynOrigin::Lysithea.try_equatorial_radius(),
16433            Ok(Distance::kilometers(12f64))
16434        );
16435    }
16436    #[test]
16437    fn test_tri_axial_510() {
16438        assert_eq!(
16439            Lysithea.radii(),
16440            (
16441                Distance::kilometers(12f64),
16442                Distance::kilometers(12f64),
16443                Distance::kilometers(12f64)
16444            )
16445        );
16446        assert_eq!(
16447            DynOrigin::Lysithea.try_radii(),
16448            Ok((
16449                Distance::kilometers(12f64),
16450                Distance::kilometers(12f64),
16451                Distance::kilometers(12f64)
16452            ))
16453        );
16454    }
16455    #[test]
16456    fn test_origin_511() {
16457        assert_eq!(Carme.id().0, 511i32);
16458        assert_eq!(Carme.to_string(), "Carme");
16459        assert_eq!(DynOrigin::from(Carme), DynOrigin::Carme);
16460    }
16461    #[test]
16462    fn test_point_mass_511() {
16463        assert!(DynOrigin::Carme.try_gravitational_parameter().is_err());
16464    }
16465    #[test]
16466    fn test_mean_radius_511() {
16467        assert_eq!(Carme.mean_radius(), Distance::kilometers(15f64));
16468        assert_eq!(
16469            DynOrigin::Carme.try_mean_radius(),
16470            Ok(Distance::kilometers(15f64))
16471        );
16472    }
16473    #[test]
16474    fn test_spheroid_511() {
16475        assert_eq!(Carme.polar_radius(), Distance::kilometers(15f64));
16476        assert_eq!(
16477            DynOrigin::Carme.try_polar_radius(),
16478            Ok(Distance::kilometers(15f64))
16479        );
16480        assert_eq!(Carme.equatorial_radius(), Distance::kilometers(15f64));
16481        assert_eq!(
16482            DynOrigin::Carme.try_equatorial_radius(),
16483            Ok(Distance::kilometers(15f64))
16484        );
16485    }
16486    #[test]
16487    fn test_tri_axial_511() {
16488        assert_eq!(
16489            Carme.radii(),
16490            (
16491                Distance::kilometers(15f64),
16492                Distance::kilometers(15f64),
16493                Distance::kilometers(15f64)
16494            )
16495        );
16496        assert_eq!(
16497            DynOrigin::Carme.try_radii(),
16498            Ok((
16499                Distance::kilometers(15f64),
16500                Distance::kilometers(15f64),
16501                Distance::kilometers(15f64)
16502            ))
16503        );
16504    }
16505    #[test]
16506    fn test_origin_512() {
16507        assert_eq!(Ananke.id().0, 512i32);
16508        assert_eq!(Ananke.to_string(), "Ananke");
16509        assert_eq!(DynOrigin::from(Ananke), DynOrigin::Ananke);
16510    }
16511    #[test]
16512    fn test_point_mass_512() {
16513        assert!(DynOrigin::Ananke.try_gravitational_parameter().is_err());
16514    }
16515    #[test]
16516    fn test_mean_radius_512() {
16517        assert_eq!(Ananke.mean_radius(), Distance::kilometers(10f64));
16518        assert_eq!(
16519            DynOrigin::Ananke.try_mean_radius(),
16520            Ok(Distance::kilometers(10f64))
16521        );
16522    }
16523    #[test]
16524    fn test_spheroid_512() {
16525        assert_eq!(Ananke.polar_radius(), Distance::kilometers(10f64));
16526        assert_eq!(
16527            DynOrigin::Ananke.try_polar_radius(),
16528            Ok(Distance::kilometers(10f64))
16529        );
16530        assert_eq!(Ananke.equatorial_radius(), Distance::kilometers(10f64));
16531        assert_eq!(
16532            DynOrigin::Ananke.try_equatorial_radius(),
16533            Ok(Distance::kilometers(10f64))
16534        );
16535    }
16536    #[test]
16537    fn test_tri_axial_512() {
16538        assert_eq!(
16539            Ananke.radii(),
16540            (
16541                Distance::kilometers(10f64),
16542                Distance::kilometers(10f64),
16543                Distance::kilometers(10f64)
16544            )
16545        );
16546        assert_eq!(
16547            DynOrigin::Ananke.try_radii(),
16548            Ok((
16549                Distance::kilometers(10f64),
16550                Distance::kilometers(10f64),
16551                Distance::kilometers(10f64)
16552            ))
16553        );
16554    }
16555    #[test]
16556    fn test_origin_513() {
16557        assert_eq!(Leda.id().0, 513i32);
16558        assert_eq!(Leda.to_string(), "Leda");
16559        assert_eq!(DynOrigin::from(Leda), DynOrigin::Leda);
16560    }
16561    #[test]
16562    fn test_point_mass_513() {
16563        assert!(DynOrigin::Leda.try_gravitational_parameter().is_err());
16564    }
16565    #[test]
16566    fn test_mean_radius_513() {
16567        assert_eq!(Leda.mean_radius(), Distance::kilometers(5f64));
16568        assert_eq!(
16569            DynOrigin::Leda.try_mean_radius(),
16570            Ok(Distance::kilometers(5f64))
16571        );
16572    }
16573    #[test]
16574    fn test_spheroid_513() {
16575        assert_eq!(Leda.polar_radius(), Distance::kilometers(5f64));
16576        assert_eq!(
16577            DynOrigin::Leda.try_polar_radius(),
16578            Ok(Distance::kilometers(5f64))
16579        );
16580        assert_eq!(Leda.equatorial_radius(), Distance::kilometers(5f64));
16581        assert_eq!(
16582            DynOrigin::Leda.try_equatorial_radius(),
16583            Ok(Distance::kilometers(5f64))
16584        );
16585    }
16586    #[test]
16587    fn test_tri_axial_513() {
16588        assert_eq!(
16589            Leda.radii(),
16590            (
16591                Distance::kilometers(5f64),
16592                Distance::kilometers(5f64),
16593                Distance::kilometers(5f64)
16594            )
16595        );
16596        assert_eq!(
16597            DynOrigin::Leda.try_radii(),
16598            Ok((
16599                Distance::kilometers(5f64),
16600                Distance::kilometers(5f64),
16601                Distance::kilometers(5f64)
16602            ))
16603        );
16604    }
16605    #[test]
16606    fn test_origin_514() {
16607        assert_eq!(Thebe.id().0, 514i32);
16608        assert_eq!(Thebe.to_string(), "Thebe");
16609        assert_eq!(DynOrigin::from(Thebe), DynOrigin::Thebe);
16610    }
16611    #[test]
16612    fn test_point_mass_514() {
16613        assert_eq!(
16614            Thebe.gravitational_parameter(),
16615            GravitationalParameter::km3_per_s2(0.030148f64)
16616        );
16617        assert_eq!(
16618            DynOrigin::Thebe.try_gravitational_parameter(),
16619            Ok(GravitationalParameter::km3_per_s2(0.030148f64))
16620        );
16621    }
16622    #[test]
16623    fn test_mean_radius_514() {
16624        assert_eq!(Thebe.mean_radius(), Distance::kilometers(49.3f64));
16625        assert_eq!(
16626            DynOrigin::Thebe.try_mean_radius(),
16627            Ok(Distance::kilometers(49.3f64))
16628        );
16629    }
16630    #[test]
16631    fn test_spheroid_514() {
16632        assert!(DynOrigin::Thebe.try_polar_radius().is_err());
16633        assert!(DynOrigin::Thebe.try_equatorial_radius().is_err());
16634    }
16635    #[test]
16636    fn test_tri_axial_514() {
16637        assert_eq!(
16638            Thebe.radii(),
16639            (
16640                Distance::kilometers(58f64),
16641                Distance::kilometers(49f64),
16642                Distance::kilometers(42f64)
16643            )
16644        );
16645        assert_eq!(
16646            DynOrigin::Thebe.try_radii(),
16647            Ok((
16648                Distance::kilometers(58f64),
16649                Distance::kilometers(49f64),
16650                Distance::kilometers(42f64)
16651            ))
16652        );
16653    }
16654    #[test]
16655    fn test_origin_515() {
16656        assert_eq!(Adrastea.id().0, 515i32);
16657        assert_eq!(Adrastea.to_string(), "Adrastea");
16658        assert_eq!(DynOrigin::from(Adrastea), DynOrigin::Adrastea);
16659    }
16660    #[test]
16661    fn test_point_mass_515() {
16662        assert_eq!(
16663            Adrastea.gravitational_parameter(),
16664            GravitationalParameter::km3_per_s2(0.000139f64)
16665        );
16666        assert_eq!(
16667            DynOrigin::Adrastea.try_gravitational_parameter(),
16668            Ok(GravitationalParameter::km3_per_s2(0.000139f64))
16669        );
16670    }
16671    #[test]
16672    fn test_mean_radius_515() {
16673        assert_eq!(Adrastea.mean_radius(), Distance::kilometers(8.2f64));
16674        assert_eq!(
16675            DynOrigin::Adrastea.try_mean_radius(),
16676            Ok(Distance::kilometers(8.2f64))
16677        );
16678    }
16679    #[test]
16680    fn test_spheroid_515() {
16681        assert!(DynOrigin::Adrastea.try_polar_radius().is_err());
16682        assert!(DynOrigin::Adrastea.try_equatorial_radius().is_err());
16683    }
16684    #[test]
16685    fn test_tri_axial_515() {
16686        assert_eq!(
16687            Adrastea.radii(),
16688            (
16689                Distance::kilometers(10f64),
16690                Distance::kilometers(8f64),
16691                Distance::kilometers(7f64)
16692            )
16693        );
16694        assert_eq!(
16695            DynOrigin::Adrastea.try_radii(),
16696            Ok((
16697                Distance::kilometers(10f64),
16698                Distance::kilometers(8f64),
16699                Distance::kilometers(7f64)
16700            ))
16701        );
16702    }
16703    #[test]
16704    fn test_origin_516() {
16705        assert_eq!(Metis.id().0, 516i32);
16706        assert_eq!(Metis.to_string(), "Metis");
16707        assert_eq!(DynOrigin::from(Metis), DynOrigin::Metis);
16708    }
16709    #[test]
16710    fn test_point_mass_516() {
16711        assert_eq!(
16712            Metis.gravitational_parameter(),
16713            GravitationalParameter::km3_per_s2(0.002501f64)
16714        );
16715        assert_eq!(
16716            DynOrigin::Metis.try_gravitational_parameter(),
16717            Ok(GravitationalParameter::km3_per_s2(0.002501f64))
16718        );
16719    }
16720    #[test]
16721    fn test_mean_radius_516() {
16722        assert_eq!(Metis.mean_radius(), Distance::kilometers(21.5f64));
16723        assert_eq!(
16724            DynOrigin::Metis.try_mean_radius(),
16725            Ok(Distance::kilometers(21.5f64))
16726        );
16727    }
16728    #[test]
16729    fn test_spheroid_516() {
16730        assert!(DynOrigin::Metis.try_polar_radius().is_err());
16731        assert!(DynOrigin::Metis.try_equatorial_radius().is_err());
16732    }
16733    #[test]
16734    fn test_tri_axial_516() {
16735        assert_eq!(
16736            Metis.radii(),
16737            (
16738                Distance::kilometers(30f64),
16739                Distance::kilometers(20f64),
16740                Distance::kilometers(17f64)
16741            )
16742        );
16743        assert_eq!(
16744            DynOrigin::Metis.try_radii(),
16745            Ok((
16746                Distance::kilometers(30f64),
16747                Distance::kilometers(20f64),
16748                Distance::kilometers(17f64)
16749            ))
16750        );
16751    }
16752    #[test]
16753    fn test_origin_517() {
16754        assert_eq!(Callirrhoe.id().0, 517i32);
16755        assert_eq!(Callirrhoe.to_string(), "Callirrhoe");
16756        assert_eq!(DynOrigin::from(Callirrhoe), DynOrigin::Callirrhoe);
16757    }
16758    #[test]
16759    fn test_point_mass_517() {
16760        assert!(DynOrigin::Callirrhoe.try_gravitational_parameter().is_err());
16761    }
16762    #[test]
16763    fn test_mean_radius_517() {
16764        assert!(DynOrigin::Callirrhoe.try_mean_radius().is_err());
16765    }
16766    #[test]
16767    fn test_tri_axial_517() {
16768        assert!(DynOrigin::Callirrhoe.try_radii().is_err());
16769    }
16770    #[test]
16771    fn test_spheroid_517() {
16772        assert!(DynOrigin::Callirrhoe.try_polar_radius().is_err());
16773        assert!(DynOrigin::Callirrhoe.try_equatorial_radius().is_err());
16774    }
16775    #[test]
16776    fn test_origin_518() {
16777        assert_eq!(Themisto.id().0, 518i32);
16778        assert_eq!(Themisto.to_string(), "Themisto");
16779        assert_eq!(DynOrigin::from(Themisto), DynOrigin::Themisto);
16780    }
16781    #[test]
16782    fn test_point_mass_518() {
16783        assert!(DynOrigin::Themisto.try_gravitational_parameter().is_err());
16784    }
16785    #[test]
16786    fn test_mean_radius_518() {
16787        assert!(DynOrigin::Themisto.try_mean_radius().is_err());
16788    }
16789    #[test]
16790    fn test_tri_axial_518() {
16791        assert!(DynOrigin::Themisto.try_radii().is_err());
16792    }
16793    #[test]
16794    fn test_spheroid_518() {
16795        assert!(DynOrigin::Themisto.try_polar_radius().is_err());
16796        assert!(DynOrigin::Themisto.try_equatorial_radius().is_err());
16797    }
16798    #[test]
16799    fn test_origin_519() {
16800        assert_eq!(Magaclite.id().0, 519i32);
16801        assert_eq!(Magaclite.to_string(), "Magaclite");
16802        assert_eq!(DynOrigin::from(Magaclite), DynOrigin::Magaclite);
16803    }
16804    #[test]
16805    fn test_point_mass_519() {
16806        assert!(DynOrigin::Magaclite.try_gravitational_parameter().is_err());
16807    }
16808    #[test]
16809    fn test_mean_radius_519() {
16810        assert!(DynOrigin::Magaclite.try_mean_radius().is_err());
16811    }
16812    #[test]
16813    fn test_tri_axial_519() {
16814        assert!(DynOrigin::Magaclite.try_radii().is_err());
16815    }
16816    #[test]
16817    fn test_spheroid_519() {
16818        assert!(DynOrigin::Magaclite.try_polar_radius().is_err());
16819        assert!(DynOrigin::Magaclite.try_equatorial_radius().is_err());
16820    }
16821    #[test]
16822    fn test_origin_520() {
16823        assert_eq!(Taygete.id().0, 520i32);
16824        assert_eq!(Taygete.to_string(), "Taygete");
16825        assert_eq!(DynOrigin::from(Taygete), DynOrigin::Taygete);
16826    }
16827    #[test]
16828    fn test_point_mass_520() {
16829        assert!(DynOrigin::Taygete.try_gravitational_parameter().is_err());
16830    }
16831    #[test]
16832    fn test_mean_radius_520() {
16833        assert!(DynOrigin::Taygete.try_mean_radius().is_err());
16834    }
16835    #[test]
16836    fn test_tri_axial_520() {
16837        assert!(DynOrigin::Taygete.try_radii().is_err());
16838    }
16839    #[test]
16840    fn test_spheroid_520() {
16841        assert!(DynOrigin::Taygete.try_polar_radius().is_err());
16842        assert!(DynOrigin::Taygete.try_equatorial_radius().is_err());
16843    }
16844    #[test]
16845    fn test_origin_521() {
16846        assert_eq!(Chaldene.id().0, 521i32);
16847        assert_eq!(Chaldene.to_string(), "Chaldene");
16848        assert_eq!(DynOrigin::from(Chaldene), DynOrigin::Chaldene);
16849    }
16850    #[test]
16851    fn test_point_mass_521() {
16852        assert!(DynOrigin::Chaldene.try_gravitational_parameter().is_err());
16853    }
16854    #[test]
16855    fn test_mean_radius_521() {
16856        assert!(DynOrigin::Chaldene.try_mean_radius().is_err());
16857    }
16858    #[test]
16859    fn test_tri_axial_521() {
16860        assert!(DynOrigin::Chaldene.try_radii().is_err());
16861    }
16862    #[test]
16863    fn test_spheroid_521() {
16864        assert!(DynOrigin::Chaldene.try_polar_radius().is_err());
16865        assert!(DynOrigin::Chaldene.try_equatorial_radius().is_err());
16866    }
16867    #[test]
16868    fn test_origin_522() {
16869        assert_eq!(Harpalyke.id().0, 522i32);
16870        assert_eq!(Harpalyke.to_string(), "Harpalyke");
16871        assert_eq!(DynOrigin::from(Harpalyke), DynOrigin::Harpalyke);
16872    }
16873    #[test]
16874    fn test_point_mass_522() {
16875        assert!(DynOrigin::Harpalyke.try_gravitational_parameter().is_err());
16876    }
16877    #[test]
16878    fn test_mean_radius_522() {
16879        assert!(DynOrigin::Harpalyke.try_mean_radius().is_err());
16880    }
16881    #[test]
16882    fn test_tri_axial_522() {
16883        assert!(DynOrigin::Harpalyke.try_radii().is_err());
16884    }
16885    #[test]
16886    fn test_spheroid_522() {
16887        assert!(DynOrigin::Harpalyke.try_polar_radius().is_err());
16888        assert!(DynOrigin::Harpalyke.try_equatorial_radius().is_err());
16889    }
16890    #[test]
16891    fn test_origin_523() {
16892        assert_eq!(Kalyke.id().0, 523i32);
16893        assert_eq!(Kalyke.to_string(), "Kalyke");
16894        assert_eq!(DynOrigin::from(Kalyke), DynOrigin::Kalyke);
16895    }
16896    #[test]
16897    fn test_point_mass_523() {
16898        assert!(DynOrigin::Kalyke.try_gravitational_parameter().is_err());
16899    }
16900    #[test]
16901    fn test_mean_radius_523() {
16902        assert!(DynOrigin::Kalyke.try_mean_radius().is_err());
16903    }
16904    #[test]
16905    fn test_tri_axial_523() {
16906        assert!(DynOrigin::Kalyke.try_radii().is_err());
16907    }
16908    #[test]
16909    fn test_spheroid_523() {
16910        assert!(DynOrigin::Kalyke.try_polar_radius().is_err());
16911        assert!(DynOrigin::Kalyke.try_equatorial_radius().is_err());
16912    }
16913    #[test]
16914    fn test_origin_524() {
16915        assert_eq!(Iocaste.id().0, 524i32);
16916        assert_eq!(Iocaste.to_string(), "Iocaste");
16917        assert_eq!(DynOrigin::from(Iocaste), DynOrigin::Iocaste);
16918    }
16919    #[test]
16920    fn test_point_mass_524() {
16921        assert!(DynOrigin::Iocaste.try_gravitational_parameter().is_err());
16922    }
16923    #[test]
16924    fn test_mean_radius_524() {
16925        assert!(DynOrigin::Iocaste.try_mean_radius().is_err());
16926    }
16927    #[test]
16928    fn test_tri_axial_524() {
16929        assert!(DynOrigin::Iocaste.try_radii().is_err());
16930    }
16931    #[test]
16932    fn test_spheroid_524() {
16933        assert!(DynOrigin::Iocaste.try_polar_radius().is_err());
16934        assert!(DynOrigin::Iocaste.try_equatorial_radius().is_err());
16935    }
16936    #[test]
16937    fn test_origin_525() {
16938        assert_eq!(Erinome.id().0, 525i32);
16939        assert_eq!(Erinome.to_string(), "Erinome");
16940        assert_eq!(DynOrigin::from(Erinome), DynOrigin::Erinome);
16941    }
16942    #[test]
16943    fn test_point_mass_525() {
16944        assert!(DynOrigin::Erinome.try_gravitational_parameter().is_err());
16945    }
16946    #[test]
16947    fn test_mean_radius_525() {
16948        assert!(DynOrigin::Erinome.try_mean_radius().is_err());
16949    }
16950    #[test]
16951    fn test_tri_axial_525() {
16952        assert!(DynOrigin::Erinome.try_radii().is_err());
16953    }
16954    #[test]
16955    fn test_spheroid_525() {
16956        assert!(DynOrigin::Erinome.try_polar_radius().is_err());
16957        assert!(DynOrigin::Erinome.try_equatorial_radius().is_err());
16958    }
16959    #[test]
16960    fn test_origin_526() {
16961        assert_eq!(Isonoe.id().0, 526i32);
16962        assert_eq!(Isonoe.to_string(), "Isonoe");
16963        assert_eq!(DynOrigin::from(Isonoe), DynOrigin::Isonoe);
16964    }
16965    #[test]
16966    fn test_point_mass_526() {
16967        assert!(DynOrigin::Isonoe.try_gravitational_parameter().is_err());
16968    }
16969    #[test]
16970    fn test_mean_radius_526() {
16971        assert!(DynOrigin::Isonoe.try_mean_radius().is_err());
16972    }
16973    #[test]
16974    fn test_tri_axial_526() {
16975        assert!(DynOrigin::Isonoe.try_radii().is_err());
16976    }
16977    #[test]
16978    fn test_spheroid_526() {
16979        assert!(DynOrigin::Isonoe.try_polar_radius().is_err());
16980        assert!(DynOrigin::Isonoe.try_equatorial_radius().is_err());
16981    }
16982    #[test]
16983    fn test_origin_527() {
16984        assert_eq!(Praxidike.id().0, 527i32);
16985        assert_eq!(Praxidike.to_string(), "Praxidike");
16986        assert_eq!(DynOrigin::from(Praxidike), DynOrigin::Praxidike);
16987    }
16988    #[test]
16989    fn test_point_mass_527() {
16990        assert!(DynOrigin::Praxidike.try_gravitational_parameter().is_err());
16991    }
16992    #[test]
16993    fn test_mean_radius_527() {
16994        assert!(DynOrigin::Praxidike.try_mean_radius().is_err());
16995    }
16996    #[test]
16997    fn test_tri_axial_527() {
16998        assert!(DynOrigin::Praxidike.try_radii().is_err());
16999    }
17000    #[test]
17001    fn test_spheroid_527() {
17002        assert!(DynOrigin::Praxidike.try_polar_radius().is_err());
17003        assert!(DynOrigin::Praxidike.try_equatorial_radius().is_err());
17004    }
17005    #[test]
17006    fn test_origin_528() {
17007        assert_eq!(Autonoe.id().0, 528i32);
17008        assert_eq!(Autonoe.to_string(), "Autonoe");
17009        assert_eq!(DynOrigin::from(Autonoe), DynOrigin::Autonoe);
17010    }
17011    #[test]
17012    fn test_point_mass_528() {
17013        assert!(DynOrigin::Autonoe.try_gravitational_parameter().is_err());
17014    }
17015    #[test]
17016    fn test_mean_radius_528() {
17017        assert!(DynOrigin::Autonoe.try_mean_radius().is_err());
17018    }
17019    #[test]
17020    fn test_tri_axial_528() {
17021        assert!(DynOrigin::Autonoe.try_radii().is_err());
17022    }
17023    #[test]
17024    fn test_spheroid_528() {
17025        assert!(DynOrigin::Autonoe.try_polar_radius().is_err());
17026        assert!(DynOrigin::Autonoe.try_equatorial_radius().is_err());
17027    }
17028    #[test]
17029    fn test_origin_529() {
17030        assert_eq!(Thyone.id().0, 529i32);
17031        assert_eq!(Thyone.to_string(), "Thyone");
17032        assert_eq!(DynOrigin::from(Thyone), DynOrigin::Thyone);
17033    }
17034    #[test]
17035    fn test_point_mass_529() {
17036        assert!(DynOrigin::Thyone.try_gravitational_parameter().is_err());
17037    }
17038    #[test]
17039    fn test_mean_radius_529() {
17040        assert!(DynOrigin::Thyone.try_mean_radius().is_err());
17041    }
17042    #[test]
17043    fn test_tri_axial_529() {
17044        assert!(DynOrigin::Thyone.try_radii().is_err());
17045    }
17046    #[test]
17047    fn test_spheroid_529() {
17048        assert!(DynOrigin::Thyone.try_polar_radius().is_err());
17049        assert!(DynOrigin::Thyone.try_equatorial_radius().is_err());
17050    }
17051    #[test]
17052    fn test_origin_530() {
17053        assert_eq!(Hermippe.id().0, 530i32);
17054        assert_eq!(Hermippe.to_string(), "Hermippe");
17055        assert_eq!(DynOrigin::from(Hermippe), DynOrigin::Hermippe);
17056    }
17057    #[test]
17058    fn test_point_mass_530() {
17059        assert!(DynOrigin::Hermippe.try_gravitational_parameter().is_err());
17060    }
17061    #[test]
17062    fn test_mean_radius_530() {
17063        assert!(DynOrigin::Hermippe.try_mean_radius().is_err());
17064    }
17065    #[test]
17066    fn test_tri_axial_530() {
17067        assert!(DynOrigin::Hermippe.try_radii().is_err());
17068    }
17069    #[test]
17070    fn test_spheroid_530() {
17071        assert!(DynOrigin::Hermippe.try_polar_radius().is_err());
17072        assert!(DynOrigin::Hermippe.try_equatorial_radius().is_err());
17073    }
17074    #[test]
17075    fn test_origin_531() {
17076        assert_eq!(Aitne.id().0, 531i32);
17077        assert_eq!(Aitne.to_string(), "Aitne");
17078        assert_eq!(DynOrigin::from(Aitne), DynOrigin::Aitne);
17079    }
17080    #[test]
17081    fn test_point_mass_531() {
17082        assert!(DynOrigin::Aitne.try_gravitational_parameter().is_err());
17083    }
17084    #[test]
17085    fn test_mean_radius_531() {
17086        assert!(DynOrigin::Aitne.try_mean_radius().is_err());
17087    }
17088    #[test]
17089    fn test_tri_axial_531() {
17090        assert!(DynOrigin::Aitne.try_radii().is_err());
17091    }
17092    #[test]
17093    fn test_spheroid_531() {
17094        assert!(DynOrigin::Aitne.try_polar_radius().is_err());
17095        assert!(DynOrigin::Aitne.try_equatorial_radius().is_err());
17096    }
17097    #[test]
17098    fn test_origin_532() {
17099        assert_eq!(Eurydome.id().0, 532i32);
17100        assert_eq!(Eurydome.to_string(), "Eurydome");
17101        assert_eq!(DynOrigin::from(Eurydome), DynOrigin::Eurydome);
17102    }
17103    #[test]
17104    fn test_point_mass_532() {
17105        assert!(DynOrigin::Eurydome.try_gravitational_parameter().is_err());
17106    }
17107    #[test]
17108    fn test_mean_radius_532() {
17109        assert!(DynOrigin::Eurydome.try_mean_radius().is_err());
17110    }
17111    #[test]
17112    fn test_tri_axial_532() {
17113        assert!(DynOrigin::Eurydome.try_radii().is_err());
17114    }
17115    #[test]
17116    fn test_spheroid_532() {
17117        assert!(DynOrigin::Eurydome.try_polar_radius().is_err());
17118        assert!(DynOrigin::Eurydome.try_equatorial_radius().is_err());
17119    }
17120    #[test]
17121    fn test_origin_533() {
17122        assert_eq!(Euanthe.id().0, 533i32);
17123        assert_eq!(Euanthe.to_string(), "Euanthe");
17124        assert_eq!(DynOrigin::from(Euanthe), DynOrigin::Euanthe);
17125    }
17126    #[test]
17127    fn test_point_mass_533() {
17128        assert!(DynOrigin::Euanthe.try_gravitational_parameter().is_err());
17129    }
17130    #[test]
17131    fn test_mean_radius_533() {
17132        assert!(DynOrigin::Euanthe.try_mean_radius().is_err());
17133    }
17134    #[test]
17135    fn test_tri_axial_533() {
17136        assert!(DynOrigin::Euanthe.try_radii().is_err());
17137    }
17138    #[test]
17139    fn test_spheroid_533() {
17140        assert!(DynOrigin::Euanthe.try_polar_radius().is_err());
17141        assert!(DynOrigin::Euanthe.try_equatorial_radius().is_err());
17142    }
17143    #[test]
17144    fn test_origin_534() {
17145        assert_eq!(Euporie.id().0, 534i32);
17146        assert_eq!(Euporie.to_string(), "Euporie");
17147        assert_eq!(DynOrigin::from(Euporie), DynOrigin::Euporie);
17148    }
17149    #[test]
17150    fn test_point_mass_534() {
17151        assert!(DynOrigin::Euporie.try_gravitational_parameter().is_err());
17152    }
17153    #[test]
17154    fn test_mean_radius_534() {
17155        assert!(DynOrigin::Euporie.try_mean_radius().is_err());
17156    }
17157    #[test]
17158    fn test_tri_axial_534() {
17159        assert!(DynOrigin::Euporie.try_radii().is_err());
17160    }
17161    #[test]
17162    fn test_spheroid_534() {
17163        assert!(DynOrigin::Euporie.try_polar_radius().is_err());
17164        assert!(DynOrigin::Euporie.try_equatorial_radius().is_err());
17165    }
17166    #[test]
17167    fn test_origin_535() {
17168        assert_eq!(Orthosie.id().0, 535i32);
17169        assert_eq!(Orthosie.to_string(), "Orthosie");
17170        assert_eq!(DynOrigin::from(Orthosie), DynOrigin::Orthosie);
17171    }
17172    #[test]
17173    fn test_point_mass_535() {
17174        assert!(DynOrigin::Orthosie.try_gravitational_parameter().is_err());
17175    }
17176    #[test]
17177    fn test_mean_radius_535() {
17178        assert!(DynOrigin::Orthosie.try_mean_radius().is_err());
17179    }
17180    #[test]
17181    fn test_tri_axial_535() {
17182        assert!(DynOrigin::Orthosie.try_radii().is_err());
17183    }
17184    #[test]
17185    fn test_spheroid_535() {
17186        assert!(DynOrigin::Orthosie.try_polar_radius().is_err());
17187        assert!(DynOrigin::Orthosie.try_equatorial_radius().is_err());
17188    }
17189    #[test]
17190    fn test_origin_536() {
17191        assert_eq!(Sponde.id().0, 536i32);
17192        assert_eq!(Sponde.to_string(), "Sponde");
17193        assert_eq!(DynOrigin::from(Sponde), DynOrigin::Sponde);
17194    }
17195    #[test]
17196    fn test_point_mass_536() {
17197        assert!(DynOrigin::Sponde.try_gravitational_parameter().is_err());
17198    }
17199    #[test]
17200    fn test_mean_radius_536() {
17201        assert!(DynOrigin::Sponde.try_mean_radius().is_err());
17202    }
17203    #[test]
17204    fn test_tri_axial_536() {
17205        assert!(DynOrigin::Sponde.try_radii().is_err());
17206    }
17207    #[test]
17208    fn test_spheroid_536() {
17209        assert!(DynOrigin::Sponde.try_polar_radius().is_err());
17210        assert!(DynOrigin::Sponde.try_equatorial_radius().is_err());
17211    }
17212    #[test]
17213    fn test_origin_537() {
17214        assert_eq!(Kale.id().0, 537i32);
17215        assert_eq!(Kale.to_string(), "Kale");
17216        assert_eq!(DynOrigin::from(Kale), DynOrigin::Kale);
17217    }
17218    #[test]
17219    fn test_point_mass_537() {
17220        assert!(DynOrigin::Kale.try_gravitational_parameter().is_err());
17221    }
17222    #[test]
17223    fn test_mean_radius_537() {
17224        assert!(DynOrigin::Kale.try_mean_radius().is_err());
17225    }
17226    #[test]
17227    fn test_tri_axial_537() {
17228        assert!(DynOrigin::Kale.try_radii().is_err());
17229    }
17230    #[test]
17231    fn test_spheroid_537() {
17232        assert!(DynOrigin::Kale.try_polar_radius().is_err());
17233        assert!(DynOrigin::Kale.try_equatorial_radius().is_err());
17234    }
17235    #[test]
17236    fn test_origin_538() {
17237        assert_eq!(Pasithee.id().0, 538i32);
17238        assert_eq!(Pasithee.to_string(), "Pasithee");
17239        assert_eq!(DynOrigin::from(Pasithee), DynOrigin::Pasithee);
17240    }
17241    #[test]
17242    fn test_point_mass_538() {
17243        assert!(DynOrigin::Pasithee.try_gravitational_parameter().is_err());
17244    }
17245    #[test]
17246    fn test_mean_radius_538() {
17247        assert!(DynOrigin::Pasithee.try_mean_radius().is_err());
17248    }
17249    #[test]
17250    fn test_tri_axial_538() {
17251        assert!(DynOrigin::Pasithee.try_radii().is_err());
17252    }
17253    #[test]
17254    fn test_spheroid_538() {
17255        assert!(DynOrigin::Pasithee.try_polar_radius().is_err());
17256        assert!(DynOrigin::Pasithee.try_equatorial_radius().is_err());
17257    }
17258    #[test]
17259    fn test_origin_539() {
17260        assert_eq!(Hegemone.id().0, 539i32);
17261        assert_eq!(Hegemone.to_string(), "Hegemone");
17262        assert_eq!(DynOrigin::from(Hegemone), DynOrigin::Hegemone);
17263    }
17264    #[test]
17265    fn test_point_mass_539() {
17266        assert!(DynOrigin::Hegemone.try_gravitational_parameter().is_err());
17267    }
17268    #[test]
17269    fn test_mean_radius_539() {
17270        assert!(DynOrigin::Hegemone.try_mean_radius().is_err());
17271    }
17272    #[test]
17273    fn test_tri_axial_539() {
17274        assert!(DynOrigin::Hegemone.try_radii().is_err());
17275    }
17276    #[test]
17277    fn test_spheroid_539() {
17278        assert!(DynOrigin::Hegemone.try_polar_radius().is_err());
17279        assert!(DynOrigin::Hegemone.try_equatorial_radius().is_err());
17280    }
17281    #[test]
17282    fn test_origin_540() {
17283        assert_eq!(Mneme.id().0, 540i32);
17284        assert_eq!(Mneme.to_string(), "Mneme");
17285        assert_eq!(DynOrigin::from(Mneme), DynOrigin::Mneme);
17286    }
17287    #[test]
17288    fn test_point_mass_540() {
17289        assert!(DynOrigin::Mneme.try_gravitational_parameter().is_err());
17290    }
17291    #[test]
17292    fn test_mean_radius_540() {
17293        assert!(DynOrigin::Mneme.try_mean_radius().is_err());
17294    }
17295    #[test]
17296    fn test_tri_axial_540() {
17297        assert!(DynOrigin::Mneme.try_radii().is_err());
17298    }
17299    #[test]
17300    fn test_spheroid_540() {
17301        assert!(DynOrigin::Mneme.try_polar_radius().is_err());
17302        assert!(DynOrigin::Mneme.try_equatorial_radius().is_err());
17303    }
17304    #[test]
17305    fn test_origin_541() {
17306        assert_eq!(Aoede.id().0, 541i32);
17307        assert_eq!(Aoede.to_string(), "Aoede");
17308        assert_eq!(DynOrigin::from(Aoede), DynOrigin::Aoede);
17309    }
17310    #[test]
17311    fn test_point_mass_541() {
17312        assert!(DynOrigin::Aoede.try_gravitational_parameter().is_err());
17313    }
17314    #[test]
17315    fn test_mean_radius_541() {
17316        assert!(DynOrigin::Aoede.try_mean_radius().is_err());
17317    }
17318    #[test]
17319    fn test_tri_axial_541() {
17320        assert!(DynOrigin::Aoede.try_radii().is_err());
17321    }
17322    #[test]
17323    fn test_spheroid_541() {
17324        assert!(DynOrigin::Aoede.try_polar_radius().is_err());
17325        assert!(DynOrigin::Aoede.try_equatorial_radius().is_err());
17326    }
17327    #[test]
17328    fn test_origin_542() {
17329        assert_eq!(Thelxinoe.id().0, 542i32);
17330        assert_eq!(Thelxinoe.to_string(), "Thelxinoe");
17331        assert_eq!(DynOrigin::from(Thelxinoe), DynOrigin::Thelxinoe);
17332    }
17333    #[test]
17334    fn test_point_mass_542() {
17335        assert!(DynOrigin::Thelxinoe.try_gravitational_parameter().is_err());
17336    }
17337    #[test]
17338    fn test_mean_radius_542() {
17339        assert!(DynOrigin::Thelxinoe.try_mean_radius().is_err());
17340    }
17341    #[test]
17342    fn test_tri_axial_542() {
17343        assert!(DynOrigin::Thelxinoe.try_radii().is_err());
17344    }
17345    #[test]
17346    fn test_spheroid_542() {
17347        assert!(DynOrigin::Thelxinoe.try_polar_radius().is_err());
17348        assert!(DynOrigin::Thelxinoe.try_equatorial_radius().is_err());
17349    }
17350    #[test]
17351    fn test_origin_543() {
17352        assert_eq!(Arche.id().0, 543i32);
17353        assert_eq!(Arche.to_string(), "Arche");
17354        assert_eq!(DynOrigin::from(Arche), DynOrigin::Arche);
17355    }
17356    #[test]
17357    fn test_point_mass_543() {
17358        assert!(DynOrigin::Arche.try_gravitational_parameter().is_err());
17359    }
17360    #[test]
17361    fn test_mean_radius_543() {
17362        assert!(DynOrigin::Arche.try_mean_radius().is_err());
17363    }
17364    #[test]
17365    fn test_tri_axial_543() {
17366        assert!(DynOrigin::Arche.try_radii().is_err());
17367    }
17368    #[test]
17369    fn test_spheroid_543() {
17370        assert!(DynOrigin::Arche.try_polar_radius().is_err());
17371        assert!(DynOrigin::Arche.try_equatorial_radius().is_err());
17372    }
17373    #[test]
17374    fn test_origin_544() {
17375        assert_eq!(Kallichore.id().0, 544i32);
17376        assert_eq!(Kallichore.to_string(), "Kallichore");
17377        assert_eq!(DynOrigin::from(Kallichore), DynOrigin::Kallichore);
17378    }
17379    #[test]
17380    fn test_point_mass_544() {
17381        assert!(DynOrigin::Kallichore.try_gravitational_parameter().is_err());
17382    }
17383    #[test]
17384    fn test_mean_radius_544() {
17385        assert!(DynOrigin::Kallichore.try_mean_radius().is_err());
17386    }
17387    #[test]
17388    fn test_tri_axial_544() {
17389        assert!(DynOrigin::Kallichore.try_radii().is_err());
17390    }
17391    #[test]
17392    fn test_spheroid_544() {
17393        assert!(DynOrigin::Kallichore.try_polar_radius().is_err());
17394        assert!(DynOrigin::Kallichore.try_equatorial_radius().is_err());
17395    }
17396    #[test]
17397    fn test_origin_545() {
17398        assert_eq!(Helike.id().0, 545i32);
17399        assert_eq!(Helike.to_string(), "Helike");
17400        assert_eq!(DynOrigin::from(Helike), DynOrigin::Helike);
17401    }
17402    #[test]
17403    fn test_point_mass_545() {
17404        assert!(DynOrigin::Helike.try_gravitational_parameter().is_err());
17405    }
17406    #[test]
17407    fn test_mean_radius_545() {
17408        assert!(DynOrigin::Helike.try_mean_radius().is_err());
17409    }
17410    #[test]
17411    fn test_tri_axial_545() {
17412        assert!(DynOrigin::Helike.try_radii().is_err());
17413    }
17414    #[test]
17415    fn test_spheroid_545() {
17416        assert!(DynOrigin::Helike.try_polar_radius().is_err());
17417        assert!(DynOrigin::Helike.try_equatorial_radius().is_err());
17418    }
17419    #[test]
17420    fn test_origin_546() {
17421        assert_eq!(Carpo.id().0, 546i32);
17422        assert_eq!(Carpo.to_string(), "Carpo");
17423        assert_eq!(DynOrigin::from(Carpo), DynOrigin::Carpo);
17424    }
17425    #[test]
17426    fn test_point_mass_546() {
17427        assert!(DynOrigin::Carpo.try_gravitational_parameter().is_err());
17428    }
17429    #[test]
17430    fn test_mean_radius_546() {
17431        assert!(DynOrigin::Carpo.try_mean_radius().is_err());
17432    }
17433    #[test]
17434    fn test_tri_axial_546() {
17435        assert!(DynOrigin::Carpo.try_radii().is_err());
17436    }
17437    #[test]
17438    fn test_spheroid_546() {
17439        assert!(DynOrigin::Carpo.try_polar_radius().is_err());
17440        assert!(DynOrigin::Carpo.try_equatorial_radius().is_err());
17441    }
17442    #[test]
17443    fn test_origin_547() {
17444        assert_eq!(Eukelade.id().0, 547i32);
17445        assert_eq!(Eukelade.to_string(), "Eukelade");
17446        assert_eq!(DynOrigin::from(Eukelade), DynOrigin::Eukelade);
17447    }
17448    #[test]
17449    fn test_point_mass_547() {
17450        assert!(DynOrigin::Eukelade.try_gravitational_parameter().is_err());
17451    }
17452    #[test]
17453    fn test_mean_radius_547() {
17454        assert!(DynOrigin::Eukelade.try_mean_radius().is_err());
17455    }
17456    #[test]
17457    fn test_tri_axial_547() {
17458        assert!(DynOrigin::Eukelade.try_radii().is_err());
17459    }
17460    #[test]
17461    fn test_spheroid_547() {
17462        assert!(DynOrigin::Eukelade.try_polar_radius().is_err());
17463        assert!(DynOrigin::Eukelade.try_equatorial_radius().is_err());
17464    }
17465    #[test]
17466    fn test_origin_548() {
17467        assert_eq!(Cyllene.id().0, 548i32);
17468        assert_eq!(Cyllene.to_string(), "Cyllene");
17469        assert_eq!(DynOrigin::from(Cyllene), DynOrigin::Cyllene);
17470    }
17471    #[test]
17472    fn test_point_mass_548() {
17473        assert!(DynOrigin::Cyllene.try_gravitational_parameter().is_err());
17474    }
17475    #[test]
17476    fn test_mean_radius_548() {
17477        assert!(DynOrigin::Cyllene.try_mean_radius().is_err());
17478    }
17479    #[test]
17480    fn test_tri_axial_548() {
17481        assert!(DynOrigin::Cyllene.try_radii().is_err());
17482    }
17483    #[test]
17484    fn test_spheroid_548() {
17485        assert!(DynOrigin::Cyllene.try_polar_radius().is_err());
17486        assert!(DynOrigin::Cyllene.try_equatorial_radius().is_err());
17487    }
17488    #[test]
17489    fn test_origin_549() {
17490        assert_eq!(Kore.id().0, 549i32);
17491        assert_eq!(Kore.to_string(), "Kore");
17492        assert_eq!(DynOrigin::from(Kore), DynOrigin::Kore);
17493    }
17494    #[test]
17495    fn test_point_mass_549() {
17496        assert!(DynOrigin::Kore.try_gravitational_parameter().is_err());
17497    }
17498    #[test]
17499    fn test_mean_radius_549() {
17500        assert!(DynOrigin::Kore.try_mean_radius().is_err());
17501    }
17502    #[test]
17503    fn test_tri_axial_549() {
17504        assert!(DynOrigin::Kore.try_radii().is_err());
17505    }
17506    #[test]
17507    fn test_spheroid_549() {
17508        assert!(DynOrigin::Kore.try_polar_radius().is_err());
17509        assert!(DynOrigin::Kore.try_equatorial_radius().is_err());
17510    }
17511    #[test]
17512    fn test_origin_550() {
17513        assert_eq!(Herse.id().0, 550i32);
17514        assert_eq!(Herse.to_string(), "Herse");
17515        assert_eq!(DynOrigin::from(Herse), DynOrigin::Herse);
17516    }
17517    #[test]
17518    fn test_point_mass_550() {
17519        assert!(DynOrigin::Herse.try_gravitational_parameter().is_err());
17520    }
17521    #[test]
17522    fn test_mean_radius_550() {
17523        assert!(DynOrigin::Herse.try_mean_radius().is_err());
17524    }
17525    #[test]
17526    fn test_tri_axial_550() {
17527        assert!(DynOrigin::Herse.try_radii().is_err());
17528    }
17529    #[test]
17530    fn test_spheroid_550() {
17531        assert!(DynOrigin::Herse.try_polar_radius().is_err());
17532        assert!(DynOrigin::Herse.try_equatorial_radius().is_err());
17533    }
17534    #[test]
17535    fn test_origin_553() {
17536        assert_eq!(Dia.id().0, 553i32);
17537        assert_eq!(Dia.to_string(), "Dia");
17538        assert_eq!(DynOrigin::from(Dia), DynOrigin::Dia);
17539    }
17540    #[test]
17541    fn test_point_mass_553() {
17542        assert!(DynOrigin::Dia.try_gravitational_parameter().is_err());
17543    }
17544    #[test]
17545    fn test_mean_radius_553() {
17546        assert!(DynOrigin::Dia.try_mean_radius().is_err());
17547    }
17548    #[test]
17549    fn test_tri_axial_553() {
17550        assert!(DynOrigin::Dia.try_radii().is_err());
17551    }
17552    #[test]
17553    fn test_spheroid_553() {
17554        assert!(DynOrigin::Dia.try_polar_radius().is_err());
17555        assert!(DynOrigin::Dia.try_equatorial_radius().is_err());
17556    }
17557    #[test]
17558    fn test_origin_601() {
17559        assert_eq!(Mimas.id().0, 601i32);
17560        assert_eq!(Mimas.to_string(), "Mimas");
17561        assert_eq!(DynOrigin::from(Mimas), DynOrigin::Mimas);
17562    }
17563    #[test]
17564    fn test_point_mass_601() {
17565        assert_eq!(
17566            Mimas.gravitational_parameter(),
17567            GravitationalParameter::km3_per_s2(2.503488768152587f64)
17568        );
17569        assert_eq!(
17570            DynOrigin::Mimas.try_gravitational_parameter(),
17571            Ok(GravitationalParameter::km3_per_s2(2.503488768152587f64))
17572        );
17573    }
17574    #[test]
17575    fn test_mean_radius_601() {
17576        assert_eq!(Mimas.mean_radius(), Distance::kilometers(198.2f64));
17577        assert_eq!(
17578            DynOrigin::Mimas.try_mean_radius(),
17579            Ok(Distance::kilometers(198.2f64))
17580        );
17581    }
17582    #[test]
17583    fn test_spheroid_601() {
17584        assert!(DynOrigin::Mimas.try_polar_radius().is_err());
17585        assert!(DynOrigin::Mimas.try_equatorial_radius().is_err());
17586    }
17587    #[test]
17588    fn test_tri_axial_601() {
17589        assert_eq!(
17590            Mimas.radii(),
17591            (
17592                Distance::kilometers(207.8f64),
17593                Distance::kilometers(196.7f64),
17594                Distance::kilometers(190.6f64)
17595            )
17596        );
17597        assert_eq!(
17598            DynOrigin::Mimas.try_radii(),
17599            Ok((
17600                Distance::kilometers(207.8f64),
17601                Distance::kilometers(196.7f64),
17602                Distance::kilometers(190.6f64)
17603            ))
17604        );
17605    }
17606    #[test]
17607    fn test_origin_602() {
17608        assert_eq!(Enceladus.id().0, 602i32);
17609        assert_eq!(Enceladus.to_string(), "Enceladus");
17610        assert_eq!(DynOrigin::from(Enceladus), DynOrigin::Enceladus);
17611    }
17612    #[test]
17613    fn test_point_mass_602() {
17614        assert_eq!(
17615            Enceladus.gravitational_parameter(),
17616            GravitationalParameter::km3_per_s2(7.210366688598896f64)
17617        );
17618        assert_eq!(
17619            DynOrigin::Enceladus.try_gravitational_parameter(),
17620            Ok(GravitationalParameter::km3_per_s2(7.210366688598896f64))
17621        );
17622    }
17623    #[test]
17624    fn test_mean_radius_602() {
17625        assert_eq!(Enceladus.mean_radius(), Distance::kilometers(252.1f64));
17626        assert_eq!(
17627            DynOrigin::Enceladus.try_mean_radius(),
17628            Ok(Distance::kilometers(252.1f64))
17629        );
17630    }
17631    #[test]
17632    fn test_spheroid_602() {
17633        assert!(DynOrigin::Enceladus.try_polar_radius().is_err());
17634        assert!(DynOrigin::Enceladus.try_equatorial_radius().is_err());
17635    }
17636    #[test]
17637    fn test_tri_axial_602() {
17638        assert_eq!(
17639            Enceladus.radii(),
17640            (
17641                Distance::kilometers(256.6f64),
17642                Distance::kilometers(251.4f64),
17643                Distance::kilometers(248.3f64)
17644            )
17645        );
17646        assert_eq!(
17647            DynOrigin::Enceladus.try_radii(),
17648            Ok((
17649                Distance::kilometers(256.6f64),
17650                Distance::kilometers(251.4f64),
17651                Distance::kilometers(248.3f64)
17652            ))
17653        );
17654    }
17655    #[test]
17656    fn test_origin_603() {
17657        assert_eq!(Tethys.id().0, 603i32);
17658        assert_eq!(Tethys.to_string(), "Tethys");
17659        assert_eq!(DynOrigin::from(Tethys), DynOrigin::Tethys);
17660    }
17661    #[test]
17662    fn test_point_mass_603() {
17663        assert_eq!(
17664            Tethys.gravitational_parameter(),
17665            GravitationalParameter::km3_per_s2(41.21352885489587f64)
17666        );
17667        assert_eq!(
17668            DynOrigin::Tethys.try_gravitational_parameter(),
17669            Ok(GravitationalParameter::km3_per_s2(41.21352885489587f64))
17670        );
17671    }
17672    #[test]
17673    fn test_mean_radius_603() {
17674        assert_eq!(Tethys.mean_radius(), Distance::kilometers(531f64));
17675        assert_eq!(
17676            DynOrigin::Tethys.try_mean_radius(),
17677            Ok(Distance::kilometers(531f64))
17678        );
17679    }
17680    #[test]
17681    fn test_spheroid_603() {
17682        assert!(DynOrigin::Tethys.try_polar_radius().is_err());
17683        assert!(DynOrigin::Tethys.try_equatorial_radius().is_err());
17684    }
17685    #[test]
17686    fn test_tri_axial_603() {
17687        assert_eq!(
17688            Tethys.radii(),
17689            (
17690                Distance::kilometers(538.4f64),
17691                Distance::kilometers(528.3f64),
17692                Distance::kilometers(526.3f64)
17693            )
17694        );
17695        assert_eq!(
17696            DynOrigin::Tethys.try_radii(),
17697            Ok((
17698                Distance::kilometers(538.4f64),
17699                Distance::kilometers(528.3f64),
17700                Distance::kilometers(526.3f64)
17701            ))
17702        );
17703    }
17704    #[test]
17705    fn test_origin_604() {
17706        assert_eq!(Dione.id().0, 604i32);
17707        assert_eq!(Dione.to_string(), "Dione");
17708        assert_eq!(DynOrigin::from(Dione), DynOrigin::Dione);
17709    }
17710    #[test]
17711    fn test_point_mass_604() {
17712        assert_eq!(
17713            Dione.gravitational_parameter(),
17714            GravitationalParameter::km3_per_s2(73.11607172482067f64)
17715        );
17716        assert_eq!(
17717            DynOrigin::Dione.try_gravitational_parameter(),
17718            Ok(GravitationalParameter::km3_per_s2(73.11607172482067f64))
17719        );
17720    }
17721    #[test]
17722    fn test_mean_radius_604() {
17723        assert_eq!(Dione.mean_radius(), Distance::kilometers(561.4f64));
17724        assert_eq!(
17725            DynOrigin::Dione.try_mean_radius(),
17726            Ok(Distance::kilometers(561.4f64))
17727        );
17728    }
17729    #[test]
17730    fn test_spheroid_604() {
17731        assert!(DynOrigin::Dione.try_polar_radius().is_err());
17732        assert!(DynOrigin::Dione.try_equatorial_radius().is_err());
17733    }
17734    #[test]
17735    fn test_tri_axial_604() {
17736        assert_eq!(
17737            Dione.radii(),
17738            (
17739                Distance::kilometers(563.4f64),
17740                Distance::kilometers(561.3f64),
17741                Distance::kilometers(559.6f64)
17742            )
17743        );
17744        assert_eq!(
17745            DynOrigin::Dione.try_radii(),
17746            Ok((
17747                Distance::kilometers(563.4f64),
17748                Distance::kilometers(561.3f64),
17749                Distance::kilometers(559.6f64)
17750            ))
17751        );
17752    }
17753    #[test]
17754    fn test_origin_605() {
17755        assert_eq!(Rhea.id().0, 605i32);
17756        assert_eq!(Rhea.to_string(), "Rhea");
17757        assert_eq!(DynOrigin::from(Rhea), DynOrigin::Rhea);
17758    }
17759    #[test]
17760    fn test_point_mass_605() {
17761        assert_eq!(
17762            Rhea.gravitational_parameter(),
17763            GravitationalParameter::km3_per_s2(153.9417519146563f64)
17764        );
17765        assert_eq!(
17766            DynOrigin::Rhea.try_gravitational_parameter(),
17767            Ok(GravitationalParameter::km3_per_s2(153.9417519146563f64))
17768        );
17769    }
17770    #[test]
17771    fn test_mean_radius_605() {
17772        assert_eq!(Rhea.mean_radius(), Distance::kilometers(763.5f64));
17773        assert_eq!(
17774            DynOrigin::Rhea.try_mean_radius(),
17775            Ok(Distance::kilometers(763.5f64))
17776        );
17777    }
17778    #[test]
17779    fn test_spheroid_605() {
17780        assert!(DynOrigin::Rhea.try_polar_radius().is_err());
17781        assert!(DynOrigin::Rhea.try_equatorial_radius().is_err());
17782    }
17783    #[test]
17784    fn test_tri_axial_605() {
17785        assert_eq!(
17786            Rhea.radii(),
17787            (
17788                Distance::kilometers(765f64),
17789                Distance::kilometers(763.1f64),
17790                Distance::kilometers(762.4f64)
17791            )
17792        );
17793        assert_eq!(
17794            DynOrigin::Rhea.try_radii(),
17795            Ok((
17796                Distance::kilometers(765f64),
17797                Distance::kilometers(763.1f64),
17798                Distance::kilometers(762.4f64)
17799            ))
17800        );
17801    }
17802    #[test]
17803    fn test_origin_606() {
17804        assert_eq!(Titan.id().0, 606i32);
17805        assert_eq!(Titan.to_string(), "Titan");
17806        assert_eq!(DynOrigin::from(Titan), DynOrigin::Titan);
17807    }
17808    #[test]
17809    fn test_point_mass_606() {
17810        assert_eq!(
17811            Titan.gravitational_parameter(),
17812            GravitationalParameter::km3_per_s2(8978.137095521046f64)
17813        );
17814        assert_eq!(
17815            DynOrigin::Titan.try_gravitational_parameter(),
17816            Ok(GravitationalParameter::km3_per_s2(8978.137095521046f64))
17817        );
17818    }
17819    #[test]
17820    fn test_mean_radius_606() {
17821        assert_eq!(Titan.mean_radius(), Distance::kilometers(2575f64));
17822        assert_eq!(
17823            DynOrigin::Titan.try_mean_radius(),
17824            Ok(Distance::kilometers(2575f64))
17825        );
17826    }
17827    #[test]
17828    fn test_spheroid_606() {
17829        assert!(DynOrigin::Titan.try_polar_radius().is_err());
17830        assert!(DynOrigin::Titan.try_equatorial_radius().is_err());
17831    }
17832    #[test]
17833    fn test_tri_axial_606() {
17834        assert_eq!(
17835            Titan.radii(),
17836            (
17837                Distance::kilometers(2575.15f64),
17838                Distance::kilometers(2574.78f64),
17839                Distance::kilometers(2574.47f64)
17840            )
17841        );
17842        assert_eq!(
17843            DynOrigin::Titan.try_radii(),
17844            Ok((
17845                Distance::kilometers(2575.15f64),
17846                Distance::kilometers(2574.78f64),
17847                Distance::kilometers(2574.47f64)
17848            ))
17849        );
17850    }
17851    #[test]
17852    fn test_origin_607() {
17853        assert_eq!(Hyperion.id().0, 607i32);
17854        assert_eq!(Hyperion.to_string(), "Hyperion");
17855        assert_eq!(DynOrigin::from(Hyperion), DynOrigin::Hyperion);
17856    }
17857    #[test]
17858    fn test_point_mass_607() {
17859        assert_eq!(
17860            Hyperion.gravitational_parameter(),
17861            GravitationalParameter::km3_per_s2(0.3704913747932265f64)
17862        );
17863        assert_eq!(
17864            DynOrigin::Hyperion.try_gravitational_parameter(),
17865            Ok(GravitationalParameter::km3_per_s2(0.3704913747932265f64))
17866        );
17867    }
17868    #[test]
17869    fn test_mean_radius_607() {
17870        assert_eq!(Hyperion.mean_radius(), Distance::kilometers(135f64));
17871        assert_eq!(
17872            DynOrigin::Hyperion.try_mean_radius(),
17873            Ok(Distance::kilometers(135f64))
17874        );
17875    }
17876    #[test]
17877    fn test_spheroid_607() {
17878        assert!(DynOrigin::Hyperion.try_polar_radius().is_err());
17879        assert!(DynOrigin::Hyperion.try_equatorial_radius().is_err());
17880    }
17881    #[test]
17882    fn test_tri_axial_607() {
17883        assert_eq!(
17884            Hyperion.radii(),
17885            (
17886                Distance::kilometers(180.1f64),
17887                Distance::kilometers(133f64),
17888                Distance::kilometers(102.7f64)
17889            )
17890        );
17891        assert_eq!(
17892            DynOrigin::Hyperion.try_radii(),
17893            Ok((
17894                Distance::kilometers(180.1f64),
17895                Distance::kilometers(133f64),
17896                Distance::kilometers(102.7f64)
17897            ))
17898        );
17899    }
17900    #[test]
17901    fn test_origin_608() {
17902        assert_eq!(Iapetus.id().0, 608i32);
17903        assert_eq!(Iapetus.to_string(), "Iapetus");
17904        assert_eq!(DynOrigin::from(Iapetus), DynOrigin::Iapetus);
17905    }
17906    #[test]
17907    fn test_point_mass_608() {
17908        assert_eq!(
17909            Iapetus.gravitational_parameter(),
17910            GravitationalParameter::km3_per_s2(120.5151060137642f64)
17911        );
17912        assert_eq!(
17913            DynOrigin::Iapetus.try_gravitational_parameter(),
17914            Ok(GravitationalParameter::km3_per_s2(120.5151060137642f64))
17915        );
17916    }
17917    #[test]
17918    fn test_mean_radius_608() {
17919        assert_eq!(Iapetus.mean_radius(), Distance::kilometers(734.3f64));
17920        assert_eq!(
17921            DynOrigin::Iapetus.try_mean_radius(),
17922            Ok(Distance::kilometers(734.3f64))
17923        );
17924    }
17925    #[test]
17926    fn test_spheroid_608() {
17927        assert_eq!(Iapetus.polar_radius(), Distance::kilometers(712.1f64));
17928        assert_eq!(
17929            DynOrigin::Iapetus.try_polar_radius(),
17930            Ok(Distance::kilometers(712.1f64))
17931        );
17932        assert_eq!(Iapetus.equatorial_radius(), Distance::kilometers(745.7f64));
17933        assert_eq!(
17934            DynOrigin::Iapetus.try_equatorial_radius(),
17935            Ok(Distance::kilometers(745.7f64))
17936        );
17937    }
17938    #[test]
17939    fn test_tri_axial_608() {
17940        assert_eq!(
17941            Iapetus.radii(),
17942            (
17943                Distance::kilometers(745.7f64),
17944                Distance::kilometers(745.7f64),
17945                Distance::kilometers(712.1f64)
17946            )
17947        );
17948        assert_eq!(
17949            DynOrigin::Iapetus.try_radii(),
17950            Ok((
17951                Distance::kilometers(745.7f64),
17952                Distance::kilometers(745.7f64),
17953                Distance::kilometers(712.1f64)
17954            ))
17955        );
17956    }
17957    #[test]
17958    fn test_origin_609() {
17959        assert_eq!(Phoebe.id().0, 609i32);
17960        assert_eq!(Phoebe.to_string(), "Phoebe");
17961        assert_eq!(DynOrigin::from(Phoebe), DynOrigin::Phoebe);
17962    }
17963    #[test]
17964    fn test_point_mass_609() {
17965        assert_eq!(
17966            Phoebe.gravitational_parameter(),
17967            GravitationalParameter::km3_per_s2(0.5547860052791678f64)
17968        );
17969        assert_eq!(
17970            DynOrigin::Phoebe.try_gravitational_parameter(),
17971            Ok(GravitationalParameter::km3_per_s2(0.5547860052791678f64))
17972        );
17973    }
17974    #[test]
17975    fn test_mean_radius_609() {
17976        assert_eq!(Phoebe.mean_radius(), Distance::kilometers(106.5f64));
17977        assert_eq!(
17978            DynOrigin::Phoebe.try_mean_radius(),
17979            Ok(Distance::kilometers(106.5f64))
17980        );
17981    }
17982    #[test]
17983    fn test_spheroid_609() {
17984        assert!(DynOrigin::Phoebe.try_polar_radius().is_err());
17985        assert!(DynOrigin::Phoebe.try_equatorial_radius().is_err());
17986    }
17987    #[test]
17988    fn test_tri_axial_609() {
17989        assert_eq!(
17990            Phoebe.radii(),
17991            (
17992                Distance::kilometers(109.4f64),
17993                Distance::kilometers(108.5f64),
17994                Distance::kilometers(101.8f64)
17995            )
17996        );
17997        assert_eq!(
17998            DynOrigin::Phoebe.try_radii(),
17999            Ok((
18000                Distance::kilometers(109.4f64),
18001                Distance::kilometers(108.5f64),
18002                Distance::kilometers(101.8f64)
18003            ))
18004        );
18005    }
18006    #[test]
18007    fn test_origin_610() {
18008        assert_eq!(Janus.id().0, 610i32);
18009        assert_eq!(Janus.to_string(), "Janus");
18010        assert_eq!(DynOrigin::from(Janus), DynOrigin::Janus);
18011    }
18012    #[test]
18013    fn test_point_mass_610() {
18014        assert_eq!(
18015            Janus.gravitational_parameter(),
18016            GravitationalParameter::km3_per_s2(0.1265765099012197f64)
18017        );
18018        assert_eq!(
18019            DynOrigin::Janus.try_gravitational_parameter(),
18020            Ok(GravitationalParameter::km3_per_s2(0.1265765099012197f64))
18021        );
18022    }
18023    #[test]
18024    fn test_mean_radius_610() {
18025        assert_eq!(Janus.mean_radius(), Distance::kilometers(89.2f64));
18026        assert_eq!(
18027            DynOrigin::Janus.try_mean_radius(),
18028            Ok(Distance::kilometers(89.2f64))
18029        );
18030    }
18031    #[test]
18032    fn test_spheroid_610() {
18033        assert!(DynOrigin::Janus.try_polar_radius().is_err());
18034        assert!(DynOrigin::Janus.try_equatorial_radius().is_err());
18035    }
18036    #[test]
18037    fn test_tri_axial_610() {
18038        assert_eq!(
18039            Janus.radii(),
18040            (
18041                Distance::kilometers(101.7f64),
18042                Distance::kilometers(93f64),
18043                Distance::kilometers(76.3f64)
18044            )
18045        );
18046        assert_eq!(
18047            DynOrigin::Janus.try_radii(),
18048            Ok((
18049                Distance::kilometers(101.7f64),
18050                Distance::kilometers(93f64),
18051                Distance::kilometers(76.3f64)
18052            ))
18053        );
18054    }
18055    #[test]
18056    fn test_origin_611() {
18057        assert_eq!(Epimetheus.id().0, 611i32);
18058        assert_eq!(Epimetheus.to_string(), "Epimetheus");
18059        assert_eq!(DynOrigin::from(Epimetheus), DynOrigin::Epimetheus);
18060    }
18061    #[test]
18062    fn test_point_mass_611() {
18063        assert_eq!(
18064            Epimetheus.gravitational_parameter(),
18065            GravitationalParameter::km3_per_s2(0.03512333288208074f64)
18066        );
18067        assert_eq!(
18068            DynOrigin::Epimetheus.try_gravitational_parameter(),
18069            Ok(GravitationalParameter::km3_per_s2(0.03512333288208074f64))
18070        );
18071    }
18072    #[test]
18073    fn test_mean_radius_611() {
18074        assert_eq!(Epimetheus.mean_radius(), Distance::kilometers(58.2f64));
18075        assert_eq!(
18076            DynOrigin::Epimetheus.try_mean_radius(),
18077            Ok(Distance::kilometers(58.2f64))
18078        );
18079    }
18080    #[test]
18081    fn test_spheroid_611() {
18082        assert!(DynOrigin::Epimetheus.try_polar_radius().is_err());
18083        assert!(DynOrigin::Epimetheus.try_equatorial_radius().is_err());
18084    }
18085    #[test]
18086    fn test_tri_axial_611() {
18087        assert_eq!(
18088            Epimetheus.radii(),
18089            (
18090                Distance::kilometers(64.9f64),
18091                Distance::kilometers(57.3f64),
18092                Distance::kilometers(53f64)
18093            )
18094        );
18095        assert_eq!(
18096            DynOrigin::Epimetheus.try_radii(),
18097            Ok((
18098                Distance::kilometers(64.9f64),
18099                Distance::kilometers(57.3f64),
18100                Distance::kilometers(53f64)
18101            ))
18102        );
18103    }
18104    #[test]
18105    fn test_origin_612() {
18106        assert_eq!(Helene.id().0, 612i32);
18107        assert_eq!(Helene.to_string(), "Helene");
18108        assert_eq!(DynOrigin::from(Helene), DynOrigin::Helene);
18109    }
18110    #[test]
18111    fn test_point_mass_612() {
18112        assert_eq!(
18113            Helene.gravitational_parameter(),
18114            GravitationalParameter::km3_per_s2(0.0004757419551776972f64)
18115        );
18116        assert_eq!(
18117            DynOrigin::Helene.try_gravitational_parameter(),
18118            Ok(GravitationalParameter::km3_per_s2(0.0004757419551776972f64))
18119        );
18120    }
18121    #[test]
18122    fn test_mean_radius_612() {
18123        assert_eq!(Helene.mean_radius(), Distance::kilometers(18f64));
18124        assert_eq!(
18125            DynOrigin::Helene.try_mean_radius(),
18126            Ok(Distance::kilometers(18f64))
18127        );
18128    }
18129    #[test]
18130    fn test_spheroid_612() {
18131        assert!(DynOrigin::Helene.try_polar_radius().is_err());
18132        assert!(DynOrigin::Helene.try_equatorial_radius().is_err());
18133    }
18134    #[test]
18135    fn test_tri_axial_612() {
18136        assert_eq!(
18137            Helene.radii(),
18138            (
18139                Distance::kilometers(22.5f64),
18140                Distance::kilometers(19.6f64),
18141                Distance::kilometers(13.3f64)
18142            )
18143        );
18144        assert_eq!(
18145            DynOrigin::Helene.try_radii(),
18146            Ok((
18147                Distance::kilometers(22.5f64),
18148                Distance::kilometers(19.6f64),
18149                Distance::kilometers(13.3f64)
18150            ))
18151        );
18152    }
18153    #[test]
18154    fn test_origin_613() {
18155        assert_eq!(Telesto.id().0, 613i32);
18156        assert_eq!(Telesto.to_string(), "Telesto");
18157        assert_eq!(DynOrigin::from(Telesto), DynOrigin::Telesto);
18158    }
18159    #[test]
18160    fn test_point_mass_613() {
18161        assert!(DynOrigin::Telesto.try_gravitational_parameter().is_err());
18162    }
18163    #[test]
18164    fn test_mean_radius_613() {
18165        assert_eq!(Telesto.mean_radius(), Distance::kilometers(12.4f64));
18166        assert_eq!(
18167            DynOrigin::Telesto.try_mean_radius(),
18168            Ok(Distance::kilometers(12.4f64))
18169        );
18170    }
18171    #[test]
18172    fn test_spheroid_613() {
18173        assert!(DynOrigin::Telesto.try_polar_radius().is_err());
18174        assert!(DynOrigin::Telesto.try_equatorial_radius().is_err());
18175    }
18176    #[test]
18177    fn test_tri_axial_613() {
18178        assert_eq!(
18179            Telesto.radii(),
18180            (
18181                Distance::kilometers(16.3f64),
18182                Distance::kilometers(11.8f64),
18183                Distance::kilometers(9.8f64)
18184            )
18185        );
18186        assert_eq!(
18187            DynOrigin::Telesto.try_radii(),
18188            Ok((
18189                Distance::kilometers(16.3f64),
18190                Distance::kilometers(11.8f64),
18191                Distance::kilometers(9.8f64)
18192            ))
18193        );
18194    }
18195    #[test]
18196    fn test_origin_614() {
18197        assert_eq!(Calypso.id().0, 614i32);
18198        assert_eq!(Calypso.to_string(), "Calypso");
18199        assert_eq!(DynOrigin::from(Calypso), DynOrigin::Calypso);
18200    }
18201    #[test]
18202    fn test_point_mass_614() {
18203        assert!(DynOrigin::Calypso.try_gravitational_parameter().is_err());
18204    }
18205    #[test]
18206    fn test_mean_radius_614() {
18207        assert_eq!(Calypso.mean_radius(), Distance::kilometers(9.6f64));
18208        assert_eq!(
18209            DynOrigin::Calypso.try_mean_radius(),
18210            Ok(Distance::kilometers(9.6f64))
18211        );
18212    }
18213    #[test]
18214    fn test_spheroid_614() {
18215        assert!(DynOrigin::Calypso.try_polar_radius().is_err());
18216        assert!(DynOrigin::Calypso.try_equatorial_radius().is_err());
18217    }
18218    #[test]
18219    fn test_tri_axial_614() {
18220        assert_eq!(
18221            Calypso.radii(),
18222            (
18223                Distance::kilometers(15.3f64),
18224                Distance::kilometers(9.3f64),
18225                Distance::kilometers(6.3f64)
18226            )
18227        );
18228        assert_eq!(
18229            DynOrigin::Calypso.try_radii(),
18230            Ok((
18231                Distance::kilometers(15.3f64),
18232                Distance::kilometers(9.3f64),
18233                Distance::kilometers(6.3f64)
18234            ))
18235        );
18236    }
18237    #[test]
18238    fn test_origin_615() {
18239        assert_eq!(Atlas.id().0, 615i32);
18240        assert_eq!(Atlas.to_string(), "Atlas");
18241        assert_eq!(DynOrigin::from(Atlas), DynOrigin::Atlas);
18242    }
18243    #[test]
18244    fn test_point_mass_615() {
18245        assert_eq!(
18246            Atlas.gravitational_parameter(),
18247            GravitationalParameter::km3_per_s2(0.0003718871247516475f64)
18248        );
18249        assert_eq!(
18250            DynOrigin::Atlas.try_gravitational_parameter(),
18251            Ok(GravitationalParameter::km3_per_s2(0.0003718871247516475f64))
18252        );
18253    }
18254    #[test]
18255    fn test_mean_radius_615() {
18256        assert_eq!(Atlas.mean_radius(), Distance::kilometers(15.1f64));
18257        assert_eq!(
18258            DynOrigin::Atlas.try_mean_radius(),
18259            Ok(Distance::kilometers(15.1f64))
18260        );
18261    }
18262    #[test]
18263    fn test_spheroid_615() {
18264        assert!(DynOrigin::Atlas.try_polar_radius().is_err());
18265        assert!(DynOrigin::Atlas.try_equatorial_radius().is_err());
18266    }
18267    #[test]
18268    fn test_tri_axial_615() {
18269        assert_eq!(
18270            Atlas.radii(),
18271            (
18272                Distance::kilometers(20.5f64),
18273                Distance::kilometers(17.8f64),
18274                Distance::kilometers(9.4f64)
18275            )
18276        );
18277        assert_eq!(
18278            DynOrigin::Atlas.try_radii(),
18279            Ok((
18280                Distance::kilometers(20.5f64),
18281                Distance::kilometers(17.8f64),
18282                Distance::kilometers(9.4f64)
18283            ))
18284        );
18285    }
18286    #[test]
18287    fn test_origin_616() {
18288        assert_eq!(Prometheus.id().0, 616i32);
18289        assert_eq!(Prometheus.to_string(), "Prometheus");
18290        assert_eq!(DynOrigin::from(Prometheus), DynOrigin::Prometheus);
18291    }
18292    #[test]
18293    fn test_point_mass_616() {
18294        assert_eq!(
18295            Prometheus.gravitational_parameter(),
18296            GravitationalParameter::km3_per_s2(0.0107520800100761f64)
18297        );
18298        assert_eq!(
18299            DynOrigin::Prometheus.try_gravitational_parameter(),
18300            Ok(GravitationalParameter::km3_per_s2(0.0107520800100761f64))
18301        );
18302    }
18303    #[test]
18304    fn test_mean_radius_616() {
18305        assert_eq!(Prometheus.mean_radius(), Distance::kilometers(43.1f64));
18306        assert_eq!(
18307            DynOrigin::Prometheus.try_mean_radius(),
18308            Ok(Distance::kilometers(43.1f64))
18309        );
18310    }
18311    #[test]
18312    fn test_spheroid_616() {
18313        assert!(DynOrigin::Prometheus.try_polar_radius().is_err());
18314        assert!(DynOrigin::Prometheus.try_equatorial_radius().is_err());
18315    }
18316    #[test]
18317    fn test_tri_axial_616() {
18318        assert_eq!(
18319            Prometheus.radii(),
18320            (
18321                Distance::kilometers(68.2f64),
18322                Distance::kilometers(41.6f64),
18323                Distance::kilometers(28.2f64)
18324            )
18325        );
18326        assert_eq!(
18327            DynOrigin::Prometheus.try_radii(),
18328            Ok((
18329                Distance::kilometers(68.2f64),
18330                Distance::kilometers(41.6f64),
18331                Distance::kilometers(28.2f64)
18332            ))
18333        );
18334    }
18335    #[test]
18336    fn test_origin_617() {
18337        assert_eq!(Pandora.id().0, 617i32);
18338        assert_eq!(Pandora.to_string(), "Pandora");
18339        assert_eq!(DynOrigin::from(Pandora), DynOrigin::Pandora);
18340    }
18341    #[test]
18342    fn test_point_mass_617() {
18343        assert_eq!(
18344            Pandora.gravitational_parameter(),
18345            GravitationalParameter::km3_per_s2(0.009290325122028795f64)
18346        );
18347        assert_eq!(
18348            DynOrigin::Pandora.try_gravitational_parameter(),
18349            Ok(GravitationalParameter::km3_per_s2(0.009290325122028795f64))
18350        );
18351    }
18352    #[test]
18353    fn test_mean_radius_617() {
18354        assert_eq!(Pandora.mean_radius(), Distance::kilometers(40.6f64));
18355        assert_eq!(
18356            DynOrigin::Pandora.try_mean_radius(),
18357            Ok(Distance::kilometers(40.6f64))
18358        );
18359    }
18360    #[test]
18361    fn test_spheroid_617() {
18362        assert!(DynOrigin::Pandora.try_polar_radius().is_err());
18363        assert!(DynOrigin::Pandora.try_equatorial_radius().is_err());
18364    }
18365    #[test]
18366    fn test_tri_axial_617() {
18367        assert_eq!(
18368            Pandora.radii(),
18369            (
18370                Distance::kilometers(52.2f64),
18371                Distance::kilometers(40.8f64),
18372                Distance::kilometers(31.5f64)
18373            )
18374        );
18375        assert_eq!(
18376            DynOrigin::Pandora.try_radii(),
18377            Ok((
18378                Distance::kilometers(52.2f64),
18379                Distance::kilometers(40.8f64),
18380                Distance::kilometers(31.5f64)
18381            ))
18382        );
18383    }
18384    #[test]
18385    fn test_origin_618() {
18386        assert_eq!(Pan.id().0, 618i32);
18387        assert_eq!(Pan.to_string(), "Pan");
18388        assert_eq!(DynOrigin::from(Pan), DynOrigin::Pan);
18389    }
18390    #[test]
18391    fn test_point_mass_618() {
18392        assert!(DynOrigin::Pan.try_gravitational_parameter().is_err());
18393    }
18394    #[test]
18395    fn test_mean_radius_618() {
18396        assert_eq!(Pan.mean_radius(), Distance::kilometers(14f64));
18397        assert_eq!(
18398            DynOrigin::Pan.try_mean_radius(),
18399            Ok(Distance::kilometers(14f64))
18400        );
18401    }
18402    #[test]
18403    fn test_spheroid_618() {
18404        assert!(DynOrigin::Pan.try_polar_radius().is_err());
18405        assert!(DynOrigin::Pan.try_equatorial_radius().is_err());
18406    }
18407    #[test]
18408    fn test_tri_axial_618() {
18409        assert_eq!(
18410            Pan.radii(),
18411            (
18412                Distance::kilometers(17.2f64),
18413                Distance::kilometers(15.4f64),
18414                Distance::kilometers(10.4f64)
18415            )
18416        );
18417        assert_eq!(
18418            DynOrigin::Pan.try_radii(),
18419            Ok((
18420                Distance::kilometers(17.2f64),
18421                Distance::kilometers(15.4f64),
18422                Distance::kilometers(10.4f64)
18423            ))
18424        );
18425    }
18426    #[test]
18427    fn test_origin_619() {
18428        assert_eq!(Ymir.id().0, 619i32);
18429        assert_eq!(Ymir.to_string(), "Ymir");
18430        assert_eq!(DynOrigin::from(Ymir), DynOrigin::Ymir);
18431    }
18432    #[test]
18433    fn test_point_mass_619() {
18434        assert!(DynOrigin::Ymir.try_gravitational_parameter().is_err());
18435    }
18436    #[test]
18437    fn test_mean_radius_619() {
18438        assert!(DynOrigin::Ymir.try_mean_radius().is_err());
18439    }
18440    #[test]
18441    fn test_tri_axial_619() {
18442        assert!(DynOrigin::Ymir.try_radii().is_err());
18443    }
18444    #[test]
18445    fn test_spheroid_619() {
18446        assert!(DynOrigin::Ymir.try_polar_radius().is_err());
18447        assert!(DynOrigin::Ymir.try_equatorial_radius().is_err());
18448    }
18449    #[test]
18450    fn test_origin_620() {
18451        assert_eq!(Paaliaq.id().0, 620i32);
18452        assert_eq!(Paaliaq.to_string(), "Paaliaq");
18453        assert_eq!(DynOrigin::from(Paaliaq), DynOrigin::Paaliaq);
18454    }
18455    #[test]
18456    fn test_point_mass_620() {
18457        assert!(DynOrigin::Paaliaq.try_gravitational_parameter().is_err());
18458    }
18459    #[test]
18460    fn test_mean_radius_620() {
18461        assert!(DynOrigin::Paaliaq.try_mean_radius().is_err());
18462    }
18463    #[test]
18464    fn test_tri_axial_620() {
18465        assert!(DynOrigin::Paaliaq.try_radii().is_err());
18466    }
18467    #[test]
18468    fn test_spheroid_620() {
18469        assert!(DynOrigin::Paaliaq.try_polar_radius().is_err());
18470        assert!(DynOrigin::Paaliaq.try_equatorial_radius().is_err());
18471    }
18472    #[test]
18473    fn test_origin_621() {
18474        assert_eq!(Tarvos.id().0, 621i32);
18475        assert_eq!(Tarvos.to_string(), "Tarvos");
18476        assert_eq!(DynOrigin::from(Tarvos), DynOrigin::Tarvos);
18477    }
18478    #[test]
18479    fn test_point_mass_621() {
18480        assert!(DynOrigin::Tarvos.try_gravitational_parameter().is_err());
18481    }
18482    #[test]
18483    fn test_mean_radius_621() {
18484        assert!(DynOrigin::Tarvos.try_mean_radius().is_err());
18485    }
18486    #[test]
18487    fn test_tri_axial_621() {
18488        assert!(DynOrigin::Tarvos.try_radii().is_err());
18489    }
18490    #[test]
18491    fn test_spheroid_621() {
18492        assert!(DynOrigin::Tarvos.try_polar_radius().is_err());
18493        assert!(DynOrigin::Tarvos.try_equatorial_radius().is_err());
18494    }
18495    #[test]
18496    fn test_origin_622() {
18497        assert_eq!(Ijiraq.id().0, 622i32);
18498        assert_eq!(Ijiraq.to_string(), "Ijiraq");
18499        assert_eq!(DynOrigin::from(Ijiraq), DynOrigin::Ijiraq);
18500    }
18501    #[test]
18502    fn test_point_mass_622() {
18503        assert!(DynOrigin::Ijiraq.try_gravitational_parameter().is_err());
18504    }
18505    #[test]
18506    fn test_mean_radius_622() {
18507        assert!(DynOrigin::Ijiraq.try_mean_radius().is_err());
18508    }
18509    #[test]
18510    fn test_tri_axial_622() {
18511        assert!(DynOrigin::Ijiraq.try_radii().is_err());
18512    }
18513    #[test]
18514    fn test_spheroid_622() {
18515        assert!(DynOrigin::Ijiraq.try_polar_radius().is_err());
18516        assert!(DynOrigin::Ijiraq.try_equatorial_radius().is_err());
18517    }
18518    #[test]
18519    fn test_origin_623() {
18520        assert_eq!(Suttungr.id().0, 623i32);
18521        assert_eq!(Suttungr.to_string(), "Suttungr");
18522        assert_eq!(DynOrigin::from(Suttungr), DynOrigin::Suttungr);
18523    }
18524    #[test]
18525    fn test_point_mass_623() {
18526        assert!(DynOrigin::Suttungr.try_gravitational_parameter().is_err());
18527    }
18528    #[test]
18529    fn test_mean_radius_623() {
18530        assert!(DynOrigin::Suttungr.try_mean_radius().is_err());
18531    }
18532    #[test]
18533    fn test_tri_axial_623() {
18534        assert!(DynOrigin::Suttungr.try_radii().is_err());
18535    }
18536    #[test]
18537    fn test_spheroid_623() {
18538        assert!(DynOrigin::Suttungr.try_polar_radius().is_err());
18539        assert!(DynOrigin::Suttungr.try_equatorial_radius().is_err());
18540    }
18541    #[test]
18542    fn test_origin_624() {
18543        assert_eq!(Kiviuq.id().0, 624i32);
18544        assert_eq!(Kiviuq.to_string(), "Kiviuq");
18545        assert_eq!(DynOrigin::from(Kiviuq), DynOrigin::Kiviuq);
18546    }
18547    #[test]
18548    fn test_point_mass_624() {
18549        assert!(DynOrigin::Kiviuq.try_gravitational_parameter().is_err());
18550    }
18551    #[test]
18552    fn test_mean_radius_624() {
18553        assert!(DynOrigin::Kiviuq.try_mean_radius().is_err());
18554    }
18555    #[test]
18556    fn test_tri_axial_624() {
18557        assert!(DynOrigin::Kiviuq.try_radii().is_err());
18558    }
18559    #[test]
18560    fn test_spheroid_624() {
18561        assert!(DynOrigin::Kiviuq.try_polar_radius().is_err());
18562        assert!(DynOrigin::Kiviuq.try_equatorial_radius().is_err());
18563    }
18564    #[test]
18565    fn test_origin_625() {
18566        assert_eq!(Mundilfari.id().0, 625i32);
18567        assert_eq!(Mundilfari.to_string(), "Mundilfari");
18568        assert_eq!(DynOrigin::from(Mundilfari), DynOrigin::Mundilfari);
18569    }
18570    #[test]
18571    fn test_point_mass_625() {
18572        assert!(DynOrigin::Mundilfari.try_gravitational_parameter().is_err());
18573    }
18574    #[test]
18575    fn test_mean_radius_625() {
18576        assert!(DynOrigin::Mundilfari.try_mean_radius().is_err());
18577    }
18578    #[test]
18579    fn test_tri_axial_625() {
18580        assert!(DynOrigin::Mundilfari.try_radii().is_err());
18581    }
18582    #[test]
18583    fn test_spheroid_625() {
18584        assert!(DynOrigin::Mundilfari.try_polar_radius().is_err());
18585        assert!(DynOrigin::Mundilfari.try_equatorial_radius().is_err());
18586    }
18587    #[test]
18588    fn test_origin_626() {
18589        assert_eq!(Albiorix.id().0, 626i32);
18590        assert_eq!(Albiorix.to_string(), "Albiorix");
18591        assert_eq!(DynOrigin::from(Albiorix), DynOrigin::Albiorix);
18592    }
18593    #[test]
18594    fn test_point_mass_626() {
18595        assert!(DynOrigin::Albiorix.try_gravitational_parameter().is_err());
18596    }
18597    #[test]
18598    fn test_mean_radius_626() {
18599        assert!(DynOrigin::Albiorix.try_mean_radius().is_err());
18600    }
18601    #[test]
18602    fn test_tri_axial_626() {
18603        assert!(DynOrigin::Albiorix.try_radii().is_err());
18604    }
18605    #[test]
18606    fn test_spheroid_626() {
18607        assert!(DynOrigin::Albiorix.try_polar_radius().is_err());
18608        assert!(DynOrigin::Albiorix.try_equatorial_radius().is_err());
18609    }
18610    #[test]
18611    fn test_origin_627() {
18612        assert_eq!(Skathi.id().0, 627i32);
18613        assert_eq!(Skathi.to_string(), "Skathi");
18614        assert_eq!(DynOrigin::from(Skathi), DynOrigin::Skathi);
18615    }
18616    #[test]
18617    fn test_point_mass_627() {
18618        assert!(DynOrigin::Skathi.try_gravitational_parameter().is_err());
18619    }
18620    #[test]
18621    fn test_mean_radius_627() {
18622        assert!(DynOrigin::Skathi.try_mean_radius().is_err());
18623    }
18624    #[test]
18625    fn test_tri_axial_627() {
18626        assert!(DynOrigin::Skathi.try_radii().is_err());
18627    }
18628    #[test]
18629    fn test_spheroid_627() {
18630        assert!(DynOrigin::Skathi.try_polar_radius().is_err());
18631        assert!(DynOrigin::Skathi.try_equatorial_radius().is_err());
18632    }
18633    #[test]
18634    fn test_origin_628() {
18635        assert_eq!(Erriapus.id().0, 628i32);
18636        assert_eq!(Erriapus.to_string(), "Erriapus");
18637        assert_eq!(DynOrigin::from(Erriapus), DynOrigin::Erriapus);
18638    }
18639    #[test]
18640    fn test_point_mass_628() {
18641        assert!(DynOrigin::Erriapus.try_gravitational_parameter().is_err());
18642    }
18643    #[test]
18644    fn test_mean_radius_628() {
18645        assert!(DynOrigin::Erriapus.try_mean_radius().is_err());
18646    }
18647    #[test]
18648    fn test_tri_axial_628() {
18649        assert!(DynOrigin::Erriapus.try_radii().is_err());
18650    }
18651    #[test]
18652    fn test_spheroid_628() {
18653        assert!(DynOrigin::Erriapus.try_polar_radius().is_err());
18654        assert!(DynOrigin::Erriapus.try_equatorial_radius().is_err());
18655    }
18656    #[test]
18657    fn test_origin_629() {
18658        assert_eq!(Siarnaq.id().0, 629i32);
18659        assert_eq!(Siarnaq.to_string(), "Siarnaq");
18660        assert_eq!(DynOrigin::from(Siarnaq), DynOrigin::Siarnaq);
18661    }
18662    #[test]
18663    fn test_point_mass_629() {
18664        assert!(DynOrigin::Siarnaq.try_gravitational_parameter().is_err());
18665    }
18666    #[test]
18667    fn test_mean_radius_629() {
18668        assert!(DynOrigin::Siarnaq.try_mean_radius().is_err());
18669    }
18670    #[test]
18671    fn test_tri_axial_629() {
18672        assert!(DynOrigin::Siarnaq.try_radii().is_err());
18673    }
18674    #[test]
18675    fn test_spheroid_629() {
18676        assert!(DynOrigin::Siarnaq.try_polar_radius().is_err());
18677        assert!(DynOrigin::Siarnaq.try_equatorial_radius().is_err());
18678    }
18679    #[test]
18680    fn test_origin_630() {
18681        assert_eq!(Thrymr.id().0, 630i32);
18682        assert_eq!(Thrymr.to_string(), "Thrymr");
18683        assert_eq!(DynOrigin::from(Thrymr), DynOrigin::Thrymr);
18684    }
18685    #[test]
18686    fn test_point_mass_630() {
18687        assert!(DynOrigin::Thrymr.try_gravitational_parameter().is_err());
18688    }
18689    #[test]
18690    fn test_mean_radius_630() {
18691        assert!(DynOrigin::Thrymr.try_mean_radius().is_err());
18692    }
18693    #[test]
18694    fn test_tri_axial_630() {
18695        assert!(DynOrigin::Thrymr.try_radii().is_err());
18696    }
18697    #[test]
18698    fn test_spheroid_630() {
18699        assert!(DynOrigin::Thrymr.try_polar_radius().is_err());
18700        assert!(DynOrigin::Thrymr.try_equatorial_radius().is_err());
18701    }
18702    #[test]
18703    fn test_origin_631() {
18704        assert_eq!(Narvi.id().0, 631i32);
18705        assert_eq!(Narvi.to_string(), "Narvi");
18706        assert_eq!(DynOrigin::from(Narvi), DynOrigin::Narvi);
18707    }
18708    #[test]
18709    fn test_point_mass_631() {
18710        assert!(DynOrigin::Narvi.try_gravitational_parameter().is_err());
18711    }
18712    #[test]
18713    fn test_mean_radius_631() {
18714        assert!(DynOrigin::Narvi.try_mean_radius().is_err());
18715    }
18716    #[test]
18717    fn test_tri_axial_631() {
18718        assert!(DynOrigin::Narvi.try_radii().is_err());
18719    }
18720    #[test]
18721    fn test_spheroid_631() {
18722        assert!(DynOrigin::Narvi.try_polar_radius().is_err());
18723        assert!(DynOrigin::Narvi.try_equatorial_radius().is_err());
18724    }
18725    #[test]
18726    fn test_origin_632() {
18727        assert_eq!(Methone.id().0, 632i32);
18728        assert_eq!(Methone.to_string(), "Methone");
18729        assert_eq!(DynOrigin::from(Methone), DynOrigin::Methone);
18730    }
18731    #[test]
18732    fn test_point_mass_632() {
18733        assert!(DynOrigin::Methone.try_gravitational_parameter().is_err());
18734    }
18735    #[test]
18736    fn test_mean_radius_632() {
18737        assert_eq!(Methone.mean_radius(), Distance::kilometers(1.45f64));
18738        assert_eq!(
18739            DynOrigin::Methone.try_mean_radius(),
18740            Ok(Distance::kilometers(1.45f64))
18741        );
18742    }
18743    #[test]
18744    fn test_spheroid_632() {
18745        assert!(DynOrigin::Methone.try_polar_radius().is_err());
18746        assert!(DynOrigin::Methone.try_equatorial_radius().is_err());
18747    }
18748    #[test]
18749    fn test_tri_axial_632() {
18750        assert_eq!(
18751            Methone.radii(),
18752            (
18753                Distance::kilometers(1.94f64),
18754                Distance::kilometers(1.29f64),
18755                Distance::kilometers(1.21f64)
18756            )
18757        );
18758        assert_eq!(
18759            DynOrigin::Methone.try_radii(),
18760            Ok((
18761                Distance::kilometers(1.94f64),
18762                Distance::kilometers(1.29f64),
18763                Distance::kilometers(1.21f64)
18764            ))
18765        );
18766    }
18767    #[test]
18768    fn test_origin_633() {
18769        assert_eq!(Pallene.id().0, 633i32);
18770        assert_eq!(Pallene.to_string(), "Pallene");
18771        assert_eq!(DynOrigin::from(Pallene), DynOrigin::Pallene);
18772    }
18773    #[test]
18774    fn test_point_mass_633() {
18775        assert!(DynOrigin::Pallene.try_gravitational_parameter().is_err());
18776    }
18777    #[test]
18778    fn test_mean_radius_633() {
18779        assert_eq!(Pallene.mean_radius(), Distance::kilometers(2.23f64));
18780        assert_eq!(
18781            DynOrigin::Pallene.try_mean_radius(),
18782            Ok(Distance::kilometers(2.23f64))
18783        );
18784    }
18785    #[test]
18786    fn test_spheroid_633() {
18787        assert!(DynOrigin::Pallene.try_polar_radius().is_err());
18788        assert!(DynOrigin::Pallene.try_equatorial_radius().is_err());
18789    }
18790    #[test]
18791    fn test_tri_axial_633() {
18792        assert_eq!(
18793            Pallene.radii(),
18794            (
18795                Distance::kilometers(2.88f64),
18796                Distance::kilometers(2.08f64),
18797                Distance::kilometers(1.8f64)
18798            )
18799        );
18800        assert_eq!(
18801            DynOrigin::Pallene.try_radii(),
18802            Ok((
18803                Distance::kilometers(2.88f64),
18804                Distance::kilometers(2.08f64),
18805                Distance::kilometers(1.8f64)
18806            ))
18807        );
18808    }
18809    #[test]
18810    fn test_origin_634() {
18811        assert_eq!(Polydeuces.id().0, 634i32);
18812        assert_eq!(Polydeuces.to_string(), "Polydeuces");
18813        assert_eq!(DynOrigin::from(Polydeuces), DynOrigin::Polydeuces);
18814    }
18815    #[test]
18816    fn test_point_mass_634() {
18817        assert!(DynOrigin::Polydeuces.try_gravitational_parameter().is_err());
18818    }
18819    #[test]
18820    fn test_mean_radius_634() {
18821        assert_eq!(Polydeuces.mean_radius(), Distance::kilometers(1.3f64));
18822        assert_eq!(
18823            DynOrigin::Polydeuces.try_mean_radius(),
18824            Ok(Distance::kilometers(1.3f64))
18825        );
18826    }
18827    #[test]
18828    fn test_spheroid_634() {
18829        assert!(DynOrigin::Polydeuces.try_polar_radius().is_err());
18830        assert!(DynOrigin::Polydeuces.try_equatorial_radius().is_err());
18831    }
18832    #[test]
18833    fn test_tri_axial_634() {
18834        assert_eq!(
18835            Polydeuces.radii(),
18836            (
18837                Distance::kilometers(1.5f64),
18838                Distance::kilometers(1.2f64),
18839                Distance::kilometers(1f64)
18840            )
18841        );
18842        assert_eq!(
18843            DynOrigin::Polydeuces.try_radii(),
18844            Ok((
18845                Distance::kilometers(1.5f64),
18846                Distance::kilometers(1.2f64),
18847                Distance::kilometers(1f64)
18848            ))
18849        );
18850    }
18851    #[test]
18852    fn test_origin_635() {
18853        assert_eq!(Daphnis.id().0, 635i32);
18854        assert_eq!(Daphnis.to_string(), "Daphnis");
18855        assert_eq!(DynOrigin::from(Daphnis), DynOrigin::Daphnis);
18856    }
18857    #[test]
18858    fn test_point_mass_635() {
18859        assert!(DynOrigin::Daphnis.try_gravitational_parameter().is_err());
18860    }
18861    #[test]
18862    fn test_mean_radius_635() {
18863        assert_eq!(Daphnis.mean_radius(), Distance::kilometers(3.8f64));
18864        assert_eq!(
18865            DynOrigin::Daphnis.try_mean_radius(),
18866            Ok(Distance::kilometers(3.8f64))
18867        );
18868    }
18869    #[test]
18870    fn test_spheroid_635() {
18871        assert!(DynOrigin::Daphnis.try_polar_radius().is_err());
18872        assert!(DynOrigin::Daphnis.try_equatorial_radius().is_err());
18873    }
18874    #[test]
18875    fn test_tri_axial_635() {
18876        assert_eq!(
18877            Daphnis.radii(),
18878            (
18879                Distance::kilometers(4.6f64),
18880                Distance::kilometers(4.5f64),
18881                Distance::kilometers(2.8f64)
18882            )
18883        );
18884        assert_eq!(
18885            DynOrigin::Daphnis.try_radii(),
18886            Ok((
18887                Distance::kilometers(4.6f64),
18888                Distance::kilometers(4.5f64),
18889                Distance::kilometers(2.8f64)
18890            ))
18891        );
18892    }
18893    #[test]
18894    fn test_origin_636() {
18895        assert_eq!(Aegir.id().0, 636i32);
18896        assert_eq!(Aegir.to_string(), "Aegir");
18897        assert_eq!(DynOrigin::from(Aegir), DynOrigin::Aegir);
18898    }
18899    #[test]
18900    fn test_point_mass_636() {
18901        assert!(DynOrigin::Aegir.try_gravitational_parameter().is_err());
18902    }
18903    #[test]
18904    fn test_mean_radius_636() {
18905        assert!(DynOrigin::Aegir.try_mean_radius().is_err());
18906    }
18907    #[test]
18908    fn test_tri_axial_636() {
18909        assert!(DynOrigin::Aegir.try_radii().is_err());
18910    }
18911    #[test]
18912    fn test_spheroid_636() {
18913        assert!(DynOrigin::Aegir.try_polar_radius().is_err());
18914        assert!(DynOrigin::Aegir.try_equatorial_radius().is_err());
18915    }
18916    #[test]
18917    fn test_origin_637() {
18918        assert_eq!(Bebhionn.id().0, 637i32);
18919        assert_eq!(Bebhionn.to_string(), "Bebhionn");
18920        assert_eq!(DynOrigin::from(Bebhionn), DynOrigin::Bebhionn);
18921    }
18922    #[test]
18923    fn test_point_mass_637() {
18924        assert!(DynOrigin::Bebhionn.try_gravitational_parameter().is_err());
18925    }
18926    #[test]
18927    fn test_mean_radius_637() {
18928        assert!(DynOrigin::Bebhionn.try_mean_radius().is_err());
18929    }
18930    #[test]
18931    fn test_tri_axial_637() {
18932        assert!(DynOrigin::Bebhionn.try_radii().is_err());
18933    }
18934    #[test]
18935    fn test_spheroid_637() {
18936        assert!(DynOrigin::Bebhionn.try_polar_radius().is_err());
18937        assert!(DynOrigin::Bebhionn.try_equatorial_radius().is_err());
18938    }
18939    #[test]
18940    fn test_origin_638() {
18941        assert_eq!(Bergelmir.id().0, 638i32);
18942        assert_eq!(Bergelmir.to_string(), "Bergelmir");
18943        assert_eq!(DynOrigin::from(Bergelmir), DynOrigin::Bergelmir);
18944    }
18945    #[test]
18946    fn test_point_mass_638() {
18947        assert!(DynOrigin::Bergelmir.try_gravitational_parameter().is_err());
18948    }
18949    #[test]
18950    fn test_mean_radius_638() {
18951        assert!(DynOrigin::Bergelmir.try_mean_radius().is_err());
18952    }
18953    #[test]
18954    fn test_tri_axial_638() {
18955        assert!(DynOrigin::Bergelmir.try_radii().is_err());
18956    }
18957    #[test]
18958    fn test_spheroid_638() {
18959        assert!(DynOrigin::Bergelmir.try_polar_radius().is_err());
18960        assert!(DynOrigin::Bergelmir.try_equatorial_radius().is_err());
18961    }
18962    #[test]
18963    fn test_origin_639() {
18964        assert_eq!(Bestla.id().0, 639i32);
18965        assert_eq!(Bestla.to_string(), "Bestla");
18966        assert_eq!(DynOrigin::from(Bestla), DynOrigin::Bestla);
18967    }
18968    #[test]
18969    fn test_point_mass_639() {
18970        assert!(DynOrigin::Bestla.try_gravitational_parameter().is_err());
18971    }
18972    #[test]
18973    fn test_mean_radius_639() {
18974        assert!(DynOrigin::Bestla.try_mean_radius().is_err());
18975    }
18976    #[test]
18977    fn test_tri_axial_639() {
18978        assert!(DynOrigin::Bestla.try_radii().is_err());
18979    }
18980    #[test]
18981    fn test_spheroid_639() {
18982        assert!(DynOrigin::Bestla.try_polar_radius().is_err());
18983        assert!(DynOrigin::Bestla.try_equatorial_radius().is_err());
18984    }
18985    #[test]
18986    fn test_origin_640() {
18987        assert_eq!(Farbauti.id().0, 640i32);
18988        assert_eq!(Farbauti.to_string(), "Farbauti");
18989        assert_eq!(DynOrigin::from(Farbauti), DynOrigin::Farbauti);
18990    }
18991    #[test]
18992    fn test_point_mass_640() {
18993        assert!(DynOrigin::Farbauti.try_gravitational_parameter().is_err());
18994    }
18995    #[test]
18996    fn test_mean_radius_640() {
18997        assert!(DynOrigin::Farbauti.try_mean_radius().is_err());
18998    }
18999    #[test]
19000    fn test_tri_axial_640() {
19001        assert!(DynOrigin::Farbauti.try_radii().is_err());
19002    }
19003    #[test]
19004    fn test_spheroid_640() {
19005        assert!(DynOrigin::Farbauti.try_polar_radius().is_err());
19006        assert!(DynOrigin::Farbauti.try_equatorial_radius().is_err());
19007    }
19008    #[test]
19009    fn test_origin_641() {
19010        assert_eq!(Fenrir.id().0, 641i32);
19011        assert_eq!(Fenrir.to_string(), "Fenrir");
19012        assert_eq!(DynOrigin::from(Fenrir), DynOrigin::Fenrir);
19013    }
19014    #[test]
19015    fn test_point_mass_641() {
19016        assert!(DynOrigin::Fenrir.try_gravitational_parameter().is_err());
19017    }
19018    #[test]
19019    fn test_mean_radius_641() {
19020        assert!(DynOrigin::Fenrir.try_mean_radius().is_err());
19021    }
19022    #[test]
19023    fn test_tri_axial_641() {
19024        assert!(DynOrigin::Fenrir.try_radii().is_err());
19025    }
19026    #[test]
19027    fn test_spheroid_641() {
19028        assert!(DynOrigin::Fenrir.try_polar_radius().is_err());
19029        assert!(DynOrigin::Fenrir.try_equatorial_radius().is_err());
19030    }
19031    #[test]
19032    fn test_origin_642() {
19033        assert_eq!(Fornjot.id().0, 642i32);
19034        assert_eq!(Fornjot.to_string(), "Fornjot");
19035        assert_eq!(DynOrigin::from(Fornjot), DynOrigin::Fornjot);
19036    }
19037    #[test]
19038    fn test_point_mass_642() {
19039        assert!(DynOrigin::Fornjot.try_gravitational_parameter().is_err());
19040    }
19041    #[test]
19042    fn test_mean_radius_642() {
19043        assert!(DynOrigin::Fornjot.try_mean_radius().is_err());
19044    }
19045    #[test]
19046    fn test_tri_axial_642() {
19047        assert!(DynOrigin::Fornjot.try_radii().is_err());
19048    }
19049    #[test]
19050    fn test_spheroid_642() {
19051        assert!(DynOrigin::Fornjot.try_polar_radius().is_err());
19052        assert!(DynOrigin::Fornjot.try_equatorial_radius().is_err());
19053    }
19054    #[test]
19055    fn test_origin_643() {
19056        assert_eq!(Hati.id().0, 643i32);
19057        assert_eq!(Hati.to_string(), "Hati");
19058        assert_eq!(DynOrigin::from(Hati), DynOrigin::Hati);
19059    }
19060    #[test]
19061    fn test_point_mass_643() {
19062        assert!(DynOrigin::Hati.try_gravitational_parameter().is_err());
19063    }
19064    #[test]
19065    fn test_mean_radius_643() {
19066        assert!(DynOrigin::Hati.try_mean_radius().is_err());
19067    }
19068    #[test]
19069    fn test_tri_axial_643() {
19070        assert!(DynOrigin::Hati.try_radii().is_err());
19071    }
19072    #[test]
19073    fn test_spheroid_643() {
19074        assert!(DynOrigin::Hati.try_polar_radius().is_err());
19075        assert!(DynOrigin::Hati.try_equatorial_radius().is_err());
19076    }
19077    #[test]
19078    fn test_origin_644() {
19079        assert_eq!(Hyrrokkin.id().0, 644i32);
19080        assert_eq!(Hyrrokkin.to_string(), "Hyrrokkin");
19081        assert_eq!(DynOrigin::from(Hyrrokkin), DynOrigin::Hyrrokkin);
19082    }
19083    #[test]
19084    fn test_point_mass_644() {
19085        assert!(DynOrigin::Hyrrokkin.try_gravitational_parameter().is_err());
19086    }
19087    #[test]
19088    fn test_mean_radius_644() {
19089        assert!(DynOrigin::Hyrrokkin.try_mean_radius().is_err());
19090    }
19091    #[test]
19092    fn test_tri_axial_644() {
19093        assert!(DynOrigin::Hyrrokkin.try_radii().is_err());
19094    }
19095    #[test]
19096    fn test_spheroid_644() {
19097        assert!(DynOrigin::Hyrrokkin.try_polar_radius().is_err());
19098        assert!(DynOrigin::Hyrrokkin.try_equatorial_radius().is_err());
19099    }
19100    #[test]
19101    fn test_origin_645() {
19102        assert_eq!(Kari.id().0, 645i32);
19103        assert_eq!(Kari.to_string(), "Kari");
19104        assert_eq!(DynOrigin::from(Kari), DynOrigin::Kari);
19105    }
19106    #[test]
19107    fn test_point_mass_645() {
19108        assert!(DynOrigin::Kari.try_gravitational_parameter().is_err());
19109    }
19110    #[test]
19111    fn test_mean_radius_645() {
19112        assert!(DynOrigin::Kari.try_mean_radius().is_err());
19113    }
19114    #[test]
19115    fn test_tri_axial_645() {
19116        assert!(DynOrigin::Kari.try_radii().is_err());
19117    }
19118    #[test]
19119    fn test_spheroid_645() {
19120        assert!(DynOrigin::Kari.try_polar_radius().is_err());
19121        assert!(DynOrigin::Kari.try_equatorial_radius().is_err());
19122    }
19123    #[test]
19124    fn test_origin_646() {
19125        assert_eq!(Loge.id().0, 646i32);
19126        assert_eq!(Loge.to_string(), "Loge");
19127        assert_eq!(DynOrigin::from(Loge), DynOrigin::Loge);
19128    }
19129    #[test]
19130    fn test_point_mass_646() {
19131        assert!(DynOrigin::Loge.try_gravitational_parameter().is_err());
19132    }
19133    #[test]
19134    fn test_mean_radius_646() {
19135        assert!(DynOrigin::Loge.try_mean_radius().is_err());
19136    }
19137    #[test]
19138    fn test_tri_axial_646() {
19139        assert!(DynOrigin::Loge.try_radii().is_err());
19140    }
19141    #[test]
19142    fn test_spheroid_646() {
19143        assert!(DynOrigin::Loge.try_polar_radius().is_err());
19144        assert!(DynOrigin::Loge.try_equatorial_radius().is_err());
19145    }
19146    #[test]
19147    fn test_origin_647() {
19148        assert_eq!(Skoll.id().0, 647i32);
19149        assert_eq!(Skoll.to_string(), "Skoll");
19150        assert_eq!(DynOrigin::from(Skoll), DynOrigin::Skoll);
19151    }
19152    #[test]
19153    fn test_point_mass_647() {
19154        assert!(DynOrigin::Skoll.try_gravitational_parameter().is_err());
19155    }
19156    #[test]
19157    fn test_mean_radius_647() {
19158        assert!(DynOrigin::Skoll.try_mean_radius().is_err());
19159    }
19160    #[test]
19161    fn test_tri_axial_647() {
19162        assert!(DynOrigin::Skoll.try_radii().is_err());
19163    }
19164    #[test]
19165    fn test_spheroid_647() {
19166        assert!(DynOrigin::Skoll.try_polar_radius().is_err());
19167        assert!(DynOrigin::Skoll.try_equatorial_radius().is_err());
19168    }
19169    #[test]
19170    fn test_origin_648() {
19171        assert_eq!(Surtur.id().0, 648i32);
19172        assert_eq!(Surtur.to_string(), "Surtur");
19173        assert_eq!(DynOrigin::from(Surtur), DynOrigin::Surtur);
19174    }
19175    #[test]
19176    fn test_point_mass_648() {
19177        assert!(DynOrigin::Surtur.try_gravitational_parameter().is_err());
19178    }
19179    #[test]
19180    fn test_mean_radius_648() {
19181        assert!(DynOrigin::Surtur.try_mean_radius().is_err());
19182    }
19183    #[test]
19184    fn test_tri_axial_648() {
19185        assert!(DynOrigin::Surtur.try_radii().is_err());
19186    }
19187    #[test]
19188    fn test_spheroid_648() {
19189        assert!(DynOrigin::Surtur.try_polar_radius().is_err());
19190        assert!(DynOrigin::Surtur.try_equatorial_radius().is_err());
19191    }
19192    #[test]
19193    fn test_origin_649() {
19194        assert_eq!(Anthe.id().0, 649i32);
19195        assert_eq!(Anthe.to_string(), "Anthe");
19196        assert_eq!(DynOrigin::from(Anthe), DynOrigin::Anthe);
19197    }
19198    #[test]
19199    fn test_point_mass_649() {
19200        assert!(DynOrigin::Anthe.try_gravitational_parameter().is_err());
19201    }
19202    #[test]
19203    fn test_mean_radius_649() {
19204        assert_eq!(Anthe.mean_radius(), Distance::kilometers(0.5f64));
19205        assert_eq!(
19206            DynOrigin::Anthe.try_mean_radius(),
19207            Ok(Distance::kilometers(0.5f64))
19208        );
19209    }
19210    #[test]
19211    fn test_spheroid_649() {
19212        assert_eq!(Anthe.polar_radius(), Distance::kilometers(0.5f64));
19213        assert_eq!(
19214            DynOrigin::Anthe.try_polar_radius(),
19215            Ok(Distance::kilometers(0.5f64))
19216        );
19217        assert_eq!(Anthe.equatorial_radius(), Distance::kilometers(0.5f64));
19218        assert_eq!(
19219            DynOrigin::Anthe.try_equatorial_radius(),
19220            Ok(Distance::kilometers(0.5f64))
19221        );
19222    }
19223    #[test]
19224    fn test_tri_axial_649() {
19225        assert_eq!(
19226            Anthe.radii(),
19227            (
19228                Distance::kilometers(0.5f64),
19229                Distance::kilometers(0.5f64),
19230                Distance::kilometers(0.5f64)
19231            )
19232        );
19233        assert_eq!(
19234            DynOrigin::Anthe.try_radii(),
19235            Ok((
19236                Distance::kilometers(0.5f64),
19237                Distance::kilometers(0.5f64),
19238                Distance::kilometers(0.5f64)
19239            ))
19240        );
19241    }
19242    #[test]
19243    fn test_origin_650() {
19244        assert_eq!(Jarnsaxa.id().0, 650i32);
19245        assert_eq!(Jarnsaxa.to_string(), "Jarnsaxa");
19246        assert_eq!(DynOrigin::from(Jarnsaxa), DynOrigin::Jarnsaxa);
19247    }
19248    #[test]
19249    fn test_point_mass_650() {
19250        assert!(DynOrigin::Jarnsaxa.try_gravitational_parameter().is_err());
19251    }
19252    #[test]
19253    fn test_mean_radius_650() {
19254        assert!(DynOrigin::Jarnsaxa.try_mean_radius().is_err());
19255    }
19256    #[test]
19257    fn test_tri_axial_650() {
19258        assert!(DynOrigin::Jarnsaxa.try_radii().is_err());
19259    }
19260    #[test]
19261    fn test_spheroid_650() {
19262        assert!(DynOrigin::Jarnsaxa.try_polar_radius().is_err());
19263        assert!(DynOrigin::Jarnsaxa.try_equatorial_radius().is_err());
19264    }
19265    #[test]
19266    fn test_origin_651() {
19267        assert_eq!(Greip.id().0, 651i32);
19268        assert_eq!(Greip.to_string(), "Greip");
19269        assert_eq!(DynOrigin::from(Greip), DynOrigin::Greip);
19270    }
19271    #[test]
19272    fn test_point_mass_651() {
19273        assert!(DynOrigin::Greip.try_gravitational_parameter().is_err());
19274    }
19275    #[test]
19276    fn test_mean_radius_651() {
19277        assert!(DynOrigin::Greip.try_mean_radius().is_err());
19278    }
19279    #[test]
19280    fn test_tri_axial_651() {
19281        assert!(DynOrigin::Greip.try_radii().is_err());
19282    }
19283    #[test]
19284    fn test_spheroid_651() {
19285        assert!(DynOrigin::Greip.try_polar_radius().is_err());
19286        assert!(DynOrigin::Greip.try_equatorial_radius().is_err());
19287    }
19288    #[test]
19289    fn test_origin_652() {
19290        assert_eq!(Tarqeq.id().0, 652i32);
19291        assert_eq!(Tarqeq.to_string(), "Tarqeq");
19292        assert_eq!(DynOrigin::from(Tarqeq), DynOrigin::Tarqeq);
19293    }
19294    #[test]
19295    fn test_point_mass_652() {
19296        assert!(DynOrigin::Tarqeq.try_gravitational_parameter().is_err());
19297    }
19298    #[test]
19299    fn test_mean_radius_652() {
19300        assert!(DynOrigin::Tarqeq.try_mean_radius().is_err());
19301    }
19302    #[test]
19303    fn test_tri_axial_652() {
19304        assert!(DynOrigin::Tarqeq.try_radii().is_err());
19305    }
19306    #[test]
19307    fn test_spheroid_652() {
19308        assert!(DynOrigin::Tarqeq.try_polar_radius().is_err());
19309        assert!(DynOrigin::Tarqeq.try_equatorial_radius().is_err());
19310    }
19311    #[test]
19312    fn test_origin_653() {
19313        assert_eq!(Aegaeon.id().0, 653i32);
19314        assert_eq!(Aegaeon.to_string(), "Aegaeon");
19315        assert_eq!(DynOrigin::from(Aegaeon), DynOrigin::Aegaeon);
19316    }
19317    #[test]
19318    fn test_point_mass_653() {
19319        assert!(DynOrigin::Aegaeon.try_gravitational_parameter().is_err());
19320    }
19321    #[test]
19322    fn test_mean_radius_653() {
19323        assert_eq!(Aegaeon.mean_radius(), Distance::kilometers(0.33f64));
19324        assert_eq!(
19325            DynOrigin::Aegaeon.try_mean_radius(),
19326            Ok(Distance::kilometers(0.33f64))
19327        );
19328    }
19329    #[test]
19330    fn test_spheroid_653() {
19331        assert!(DynOrigin::Aegaeon.try_polar_radius().is_err());
19332        assert!(DynOrigin::Aegaeon.try_equatorial_radius().is_err());
19333    }
19334    #[test]
19335    fn test_tri_axial_653() {
19336        assert_eq!(
19337            Aegaeon.radii(),
19338            (
19339                Distance::kilometers(0.7f64),
19340                Distance::kilometers(0.25f64),
19341                Distance::kilometers(0.2f64)
19342            )
19343        );
19344        assert_eq!(
19345            DynOrigin::Aegaeon.try_radii(),
19346            Ok((
19347                Distance::kilometers(0.7f64),
19348                Distance::kilometers(0.25f64),
19349                Distance::kilometers(0.2f64)
19350            ))
19351        );
19352    }
19353    #[test]
19354    fn test_origin_701() {
19355        assert_eq!(Ariel.id().0, 701i32);
19356        assert_eq!(Ariel.to_string(), "Ariel");
19357        assert_eq!(DynOrigin::from(Ariel), DynOrigin::Ariel);
19358    }
19359    #[test]
19360    fn test_point_mass_701() {
19361        assert_eq!(
19362            Ariel.gravitational_parameter(),
19363            GravitationalParameter::km3_per_s2(83.46344431770477f64)
19364        );
19365        assert_eq!(
19366            DynOrigin::Ariel.try_gravitational_parameter(),
19367            Ok(GravitationalParameter::km3_per_s2(83.46344431770477f64))
19368        );
19369    }
19370    #[test]
19371    fn test_mean_radius_701() {
19372        assert_eq!(Ariel.mean_radius(), Distance::kilometers(578.9f64));
19373        assert_eq!(
19374            DynOrigin::Ariel.try_mean_radius(),
19375            Ok(Distance::kilometers(578.9f64))
19376        );
19377    }
19378    #[test]
19379    fn test_spheroid_701() {
19380        assert!(DynOrigin::Ariel.try_polar_radius().is_err());
19381        assert!(DynOrigin::Ariel.try_equatorial_radius().is_err());
19382    }
19383    #[test]
19384    fn test_tri_axial_701() {
19385        assert_eq!(
19386            Ariel.radii(),
19387            (
19388                Distance::kilometers(581.1f64),
19389                Distance::kilometers(577.9f64),
19390                Distance::kilometers(577.7f64)
19391            )
19392        );
19393        assert_eq!(
19394            DynOrigin::Ariel.try_radii(),
19395            Ok((
19396                Distance::kilometers(581.1f64),
19397                Distance::kilometers(577.9f64),
19398                Distance::kilometers(577.7f64)
19399            ))
19400        );
19401    }
19402    #[test]
19403    fn test_origin_702() {
19404        assert_eq!(Umbriel.id().0, 702i32);
19405        assert_eq!(Umbriel.to_string(), "Umbriel");
19406        assert_eq!(DynOrigin::from(Umbriel), DynOrigin::Umbriel);
19407    }
19408    #[test]
19409    fn test_point_mass_702() {
19410        assert_eq!(
19411            Umbriel.gravitational_parameter(),
19412            GravitationalParameter::km3_per_s2(85.09338094489388f64)
19413        );
19414        assert_eq!(
19415            DynOrigin::Umbriel.try_gravitational_parameter(),
19416            Ok(GravitationalParameter::km3_per_s2(85.09338094489388f64))
19417        );
19418    }
19419    #[test]
19420    fn test_mean_radius_702() {
19421        assert_eq!(Umbriel.mean_radius(), Distance::kilometers(584.7f64));
19422        assert_eq!(
19423            DynOrigin::Umbriel.try_mean_radius(),
19424            Ok(Distance::kilometers(584.7f64))
19425        );
19426    }
19427    #[test]
19428    fn test_spheroid_702() {
19429        assert_eq!(Umbriel.polar_radius(), Distance::kilometers(584.7f64));
19430        assert_eq!(
19431            DynOrigin::Umbriel.try_polar_radius(),
19432            Ok(Distance::kilometers(584.7f64))
19433        );
19434        assert_eq!(Umbriel.equatorial_radius(), Distance::kilometers(584.7f64));
19435        assert_eq!(
19436            DynOrigin::Umbriel.try_equatorial_radius(),
19437            Ok(Distance::kilometers(584.7f64))
19438        );
19439    }
19440    #[test]
19441    fn test_tri_axial_702() {
19442        assert_eq!(
19443            Umbriel.radii(),
19444            (
19445                Distance::kilometers(584.7f64),
19446                Distance::kilometers(584.7f64),
19447                Distance::kilometers(584.7f64)
19448            )
19449        );
19450        assert_eq!(
19451            DynOrigin::Umbriel.try_radii(),
19452            Ok((
19453                Distance::kilometers(584.7f64),
19454                Distance::kilometers(584.7f64),
19455                Distance::kilometers(584.7f64)
19456            ))
19457        );
19458    }
19459    #[test]
19460    fn test_origin_703() {
19461        assert_eq!(Titania.id().0, 703i32);
19462        assert_eq!(Titania.to_string(), "Titania");
19463        assert_eq!(DynOrigin::from(Titania), DynOrigin::Titania);
19464    }
19465    #[test]
19466    fn test_point_mass_703() {
19467        assert_eq!(
19468            Titania.gravitational_parameter(),
19469            GravitationalParameter::km3_per_s2(226.9437003741248f64)
19470        );
19471        assert_eq!(
19472            DynOrigin::Titania.try_gravitational_parameter(),
19473            Ok(GravitationalParameter::km3_per_s2(226.9437003741248f64))
19474        );
19475    }
19476    #[test]
19477    fn test_mean_radius_703() {
19478        assert_eq!(Titania.mean_radius(), Distance::kilometers(788.9f64));
19479        assert_eq!(
19480            DynOrigin::Titania.try_mean_radius(),
19481            Ok(Distance::kilometers(788.9f64))
19482        );
19483    }
19484    #[test]
19485    fn test_spheroid_703() {
19486        assert_eq!(Titania.polar_radius(), Distance::kilometers(788.9f64));
19487        assert_eq!(
19488            DynOrigin::Titania.try_polar_radius(),
19489            Ok(Distance::kilometers(788.9f64))
19490        );
19491        assert_eq!(Titania.equatorial_radius(), Distance::kilometers(788.9f64));
19492        assert_eq!(
19493            DynOrigin::Titania.try_equatorial_radius(),
19494            Ok(Distance::kilometers(788.9f64))
19495        );
19496    }
19497    #[test]
19498    fn test_tri_axial_703() {
19499        assert_eq!(
19500            Titania.radii(),
19501            (
19502                Distance::kilometers(788.9f64),
19503                Distance::kilometers(788.9f64),
19504                Distance::kilometers(788.9f64)
19505            )
19506        );
19507        assert_eq!(
19508            DynOrigin::Titania.try_radii(),
19509            Ok((
19510                Distance::kilometers(788.9f64),
19511                Distance::kilometers(788.9f64),
19512                Distance::kilometers(788.9f64)
19513            ))
19514        );
19515    }
19516    #[test]
19517    fn test_origin_704() {
19518        assert_eq!(Oberon.id().0, 704i32);
19519        assert_eq!(Oberon.to_string(), "Oberon");
19520        assert_eq!(DynOrigin::from(Oberon), DynOrigin::Oberon);
19521    }
19522    #[test]
19523    fn test_point_mass_704() {
19524        assert_eq!(
19525            Oberon.gravitational_parameter(),
19526            GravitationalParameter::km3_per_s2(205.3234302535623f64)
19527        );
19528        assert_eq!(
19529            DynOrigin::Oberon.try_gravitational_parameter(),
19530            Ok(GravitationalParameter::km3_per_s2(205.3234302535623f64))
19531        );
19532    }
19533    #[test]
19534    fn test_mean_radius_704() {
19535        assert_eq!(Oberon.mean_radius(), Distance::kilometers(761.4f64));
19536        assert_eq!(
19537            DynOrigin::Oberon.try_mean_radius(),
19538            Ok(Distance::kilometers(761.4f64))
19539        );
19540    }
19541    #[test]
19542    fn test_spheroid_704() {
19543        assert_eq!(Oberon.polar_radius(), Distance::kilometers(761.4f64));
19544        assert_eq!(
19545            DynOrigin::Oberon.try_polar_radius(),
19546            Ok(Distance::kilometers(761.4f64))
19547        );
19548        assert_eq!(Oberon.equatorial_radius(), Distance::kilometers(761.4f64));
19549        assert_eq!(
19550            DynOrigin::Oberon.try_equatorial_radius(),
19551            Ok(Distance::kilometers(761.4f64))
19552        );
19553    }
19554    #[test]
19555    fn test_tri_axial_704() {
19556        assert_eq!(
19557            Oberon.radii(),
19558            (
19559                Distance::kilometers(761.4f64),
19560                Distance::kilometers(761.4f64),
19561                Distance::kilometers(761.4f64)
19562            )
19563        );
19564        assert_eq!(
19565            DynOrigin::Oberon.try_radii(),
19566            Ok((
19567                Distance::kilometers(761.4f64),
19568                Distance::kilometers(761.4f64),
19569                Distance::kilometers(761.4f64)
19570            ))
19571        );
19572    }
19573    #[test]
19574    fn test_origin_705() {
19575        assert_eq!(Miranda.id().0, 705i32);
19576        assert_eq!(Miranda.to_string(), "Miranda");
19577        assert_eq!(DynOrigin::from(Miranda), DynOrigin::Miranda);
19578    }
19579    #[test]
19580    fn test_point_mass_705() {
19581        assert_eq!(
19582            Miranda.gravitational_parameter(),
19583            GravitationalParameter::km3_per_s2(4.3195168992321f64)
19584        );
19585        assert_eq!(
19586            DynOrigin::Miranda.try_gravitational_parameter(),
19587            Ok(GravitationalParameter::km3_per_s2(4.3195168992321f64))
19588        );
19589    }
19590    #[test]
19591    fn test_mean_radius_705() {
19592        assert_eq!(Miranda.mean_radius(), Distance::kilometers(235.8f64));
19593        assert_eq!(
19594            DynOrigin::Miranda.try_mean_radius(),
19595            Ok(Distance::kilometers(235.8f64))
19596        );
19597    }
19598    #[test]
19599    fn test_spheroid_705() {
19600        assert!(DynOrigin::Miranda.try_polar_radius().is_err());
19601        assert!(DynOrigin::Miranda.try_equatorial_radius().is_err());
19602    }
19603    #[test]
19604    fn test_tri_axial_705() {
19605        assert_eq!(
19606            Miranda.radii(),
19607            (
19608                Distance::kilometers(240.4f64),
19609                Distance::kilometers(234.2f64),
19610                Distance::kilometers(232.9f64)
19611            )
19612        );
19613        assert_eq!(
19614            DynOrigin::Miranda.try_radii(),
19615            Ok((
19616                Distance::kilometers(240.4f64),
19617                Distance::kilometers(234.2f64),
19618                Distance::kilometers(232.9f64)
19619            ))
19620        );
19621    }
19622    #[test]
19623    fn test_origin_706() {
19624        assert_eq!(Cordelia.id().0, 706i32);
19625        assert_eq!(Cordelia.to_string(), "Cordelia");
19626        assert_eq!(DynOrigin::from(Cordelia), DynOrigin::Cordelia);
19627    }
19628    #[test]
19629    fn test_point_mass_706() {
19630        assert!(DynOrigin::Cordelia.try_gravitational_parameter().is_err());
19631    }
19632    #[test]
19633    fn test_mean_radius_706() {
19634        assert_eq!(Cordelia.mean_radius(), Distance::kilometers(13f64));
19635        assert_eq!(
19636            DynOrigin::Cordelia.try_mean_radius(),
19637            Ok(Distance::kilometers(13f64))
19638        );
19639    }
19640    #[test]
19641    fn test_spheroid_706() {
19642        assert_eq!(Cordelia.polar_radius(), Distance::kilometers(13f64));
19643        assert_eq!(
19644            DynOrigin::Cordelia.try_polar_radius(),
19645            Ok(Distance::kilometers(13f64))
19646        );
19647        assert_eq!(Cordelia.equatorial_radius(), Distance::kilometers(13f64));
19648        assert_eq!(
19649            DynOrigin::Cordelia.try_equatorial_radius(),
19650            Ok(Distance::kilometers(13f64))
19651        );
19652    }
19653    #[test]
19654    fn test_tri_axial_706() {
19655        assert_eq!(
19656            Cordelia.radii(),
19657            (
19658                Distance::kilometers(13f64),
19659                Distance::kilometers(13f64),
19660                Distance::kilometers(13f64)
19661            )
19662        );
19663        assert_eq!(
19664            DynOrigin::Cordelia.try_radii(),
19665            Ok((
19666                Distance::kilometers(13f64),
19667                Distance::kilometers(13f64),
19668                Distance::kilometers(13f64)
19669            ))
19670        );
19671    }
19672    #[test]
19673    fn test_origin_707() {
19674        assert_eq!(Ophelia.id().0, 707i32);
19675        assert_eq!(Ophelia.to_string(), "Ophelia");
19676        assert_eq!(DynOrigin::from(Ophelia), DynOrigin::Ophelia);
19677    }
19678    #[test]
19679    fn test_point_mass_707() {
19680        assert!(DynOrigin::Ophelia.try_gravitational_parameter().is_err());
19681    }
19682    #[test]
19683    fn test_mean_radius_707() {
19684        assert_eq!(Ophelia.mean_radius(), Distance::kilometers(15f64));
19685        assert_eq!(
19686            DynOrigin::Ophelia.try_mean_radius(),
19687            Ok(Distance::kilometers(15f64))
19688        );
19689    }
19690    #[test]
19691    fn test_spheroid_707() {
19692        assert_eq!(Ophelia.polar_radius(), Distance::kilometers(15f64));
19693        assert_eq!(
19694            DynOrigin::Ophelia.try_polar_radius(),
19695            Ok(Distance::kilometers(15f64))
19696        );
19697        assert_eq!(Ophelia.equatorial_radius(), Distance::kilometers(15f64));
19698        assert_eq!(
19699            DynOrigin::Ophelia.try_equatorial_radius(),
19700            Ok(Distance::kilometers(15f64))
19701        );
19702    }
19703    #[test]
19704    fn test_tri_axial_707() {
19705        assert_eq!(
19706            Ophelia.radii(),
19707            (
19708                Distance::kilometers(15f64),
19709                Distance::kilometers(15f64),
19710                Distance::kilometers(15f64)
19711            )
19712        );
19713        assert_eq!(
19714            DynOrigin::Ophelia.try_radii(),
19715            Ok((
19716                Distance::kilometers(15f64),
19717                Distance::kilometers(15f64),
19718                Distance::kilometers(15f64)
19719            ))
19720        );
19721    }
19722    #[test]
19723    fn test_origin_708() {
19724        assert_eq!(Bianca.id().0, 708i32);
19725        assert_eq!(Bianca.to_string(), "Bianca");
19726        assert_eq!(DynOrigin::from(Bianca), DynOrigin::Bianca);
19727    }
19728    #[test]
19729    fn test_point_mass_708() {
19730        assert!(DynOrigin::Bianca.try_gravitational_parameter().is_err());
19731    }
19732    #[test]
19733    fn test_mean_radius_708() {
19734        assert_eq!(Bianca.mean_radius(), Distance::kilometers(21f64));
19735        assert_eq!(
19736            DynOrigin::Bianca.try_mean_radius(),
19737            Ok(Distance::kilometers(21f64))
19738        );
19739    }
19740    #[test]
19741    fn test_spheroid_708() {
19742        assert_eq!(Bianca.polar_radius(), Distance::kilometers(21f64));
19743        assert_eq!(
19744            DynOrigin::Bianca.try_polar_radius(),
19745            Ok(Distance::kilometers(21f64))
19746        );
19747        assert_eq!(Bianca.equatorial_radius(), Distance::kilometers(21f64));
19748        assert_eq!(
19749            DynOrigin::Bianca.try_equatorial_radius(),
19750            Ok(Distance::kilometers(21f64))
19751        );
19752    }
19753    #[test]
19754    fn test_tri_axial_708() {
19755        assert_eq!(
19756            Bianca.radii(),
19757            (
19758                Distance::kilometers(21f64),
19759                Distance::kilometers(21f64),
19760                Distance::kilometers(21f64)
19761            )
19762        );
19763        assert_eq!(
19764            DynOrigin::Bianca.try_radii(),
19765            Ok((
19766                Distance::kilometers(21f64),
19767                Distance::kilometers(21f64),
19768                Distance::kilometers(21f64)
19769            ))
19770        );
19771    }
19772    #[test]
19773    fn test_origin_709() {
19774        assert_eq!(Cressida.id().0, 709i32);
19775        assert_eq!(Cressida.to_string(), "Cressida");
19776        assert_eq!(DynOrigin::from(Cressida), DynOrigin::Cressida);
19777    }
19778    #[test]
19779    fn test_point_mass_709() {
19780        assert!(DynOrigin::Cressida.try_gravitational_parameter().is_err());
19781    }
19782    #[test]
19783    fn test_mean_radius_709() {
19784        assert_eq!(Cressida.mean_radius(), Distance::kilometers(31f64));
19785        assert_eq!(
19786            DynOrigin::Cressida.try_mean_radius(),
19787            Ok(Distance::kilometers(31f64))
19788        );
19789    }
19790    #[test]
19791    fn test_spheroid_709() {
19792        assert_eq!(Cressida.polar_radius(), Distance::kilometers(31f64));
19793        assert_eq!(
19794            DynOrigin::Cressida.try_polar_radius(),
19795            Ok(Distance::kilometers(31f64))
19796        );
19797        assert_eq!(Cressida.equatorial_radius(), Distance::kilometers(31f64));
19798        assert_eq!(
19799            DynOrigin::Cressida.try_equatorial_radius(),
19800            Ok(Distance::kilometers(31f64))
19801        );
19802    }
19803    #[test]
19804    fn test_tri_axial_709() {
19805        assert_eq!(
19806            Cressida.radii(),
19807            (
19808                Distance::kilometers(31f64),
19809                Distance::kilometers(31f64),
19810                Distance::kilometers(31f64)
19811            )
19812        );
19813        assert_eq!(
19814            DynOrigin::Cressida.try_radii(),
19815            Ok((
19816                Distance::kilometers(31f64),
19817                Distance::kilometers(31f64),
19818                Distance::kilometers(31f64)
19819            ))
19820        );
19821    }
19822    #[test]
19823    fn test_origin_710() {
19824        assert_eq!(Desdemona.id().0, 710i32);
19825        assert_eq!(Desdemona.to_string(), "Desdemona");
19826        assert_eq!(DynOrigin::from(Desdemona), DynOrigin::Desdemona);
19827    }
19828    #[test]
19829    fn test_point_mass_710() {
19830        assert!(DynOrigin::Desdemona.try_gravitational_parameter().is_err());
19831    }
19832    #[test]
19833    fn test_mean_radius_710() {
19834        assert_eq!(Desdemona.mean_radius(), Distance::kilometers(27f64));
19835        assert_eq!(
19836            DynOrigin::Desdemona.try_mean_radius(),
19837            Ok(Distance::kilometers(27f64))
19838        );
19839    }
19840    #[test]
19841    fn test_spheroid_710() {
19842        assert_eq!(Desdemona.polar_radius(), Distance::kilometers(27f64));
19843        assert_eq!(
19844            DynOrigin::Desdemona.try_polar_radius(),
19845            Ok(Distance::kilometers(27f64))
19846        );
19847        assert_eq!(Desdemona.equatorial_radius(), Distance::kilometers(27f64));
19848        assert_eq!(
19849            DynOrigin::Desdemona.try_equatorial_radius(),
19850            Ok(Distance::kilometers(27f64))
19851        );
19852    }
19853    #[test]
19854    fn test_tri_axial_710() {
19855        assert_eq!(
19856            Desdemona.radii(),
19857            (
19858                Distance::kilometers(27f64),
19859                Distance::kilometers(27f64),
19860                Distance::kilometers(27f64)
19861            )
19862        );
19863        assert_eq!(
19864            DynOrigin::Desdemona.try_radii(),
19865            Ok((
19866                Distance::kilometers(27f64),
19867                Distance::kilometers(27f64),
19868                Distance::kilometers(27f64)
19869            ))
19870        );
19871    }
19872    #[test]
19873    fn test_origin_711() {
19874        assert_eq!(Juliet.id().0, 711i32);
19875        assert_eq!(Juliet.to_string(), "Juliet");
19876        assert_eq!(DynOrigin::from(Juliet), DynOrigin::Juliet);
19877    }
19878    #[test]
19879    fn test_point_mass_711() {
19880        assert!(DynOrigin::Juliet.try_gravitational_parameter().is_err());
19881    }
19882    #[test]
19883    fn test_mean_radius_711() {
19884        assert_eq!(Juliet.mean_radius(), Distance::kilometers(42f64));
19885        assert_eq!(
19886            DynOrigin::Juliet.try_mean_radius(),
19887            Ok(Distance::kilometers(42f64))
19888        );
19889    }
19890    #[test]
19891    fn test_spheroid_711() {
19892        assert_eq!(Juliet.polar_radius(), Distance::kilometers(42f64));
19893        assert_eq!(
19894            DynOrigin::Juliet.try_polar_radius(),
19895            Ok(Distance::kilometers(42f64))
19896        );
19897        assert_eq!(Juliet.equatorial_radius(), Distance::kilometers(42f64));
19898        assert_eq!(
19899            DynOrigin::Juliet.try_equatorial_radius(),
19900            Ok(Distance::kilometers(42f64))
19901        );
19902    }
19903    #[test]
19904    fn test_tri_axial_711() {
19905        assert_eq!(
19906            Juliet.radii(),
19907            (
19908                Distance::kilometers(42f64),
19909                Distance::kilometers(42f64),
19910                Distance::kilometers(42f64)
19911            )
19912        );
19913        assert_eq!(
19914            DynOrigin::Juliet.try_radii(),
19915            Ok((
19916                Distance::kilometers(42f64),
19917                Distance::kilometers(42f64),
19918                Distance::kilometers(42f64)
19919            ))
19920        );
19921    }
19922    #[test]
19923    fn test_origin_712() {
19924        assert_eq!(Portia.id().0, 712i32);
19925        assert_eq!(Portia.to_string(), "Portia");
19926        assert_eq!(DynOrigin::from(Portia), DynOrigin::Portia);
19927    }
19928    #[test]
19929    fn test_point_mass_712() {
19930        assert!(DynOrigin::Portia.try_gravitational_parameter().is_err());
19931    }
19932    #[test]
19933    fn test_mean_radius_712() {
19934        assert_eq!(Portia.mean_radius(), Distance::kilometers(54f64));
19935        assert_eq!(
19936            DynOrigin::Portia.try_mean_radius(),
19937            Ok(Distance::kilometers(54f64))
19938        );
19939    }
19940    #[test]
19941    fn test_spheroid_712() {
19942        assert_eq!(Portia.polar_radius(), Distance::kilometers(54f64));
19943        assert_eq!(
19944            DynOrigin::Portia.try_polar_radius(),
19945            Ok(Distance::kilometers(54f64))
19946        );
19947        assert_eq!(Portia.equatorial_radius(), Distance::kilometers(54f64));
19948        assert_eq!(
19949            DynOrigin::Portia.try_equatorial_radius(),
19950            Ok(Distance::kilometers(54f64))
19951        );
19952    }
19953    #[test]
19954    fn test_tri_axial_712() {
19955        assert_eq!(
19956            Portia.radii(),
19957            (
19958                Distance::kilometers(54f64),
19959                Distance::kilometers(54f64),
19960                Distance::kilometers(54f64)
19961            )
19962        );
19963        assert_eq!(
19964            DynOrigin::Portia.try_radii(),
19965            Ok((
19966                Distance::kilometers(54f64),
19967                Distance::kilometers(54f64),
19968                Distance::kilometers(54f64)
19969            ))
19970        );
19971    }
19972    #[test]
19973    fn test_origin_713() {
19974        assert_eq!(Rosalind.id().0, 713i32);
19975        assert_eq!(Rosalind.to_string(), "Rosalind");
19976        assert_eq!(DynOrigin::from(Rosalind), DynOrigin::Rosalind);
19977    }
19978    #[test]
19979    fn test_point_mass_713() {
19980        assert!(DynOrigin::Rosalind.try_gravitational_parameter().is_err());
19981    }
19982    #[test]
19983    fn test_mean_radius_713() {
19984        assert_eq!(Rosalind.mean_radius(), Distance::kilometers(27f64));
19985        assert_eq!(
19986            DynOrigin::Rosalind.try_mean_radius(),
19987            Ok(Distance::kilometers(27f64))
19988        );
19989    }
19990    #[test]
19991    fn test_spheroid_713() {
19992        assert_eq!(Rosalind.polar_radius(), Distance::kilometers(27f64));
19993        assert_eq!(
19994            DynOrigin::Rosalind.try_polar_radius(),
19995            Ok(Distance::kilometers(27f64))
19996        );
19997        assert_eq!(Rosalind.equatorial_radius(), Distance::kilometers(27f64));
19998        assert_eq!(
19999            DynOrigin::Rosalind.try_equatorial_radius(),
20000            Ok(Distance::kilometers(27f64))
20001        );
20002    }
20003    #[test]
20004    fn test_tri_axial_713() {
20005        assert_eq!(
20006            Rosalind.radii(),
20007            (
20008                Distance::kilometers(27f64),
20009                Distance::kilometers(27f64),
20010                Distance::kilometers(27f64)
20011            )
20012        );
20013        assert_eq!(
20014            DynOrigin::Rosalind.try_radii(),
20015            Ok((
20016                Distance::kilometers(27f64),
20017                Distance::kilometers(27f64),
20018                Distance::kilometers(27f64)
20019            ))
20020        );
20021    }
20022    #[test]
20023    fn test_origin_714() {
20024        assert_eq!(Belinda.id().0, 714i32);
20025        assert_eq!(Belinda.to_string(), "Belinda");
20026        assert_eq!(DynOrigin::from(Belinda), DynOrigin::Belinda);
20027    }
20028    #[test]
20029    fn test_point_mass_714() {
20030        assert!(DynOrigin::Belinda.try_gravitational_parameter().is_err());
20031    }
20032    #[test]
20033    fn test_mean_radius_714() {
20034        assert_eq!(Belinda.mean_radius(), Distance::kilometers(33f64));
20035        assert_eq!(
20036            DynOrigin::Belinda.try_mean_radius(),
20037            Ok(Distance::kilometers(33f64))
20038        );
20039    }
20040    #[test]
20041    fn test_spheroid_714() {
20042        assert_eq!(Belinda.polar_radius(), Distance::kilometers(33f64));
20043        assert_eq!(
20044            DynOrigin::Belinda.try_polar_radius(),
20045            Ok(Distance::kilometers(33f64))
20046        );
20047        assert_eq!(Belinda.equatorial_radius(), Distance::kilometers(33f64));
20048        assert_eq!(
20049            DynOrigin::Belinda.try_equatorial_radius(),
20050            Ok(Distance::kilometers(33f64))
20051        );
20052    }
20053    #[test]
20054    fn test_tri_axial_714() {
20055        assert_eq!(
20056            Belinda.radii(),
20057            (
20058                Distance::kilometers(33f64),
20059                Distance::kilometers(33f64),
20060                Distance::kilometers(33f64)
20061            )
20062        );
20063        assert_eq!(
20064            DynOrigin::Belinda.try_radii(),
20065            Ok((
20066                Distance::kilometers(33f64),
20067                Distance::kilometers(33f64),
20068                Distance::kilometers(33f64)
20069            ))
20070        );
20071    }
20072    #[test]
20073    fn test_origin_715() {
20074        assert_eq!(Puck.id().0, 715i32);
20075        assert_eq!(Puck.to_string(), "Puck");
20076        assert_eq!(DynOrigin::from(Puck), DynOrigin::Puck);
20077    }
20078    #[test]
20079    fn test_point_mass_715() {
20080        assert!(DynOrigin::Puck.try_gravitational_parameter().is_err());
20081    }
20082    #[test]
20083    fn test_mean_radius_715() {
20084        assert_eq!(Puck.mean_radius(), Distance::kilometers(77f64));
20085        assert_eq!(
20086            DynOrigin::Puck.try_mean_radius(),
20087            Ok(Distance::kilometers(77f64))
20088        );
20089    }
20090    #[test]
20091    fn test_spheroid_715() {
20092        assert_eq!(Puck.polar_radius(), Distance::kilometers(77f64));
20093        assert_eq!(
20094            DynOrigin::Puck.try_polar_radius(),
20095            Ok(Distance::kilometers(77f64))
20096        );
20097        assert_eq!(Puck.equatorial_radius(), Distance::kilometers(77f64));
20098        assert_eq!(
20099            DynOrigin::Puck.try_equatorial_radius(),
20100            Ok(Distance::kilometers(77f64))
20101        );
20102    }
20103    #[test]
20104    fn test_tri_axial_715() {
20105        assert_eq!(
20106            Puck.radii(),
20107            (
20108                Distance::kilometers(77f64),
20109                Distance::kilometers(77f64),
20110                Distance::kilometers(77f64)
20111            )
20112        );
20113        assert_eq!(
20114            DynOrigin::Puck.try_radii(),
20115            Ok((
20116                Distance::kilometers(77f64),
20117                Distance::kilometers(77f64),
20118                Distance::kilometers(77f64)
20119            ))
20120        );
20121    }
20122    #[test]
20123    fn test_origin_716() {
20124        assert_eq!(Caliban.id().0, 716i32);
20125        assert_eq!(Caliban.to_string(), "Caliban");
20126        assert_eq!(DynOrigin::from(Caliban), DynOrigin::Caliban);
20127    }
20128    #[test]
20129    fn test_point_mass_716() {
20130        assert!(DynOrigin::Caliban.try_gravitational_parameter().is_err());
20131    }
20132    #[test]
20133    fn test_mean_radius_716() {
20134        assert!(DynOrigin::Caliban.try_mean_radius().is_err());
20135    }
20136    #[test]
20137    fn test_tri_axial_716() {
20138        assert!(DynOrigin::Caliban.try_radii().is_err());
20139    }
20140    #[test]
20141    fn test_spheroid_716() {
20142        assert!(DynOrigin::Caliban.try_polar_radius().is_err());
20143        assert!(DynOrigin::Caliban.try_equatorial_radius().is_err());
20144    }
20145    #[test]
20146    fn test_origin_717() {
20147        assert_eq!(Sycorax.id().0, 717i32);
20148        assert_eq!(Sycorax.to_string(), "Sycorax");
20149        assert_eq!(DynOrigin::from(Sycorax), DynOrigin::Sycorax);
20150    }
20151    #[test]
20152    fn test_point_mass_717() {
20153        assert!(DynOrigin::Sycorax.try_gravitational_parameter().is_err());
20154    }
20155    #[test]
20156    fn test_mean_radius_717() {
20157        assert!(DynOrigin::Sycorax.try_mean_radius().is_err());
20158    }
20159    #[test]
20160    fn test_tri_axial_717() {
20161        assert!(DynOrigin::Sycorax.try_radii().is_err());
20162    }
20163    #[test]
20164    fn test_spheroid_717() {
20165        assert!(DynOrigin::Sycorax.try_polar_radius().is_err());
20166        assert!(DynOrigin::Sycorax.try_equatorial_radius().is_err());
20167    }
20168    #[test]
20169    fn test_origin_718() {
20170        assert_eq!(Prospero.id().0, 718i32);
20171        assert_eq!(Prospero.to_string(), "Prospero");
20172        assert_eq!(DynOrigin::from(Prospero), DynOrigin::Prospero);
20173    }
20174    #[test]
20175    fn test_point_mass_718() {
20176        assert!(DynOrigin::Prospero.try_gravitational_parameter().is_err());
20177    }
20178    #[test]
20179    fn test_mean_radius_718() {
20180        assert!(DynOrigin::Prospero.try_mean_radius().is_err());
20181    }
20182    #[test]
20183    fn test_tri_axial_718() {
20184        assert!(DynOrigin::Prospero.try_radii().is_err());
20185    }
20186    #[test]
20187    fn test_spheroid_718() {
20188        assert!(DynOrigin::Prospero.try_polar_radius().is_err());
20189        assert!(DynOrigin::Prospero.try_equatorial_radius().is_err());
20190    }
20191    #[test]
20192    fn test_origin_719() {
20193        assert_eq!(Setebos.id().0, 719i32);
20194        assert_eq!(Setebos.to_string(), "Setebos");
20195        assert_eq!(DynOrigin::from(Setebos), DynOrigin::Setebos);
20196    }
20197    #[test]
20198    fn test_point_mass_719() {
20199        assert!(DynOrigin::Setebos.try_gravitational_parameter().is_err());
20200    }
20201    #[test]
20202    fn test_mean_radius_719() {
20203        assert!(DynOrigin::Setebos.try_mean_radius().is_err());
20204    }
20205    #[test]
20206    fn test_tri_axial_719() {
20207        assert!(DynOrigin::Setebos.try_radii().is_err());
20208    }
20209    #[test]
20210    fn test_spheroid_719() {
20211        assert!(DynOrigin::Setebos.try_polar_radius().is_err());
20212        assert!(DynOrigin::Setebos.try_equatorial_radius().is_err());
20213    }
20214    #[test]
20215    fn test_origin_720() {
20216        assert_eq!(Stephano.id().0, 720i32);
20217        assert_eq!(Stephano.to_string(), "Stephano");
20218        assert_eq!(DynOrigin::from(Stephano), DynOrigin::Stephano);
20219    }
20220    #[test]
20221    fn test_point_mass_720() {
20222        assert!(DynOrigin::Stephano.try_gravitational_parameter().is_err());
20223    }
20224    #[test]
20225    fn test_mean_radius_720() {
20226        assert!(DynOrigin::Stephano.try_mean_radius().is_err());
20227    }
20228    #[test]
20229    fn test_tri_axial_720() {
20230        assert!(DynOrigin::Stephano.try_radii().is_err());
20231    }
20232    #[test]
20233    fn test_spheroid_720() {
20234        assert!(DynOrigin::Stephano.try_polar_radius().is_err());
20235        assert!(DynOrigin::Stephano.try_equatorial_radius().is_err());
20236    }
20237    #[test]
20238    fn test_origin_721() {
20239        assert_eq!(Trinculo.id().0, 721i32);
20240        assert_eq!(Trinculo.to_string(), "Trinculo");
20241        assert_eq!(DynOrigin::from(Trinculo), DynOrigin::Trinculo);
20242    }
20243    #[test]
20244    fn test_point_mass_721() {
20245        assert!(DynOrigin::Trinculo.try_gravitational_parameter().is_err());
20246    }
20247    #[test]
20248    fn test_mean_radius_721() {
20249        assert!(DynOrigin::Trinculo.try_mean_radius().is_err());
20250    }
20251    #[test]
20252    fn test_tri_axial_721() {
20253        assert!(DynOrigin::Trinculo.try_radii().is_err());
20254    }
20255    #[test]
20256    fn test_spheroid_721() {
20257        assert!(DynOrigin::Trinculo.try_polar_radius().is_err());
20258        assert!(DynOrigin::Trinculo.try_equatorial_radius().is_err());
20259    }
20260    #[test]
20261    fn test_origin_722() {
20262        assert_eq!(Francisco.id().0, 722i32);
20263        assert_eq!(Francisco.to_string(), "Francisco");
20264        assert_eq!(DynOrigin::from(Francisco), DynOrigin::Francisco);
20265    }
20266    #[test]
20267    fn test_point_mass_722() {
20268        assert!(DynOrigin::Francisco.try_gravitational_parameter().is_err());
20269    }
20270    #[test]
20271    fn test_mean_radius_722() {
20272        assert!(DynOrigin::Francisco.try_mean_radius().is_err());
20273    }
20274    #[test]
20275    fn test_tri_axial_722() {
20276        assert!(DynOrigin::Francisco.try_radii().is_err());
20277    }
20278    #[test]
20279    fn test_spheroid_722() {
20280        assert!(DynOrigin::Francisco.try_polar_radius().is_err());
20281        assert!(DynOrigin::Francisco.try_equatorial_radius().is_err());
20282    }
20283    #[test]
20284    fn test_origin_723() {
20285        assert_eq!(Margaret.id().0, 723i32);
20286        assert_eq!(Margaret.to_string(), "Margaret");
20287        assert_eq!(DynOrigin::from(Margaret), DynOrigin::Margaret);
20288    }
20289    #[test]
20290    fn test_point_mass_723() {
20291        assert!(DynOrigin::Margaret.try_gravitational_parameter().is_err());
20292    }
20293    #[test]
20294    fn test_mean_radius_723() {
20295        assert!(DynOrigin::Margaret.try_mean_radius().is_err());
20296    }
20297    #[test]
20298    fn test_tri_axial_723() {
20299        assert!(DynOrigin::Margaret.try_radii().is_err());
20300    }
20301    #[test]
20302    fn test_spheroid_723() {
20303        assert!(DynOrigin::Margaret.try_polar_radius().is_err());
20304        assert!(DynOrigin::Margaret.try_equatorial_radius().is_err());
20305    }
20306    #[test]
20307    fn test_origin_724() {
20308        assert_eq!(Ferdinand.id().0, 724i32);
20309        assert_eq!(Ferdinand.to_string(), "Ferdinand");
20310        assert_eq!(DynOrigin::from(Ferdinand), DynOrigin::Ferdinand);
20311    }
20312    #[test]
20313    fn test_point_mass_724() {
20314        assert!(DynOrigin::Ferdinand.try_gravitational_parameter().is_err());
20315    }
20316    #[test]
20317    fn test_mean_radius_724() {
20318        assert!(DynOrigin::Ferdinand.try_mean_radius().is_err());
20319    }
20320    #[test]
20321    fn test_tri_axial_724() {
20322        assert!(DynOrigin::Ferdinand.try_radii().is_err());
20323    }
20324    #[test]
20325    fn test_spheroid_724() {
20326        assert!(DynOrigin::Ferdinand.try_polar_radius().is_err());
20327        assert!(DynOrigin::Ferdinand.try_equatorial_radius().is_err());
20328    }
20329    #[test]
20330    fn test_origin_725() {
20331        assert_eq!(Perdita.id().0, 725i32);
20332        assert_eq!(Perdita.to_string(), "Perdita");
20333        assert_eq!(DynOrigin::from(Perdita), DynOrigin::Perdita);
20334    }
20335    #[test]
20336    fn test_point_mass_725() {
20337        assert!(DynOrigin::Perdita.try_gravitational_parameter().is_err());
20338    }
20339    #[test]
20340    fn test_mean_radius_725() {
20341        assert!(DynOrigin::Perdita.try_mean_radius().is_err());
20342    }
20343    #[test]
20344    fn test_tri_axial_725() {
20345        assert!(DynOrigin::Perdita.try_radii().is_err());
20346    }
20347    #[test]
20348    fn test_spheroid_725() {
20349        assert!(DynOrigin::Perdita.try_polar_radius().is_err());
20350        assert!(DynOrigin::Perdita.try_equatorial_radius().is_err());
20351    }
20352    #[test]
20353    fn test_origin_726() {
20354        assert_eq!(Mab.id().0, 726i32);
20355        assert_eq!(Mab.to_string(), "Mab");
20356        assert_eq!(DynOrigin::from(Mab), DynOrigin::Mab);
20357    }
20358    #[test]
20359    fn test_point_mass_726() {
20360        assert!(DynOrigin::Mab.try_gravitational_parameter().is_err());
20361    }
20362    #[test]
20363    fn test_mean_radius_726() {
20364        assert!(DynOrigin::Mab.try_mean_radius().is_err());
20365    }
20366    #[test]
20367    fn test_tri_axial_726() {
20368        assert!(DynOrigin::Mab.try_radii().is_err());
20369    }
20370    #[test]
20371    fn test_spheroid_726() {
20372        assert!(DynOrigin::Mab.try_polar_radius().is_err());
20373        assert!(DynOrigin::Mab.try_equatorial_radius().is_err());
20374    }
20375    #[test]
20376    fn test_origin_727() {
20377        assert_eq!(Cupid.id().0, 727i32);
20378        assert_eq!(Cupid.to_string(), "Cupid");
20379        assert_eq!(DynOrigin::from(Cupid), DynOrigin::Cupid);
20380    }
20381    #[test]
20382    fn test_point_mass_727() {
20383        assert!(DynOrigin::Cupid.try_gravitational_parameter().is_err());
20384    }
20385    #[test]
20386    fn test_mean_radius_727() {
20387        assert!(DynOrigin::Cupid.try_mean_radius().is_err());
20388    }
20389    #[test]
20390    fn test_tri_axial_727() {
20391        assert!(DynOrigin::Cupid.try_radii().is_err());
20392    }
20393    #[test]
20394    fn test_spheroid_727() {
20395        assert!(DynOrigin::Cupid.try_polar_radius().is_err());
20396        assert!(DynOrigin::Cupid.try_equatorial_radius().is_err());
20397    }
20398    #[test]
20399    fn test_origin_801() {
20400        assert_eq!(Triton.id().0, 801i32);
20401        assert_eq!(Triton.to_string(), "Triton");
20402        assert_eq!(DynOrigin::from(Triton), DynOrigin::Triton);
20403    }
20404    #[test]
20405    fn test_point_mass_801() {
20406        assert_eq!(
20407            Triton.gravitational_parameter(),
20408            GravitationalParameter::km3_per_s2(1428.495462910464f64)
20409        );
20410        assert_eq!(
20411            DynOrigin::Triton.try_gravitational_parameter(),
20412            Ok(GravitationalParameter::km3_per_s2(1428.495462910464f64))
20413        );
20414    }
20415    #[test]
20416    fn test_mean_radius_801() {
20417        assert_eq!(Triton.mean_radius(), Distance::kilometers(1352.6f64));
20418        assert_eq!(
20419            DynOrigin::Triton.try_mean_radius(),
20420            Ok(Distance::kilometers(1352.6f64))
20421        );
20422    }
20423    #[test]
20424    fn test_spheroid_801() {
20425        assert_eq!(Triton.polar_radius(), Distance::kilometers(1352.6f64));
20426        assert_eq!(
20427            DynOrigin::Triton.try_polar_radius(),
20428            Ok(Distance::kilometers(1352.6f64))
20429        );
20430        assert_eq!(Triton.equatorial_radius(), Distance::kilometers(1352.6f64));
20431        assert_eq!(
20432            DynOrigin::Triton.try_equatorial_radius(),
20433            Ok(Distance::kilometers(1352.6f64))
20434        );
20435    }
20436    #[test]
20437    fn test_tri_axial_801() {
20438        assert_eq!(
20439            Triton.radii(),
20440            (
20441                Distance::kilometers(1352.6f64),
20442                Distance::kilometers(1352.6f64),
20443                Distance::kilometers(1352.6f64)
20444            )
20445        );
20446        assert_eq!(
20447            DynOrigin::Triton.try_radii(),
20448            Ok((
20449                Distance::kilometers(1352.6f64),
20450                Distance::kilometers(1352.6f64),
20451                Distance::kilometers(1352.6f64)
20452            ))
20453        );
20454    }
20455    #[test]
20456    fn test_origin_802() {
20457        assert_eq!(Nereid.id().0, 802i32);
20458        assert_eq!(Nereid.to_string(), "Nereid");
20459        assert_eq!(DynOrigin::from(Nereid), DynOrigin::Nereid);
20460    }
20461    #[test]
20462    fn test_point_mass_802() {
20463        assert!(DynOrigin::Nereid.try_gravitational_parameter().is_err());
20464    }
20465    #[test]
20466    fn test_mean_radius_802() {
20467        assert_eq!(Nereid.mean_radius(), Distance::kilometers(170f64));
20468        assert_eq!(
20469            DynOrigin::Nereid.try_mean_radius(),
20470            Ok(Distance::kilometers(170f64))
20471        );
20472    }
20473    #[test]
20474    fn test_spheroid_802() {
20475        assert_eq!(Nereid.polar_radius(), Distance::kilometers(170f64));
20476        assert_eq!(
20477            DynOrigin::Nereid.try_polar_radius(),
20478            Ok(Distance::kilometers(170f64))
20479        );
20480        assert_eq!(Nereid.equatorial_radius(), Distance::kilometers(170f64));
20481        assert_eq!(
20482            DynOrigin::Nereid.try_equatorial_radius(),
20483            Ok(Distance::kilometers(170f64))
20484        );
20485    }
20486    #[test]
20487    fn test_tri_axial_802() {
20488        assert_eq!(
20489            Nereid.radii(),
20490            (
20491                Distance::kilometers(170f64),
20492                Distance::kilometers(170f64),
20493                Distance::kilometers(170f64)
20494            )
20495        );
20496        assert_eq!(
20497            DynOrigin::Nereid.try_radii(),
20498            Ok((
20499                Distance::kilometers(170f64),
20500                Distance::kilometers(170f64),
20501                Distance::kilometers(170f64)
20502            ))
20503        );
20504    }
20505    #[test]
20506    fn test_origin_803() {
20507        assert_eq!(Naiad.id().0, 803i32);
20508        assert_eq!(Naiad.to_string(), "Naiad");
20509        assert_eq!(DynOrigin::from(Naiad), DynOrigin::Naiad);
20510    }
20511    #[test]
20512    fn test_point_mass_803() {
20513        assert_eq!(
20514            Naiad.gravitational_parameter(),
20515            GravitationalParameter::km3_per_s2(0.008530281246540886f64)
20516        );
20517        assert_eq!(
20518            DynOrigin::Naiad.try_gravitational_parameter(),
20519            Ok(GravitationalParameter::km3_per_s2(0.008530281246540886f64))
20520        );
20521    }
20522    #[test]
20523    fn test_mean_radius_803() {
20524        assert_eq!(Naiad.mean_radius(), Distance::kilometers(29f64));
20525        assert_eq!(
20526            DynOrigin::Naiad.try_mean_radius(),
20527            Ok(Distance::kilometers(29f64))
20528        );
20529    }
20530    #[test]
20531    fn test_spheroid_803() {
20532        assert_eq!(Naiad.polar_radius(), Distance::kilometers(29f64));
20533        assert_eq!(
20534            DynOrigin::Naiad.try_polar_radius(),
20535            Ok(Distance::kilometers(29f64))
20536        );
20537        assert_eq!(Naiad.equatorial_radius(), Distance::kilometers(29f64));
20538        assert_eq!(
20539            DynOrigin::Naiad.try_equatorial_radius(),
20540            Ok(Distance::kilometers(29f64))
20541        );
20542    }
20543    #[test]
20544    fn test_tri_axial_803() {
20545        assert_eq!(
20546            Naiad.radii(),
20547            (
20548                Distance::kilometers(29f64),
20549                Distance::kilometers(29f64),
20550                Distance::kilometers(29f64)
20551            )
20552        );
20553        assert_eq!(
20554            DynOrigin::Naiad.try_radii(),
20555            Ok((
20556                Distance::kilometers(29f64),
20557                Distance::kilometers(29f64),
20558                Distance::kilometers(29f64)
20559            ))
20560        );
20561    }
20562    #[test]
20563    fn test_origin_804() {
20564        assert_eq!(Thalassa.id().0, 804i32);
20565        assert_eq!(Thalassa.to_string(), "Thalassa");
20566        assert_eq!(DynOrigin::from(Thalassa), DynOrigin::Thalassa);
20567    }
20568    #[test]
20569    fn test_point_mass_804() {
20570        assert_eq!(
20571            Thalassa.gravitational_parameter(),
20572            GravitationalParameter::km3_per_s2(0.0235887319799217f64)
20573        );
20574        assert_eq!(
20575            DynOrigin::Thalassa.try_gravitational_parameter(),
20576            Ok(GravitationalParameter::km3_per_s2(0.0235887319799217f64))
20577        );
20578    }
20579    #[test]
20580    fn test_mean_radius_804() {
20581        assert_eq!(Thalassa.mean_radius(), Distance::kilometers(40f64));
20582        assert_eq!(
20583            DynOrigin::Thalassa.try_mean_radius(),
20584            Ok(Distance::kilometers(40f64))
20585        );
20586    }
20587    #[test]
20588    fn test_spheroid_804() {
20589        assert_eq!(Thalassa.polar_radius(), Distance::kilometers(40f64));
20590        assert_eq!(
20591            DynOrigin::Thalassa.try_polar_radius(),
20592            Ok(Distance::kilometers(40f64))
20593        );
20594        assert_eq!(Thalassa.equatorial_radius(), Distance::kilometers(40f64));
20595        assert_eq!(
20596            DynOrigin::Thalassa.try_equatorial_radius(),
20597            Ok(Distance::kilometers(40f64))
20598        );
20599    }
20600    #[test]
20601    fn test_tri_axial_804() {
20602        assert_eq!(
20603            Thalassa.radii(),
20604            (
20605                Distance::kilometers(40f64),
20606                Distance::kilometers(40f64),
20607                Distance::kilometers(40f64)
20608            )
20609        );
20610        assert_eq!(
20611            DynOrigin::Thalassa.try_radii(),
20612            Ok((
20613                Distance::kilometers(40f64),
20614                Distance::kilometers(40f64),
20615                Distance::kilometers(40f64)
20616            ))
20617        );
20618    }
20619    #[test]
20620    fn test_origin_805() {
20621        assert_eq!(Despina.id().0, 805i32);
20622        assert_eq!(Despina.to_string(), "Despina");
20623        assert_eq!(DynOrigin::from(Despina), DynOrigin::Despina);
20624    }
20625    #[test]
20626    fn test_point_mass_805() {
20627        assert_eq!(
20628            Despina.gravitational_parameter(),
20629            GravitationalParameter::km3_per_s2(0.1167318403814998f64)
20630        );
20631        assert_eq!(
20632            DynOrigin::Despina.try_gravitational_parameter(),
20633            Ok(GravitationalParameter::km3_per_s2(0.1167318403814998f64))
20634        );
20635    }
20636    #[test]
20637    fn test_mean_radius_805() {
20638        assert_eq!(Despina.mean_radius(), Distance::kilometers(74f64));
20639        assert_eq!(
20640            DynOrigin::Despina.try_mean_radius(),
20641            Ok(Distance::kilometers(74f64))
20642        );
20643    }
20644    #[test]
20645    fn test_spheroid_805() {
20646        assert_eq!(Despina.polar_radius(), Distance::kilometers(74f64));
20647        assert_eq!(
20648            DynOrigin::Despina.try_polar_radius(),
20649            Ok(Distance::kilometers(74f64))
20650        );
20651        assert_eq!(Despina.equatorial_radius(), Distance::kilometers(74f64));
20652        assert_eq!(
20653            DynOrigin::Despina.try_equatorial_radius(),
20654            Ok(Distance::kilometers(74f64))
20655        );
20656    }
20657    #[test]
20658    fn test_tri_axial_805() {
20659        assert_eq!(
20660            Despina.radii(),
20661            (
20662                Distance::kilometers(74f64),
20663                Distance::kilometers(74f64),
20664                Distance::kilometers(74f64)
20665            )
20666        );
20667        assert_eq!(
20668            DynOrigin::Despina.try_radii(),
20669            Ok((
20670                Distance::kilometers(74f64),
20671                Distance::kilometers(74f64),
20672                Distance::kilometers(74f64)
20673            ))
20674        );
20675    }
20676    #[test]
20677    fn test_origin_806() {
20678        assert_eq!(Galatea.id().0, 806i32);
20679        assert_eq!(Galatea.to_string(), "Galatea");
20680        assert_eq!(DynOrigin::from(Galatea), DynOrigin::Galatea);
20681    }
20682    #[test]
20683    fn test_point_mass_806() {
20684        assert_eq!(
20685            Galatea.gravitational_parameter(),
20686            GravitationalParameter::km3_per_s2(0.189898503906069f64)
20687        );
20688        assert_eq!(
20689            DynOrigin::Galatea.try_gravitational_parameter(),
20690            Ok(GravitationalParameter::km3_per_s2(0.189898503906069f64))
20691        );
20692    }
20693    #[test]
20694    fn test_mean_radius_806() {
20695        assert_eq!(Galatea.mean_radius(), Distance::kilometers(79f64));
20696        assert_eq!(
20697            DynOrigin::Galatea.try_mean_radius(),
20698            Ok(Distance::kilometers(79f64))
20699        );
20700    }
20701    #[test]
20702    fn test_spheroid_806() {
20703        assert_eq!(Galatea.polar_radius(), Distance::kilometers(79f64));
20704        assert_eq!(
20705            DynOrigin::Galatea.try_polar_radius(),
20706            Ok(Distance::kilometers(79f64))
20707        );
20708        assert_eq!(Galatea.equatorial_radius(), Distance::kilometers(79f64));
20709        assert_eq!(
20710            DynOrigin::Galatea.try_equatorial_radius(),
20711            Ok(Distance::kilometers(79f64))
20712        );
20713    }
20714    #[test]
20715    fn test_tri_axial_806() {
20716        assert_eq!(
20717            Galatea.radii(),
20718            (
20719                Distance::kilometers(79f64),
20720                Distance::kilometers(79f64),
20721                Distance::kilometers(79f64)
20722            )
20723        );
20724        assert_eq!(
20725            DynOrigin::Galatea.try_radii(),
20726            Ok((
20727                Distance::kilometers(79f64),
20728                Distance::kilometers(79f64),
20729                Distance::kilometers(79f64)
20730            ))
20731        );
20732    }
20733    #[test]
20734    fn test_origin_807() {
20735        assert_eq!(Larissa.id().0, 807i32);
20736        assert_eq!(Larissa.to_string(), "Larissa");
20737        assert_eq!(DynOrigin::from(Larissa), DynOrigin::Larissa);
20738    }
20739    #[test]
20740    fn test_point_mass_807() {
20741        assert_eq!(
20742            Larissa.gravitational_parameter(),
20743            GravitationalParameter::km3_per_s2(0.2548437405693583f64)
20744        );
20745        assert_eq!(
20746            DynOrigin::Larissa.try_gravitational_parameter(),
20747            Ok(GravitationalParameter::km3_per_s2(0.2548437405693583f64))
20748        );
20749    }
20750    #[test]
20751    fn test_mean_radius_807() {
20752        assert_eq!(Larissa.mean_radius(), Distance::kilometers(96f64));
20753        assert_eq!(
20754            DynOrigin::Larissa.try_mean_radius(),
20755            Ok(Distance::kilometers(96f64))
20756        );
20757    }
20758    #[test]
20759    fn test_spheroid_807() {
20760        assert_eq!(Larissa.polar_radius(), Distance::kilometers(96f64));
20761        assert_eq!(
20762            DynOrigin::Larissa.try_polar_radius(),
20763            Ok(Distance::kilometers(96f64))
20764        );
20765        assert_eq!(Larissa.equatorial_radius(), Distance::kilometers(96f64));
20766        assert_eq!(
20767            DynOrigin::Larissa.try_equatorial_radius(),
20768            Ok(Distance::kilometers(96f64))
20769        );
20770    }
20771    #[test]
20772    fn test_tri_axial_807() {
20773        assert_eq!(
20774            Larissa.radii(),
20775            (
20776                Distance::kilometers(96f64),
20777                Distance::kilometers(96f64),
20778                Distance::kilometers(96f64)
20779            )
20780        );
20781        assert_eq!(
20782            DynOrigin::Larissa.try_radii(),
20783            Ok((
20784                Distance::kilometers(96f64),
20785                Distance::kilometers(96f64),
20786                Distance::kilometers(96f64)
20787            ))
20788        );
20789    }
20790    #[test]
20791    fn test_origin_808() {
20792        assert_eq!(Proteus.id().0, 808i32);
20793        assert_eq!(Proteus.to_string(), "Proteus");
20794        assert_eq!(DynOrigin::from(Proteus), DynOrigin::Proteus);
20795    }
20796    #[test]
20797    fn test_point_mass_808() {
20798        assert_eq!(
20799            Proteus.gravitational_parameter(),
20800            GravitationalParameter::km3_per_s2(2.583422379120727f64)
20801        );
20802        assert_eq!(
20803            DynOrigin::Proteus.try_gravitational_parameter(),
20804            Ok(GravitationalParameter::km3_per_s2(2.583422379120727f64))
20805        );
20806    }
20807    #[test]
20808    fn test_mean_radius_808() {
20809        assert_eq!(Proteus.mean_radius(), Distance::kilometers(208f64));
20810        assert_eq!(
20811            DynOrigin::Proteus.try_mean_radius(),
20812            Ok(Distance::kilometers(208f64))
20813        );
20814    }
20815    #[test]
20816    fn test_spheroid_808() {
20817        assert!(DynOrigin::Proteus.try_polar_radius().is_err());
20818        assert!(DynOrigin::Proteus.try_equatorial_radius().is_err());
20819    }
20820    #[test]
20821    fn test_tri_axial_808() {
20822        assert_eq!(
20823            Proteus.radii(),
20824            (
20825                Distance::kilometers(218f64),
20826                Distance::kilometers(208f64),
20827                Distance::kilometers(201f64)
20828            )
20829        );
20830        assert_eq!(
20831            DynOrigin::Proteus.try_radii(),
20832            Ok((
20833                Distance::kilometers(218f64),
20834                Distance::kilometers(208f64),
20835                Distance::kilometers(201f64)
20836            ))
20837        );
20838    }
20839    #[test]
20840    fn test_origin_809() {
20841        assert_eq!(Halimede.id().0, 809i32);
20842        assert_eq!(Halimede.to_string(), "Halimede");
20843        assert_eq!(DynOrigin::from(Halimede), DynOrigin::Halimede);
20844    }
20845    #[test]
20846    fn test_point_mass_809() {
20847        assert!(DynOrigin::Halimede.try_gravitational_parameter().is_err());
20848    }
20849    #[test]
20850    fn test_mean_radius_809() {
20851        assert!(DynOrigin::Halimede.try_mean_radius().is_err());
20852    }
20853    #[test]
20854    fn test_tri_axial_809() {
20855        assert!(DynOrigin::Halimede.try_radii().is_err());
20856    }
20857    #[test]
20858    fn test_spheroid_809() {
20859        assert!(DynOrigin::Halimede.try_polar_radius().is_err());
20860        assert!(DynOrigin::Halimede.try_equatorial_radius().is_err());
20861    }
20862    #[test]
20863    fn test_origin_810() {
20864        assert_eq!(Psamathe.id().0, 810i32);
20865        assert_eq!(Psamathe.to_string(), "Psamathe");
20866        assert_eq!(DynOrigin::from(Psamathe), DynOrigin::Psamathe);
20867    }
20868    #[test]
20869    fn test_point_mass_810() {
20870        assert!(DynOrigin::Psamathe.try_gravitational_parameter().is_err());
20871    }
20872    #[test]
20873    fn test_mean_radius_810() {
20874        assert!(DynOrigin::Psamathe.try_mean_radius().is_err());
20875    }
20876    #[test]
20877    fn test_tri_axial_810() {
20878        assert!(DynOrigin::Psamathe.try_radii().is_err());
20879    }
20880    #[test]
20881    fn test_spheroid_810() {
20882        assert!(DynOrigin::Psamathe.try_polar_radius().is_err());
20883        assert!(DynOrigin::Psamathe.try_equatorial_radius().is_err());
20884    }
20885    #[test]
20886    fn test_origin_811() {
20887        assert_eq!(Sao.id().0, 811i32);
20888        assert_eq!(Sao.to_string(), "Sao");
20889        assert_eq!(DynOrigin::from(Sao), DynOrigin::Sao);
20890    }
20891    #[test]
20892    fn test_point_mass_811() {
20893        assert!(DynOrigin::Sao.try_gravitational_parameter().is_err());
20894    }
20895    #[test]
20896    fn test_mean_radius_811() {
20897        assert!(DynOrigin::Sao.try_mean_radius().is_err());
20898    }
20899    #[test]
20900    fn test_tri_axial_811() {
20901        assert!(DynOrigin::Sao.try_radii().is_err());
20902    }
20903    #[test]
20904    fn test_spheroid_811() {
20905        assert!(DynOrigin::Sao.try_polar_radius().is_err());
20906        assert!(DynOrigin::Sao.try_equatorial_radius().is_err());
20907    }
20908    #[test]
20909    fn test_origin_812() {
20910        assert_eq!(Laomedeia.id().0, 812i32);
20911        assert_eq!(Laomedeia.to_string(), "Laomedeia");
20912        assert_eq!(DynOrigin::from(Laomedeia), DynOrigin::Laomedeia);
20913    }
20914    #[test]
20915    fn test_point_mass_812() {
20916        assert!(DynOrigin::Laomedeia.try_gravitational_parameter().is_err());
20917    }
20918    #[test]
20919    fn test_mean_radius_812() {
20920        assert!(DynOrigin::Laomedeia.try_mean_radius().is_err());
20921    }
20922    #[test]
20923    fn test_tri_axial_812() {
20924        assert!(DynOrigin::Laomedeia.try_radii().is_err());
20925    }
20926    #[test]
20927    fn test_spheroid_812() {
20928        assert!(DynOrigin::Laomedeia.try_polar_radius().is_err());
20929        assert!(DynOrigin::Laomedeia.try_equatorial_radius().is_err());
20930    }
20931    #[test]
20932    fn test_origin_813() {
20933        assert_eq!(Neso.id().0, 813i32);
20934        assert_eq!(Neso.to_string(), "Neso");
20935        assert_eq!(DynOrigin::from(Neso), DynOrigin::Neso);
20936    }
20937    #[test]
20938    fn test_point_mass_813() {
20939        assert!(DynOrigin::Neso.try_gravitational_parameter().is_err());
20940    }
20941    #[test]
20942    fn test_mean_radius_813() {
20943        assert!(DynOrigin::Neso.try_mean_radius().is_err());
20944    }
20945    #[test]
20946    fn test_tri_axial_813() {
20947        assert!(DynOrigin::Neso.try_radii().is_err());
20948    }
20949    #[test]
20950    fn test_spheroid_813() {
20951        assert!(DynOrigin::Neso.try_polar_radius().is_err());
20952        assert!(DynOrigin::Neso.try_equatorial_radius().is_err());
20953    }
20954    #[test]
20955    fn test_origin_901() {
20956        assert_eq!(Charon.id().0, 901i32);
20957        assert_eq!(Charon.to_string(), "Charon");
20958        assert_eq!(DynOrigin::from(Charon), DynOrigin::Charon);
20959    }
20960    #[test]
20961    fn test_point_mass_901() {
20962        assert_eq!(
20963            Charon.gravitational_parameter(),
20964            GravitationalParameter::km3_per_s2(105.8799888601881f64)
20965        );
20966        assert_eq!(
20967            DynOrigin::Charon.try_gravitational_parameter(),
20968            Ok(GravitationalParameter::km3_per_s2(105.8799888601881f64))
20969        );
20970    }
20971    #[test]
20972    fn test_mean_radius_901() {
20973        assert_eq!(Charon.mean_radius(), Distance::kilometers(606f64));
20974        assert_eq!(
20975            DynOrigin::Charon.try_mean_radius(),
20976            Ok(Distance::kilometers(606f64))
20977        );
20978    }
20979    #[test]
20980    fn test_spheroid_901() {
20981        assert_eq!(Charon.polar_radius(), Distance::kilometers(606f64));
20982        assert_eq!(
20983            DynOrigin::Charon.try_polar_radius(),
20984            Ok(Distance::kilometers(606f64))
20985        );
20986        assert_eq!(Charon.equatorial_radius(), Distance::kilometers(606f64));
20987        assert_eq!(
20988            DynOrigin::Charon.try_equatorial_radius(),
20989            Ok(Distance::kilometers(606f64))
20990        );
20991    }
20992    #[test]
20993    fn test_tri_axial_901() {
20994        assert_eq!(
20995            Charon.radii(),
20996            (
20997                Distance::kilometers(606f64),
20998                Distance::kilometers(606f64),
20999                Distance::kilometers(606f64)
21000            )
21001        );
21002        assert_eq!(
21003            DynOrigin::Charon.try_radii(),
21004            Ok((
21005                Distance::kilometers(606f64),
21006                Distance::kilometers(606f64),
21007                Distance::kilometers(606f64)
21008            ))
21009        );
21010    }
21011    #[test]
21012    fn test_origin_902() {
21013        assert_eq!(Nix.id().0, 902i32);
21014        assert_eq!(Nix.to_string(), "Nix");
21015        assert_eq!(DynOrigin::from(Nix), DynOrigin::Nix);
21016    }
21017    #[test]
21018    fn test_point_mass_902() {
21019        assert_eq!(
21020            Nix.gravitational_parameter(),
21021            GravitationalParameter::km3_per_s2(0.00304817564816976f64)
21022        );
21023        assert_eq!(
21024            DynOrigin::Nix.try_gravitational_parameter(),
21025            Ok(GravitationalParameter::km3_per_s2(0.00304817564816976f64))
21026        );
21027    }
21028    #[test]
21029    fn test_mean_radius_902() {
21030        assert!(DynOrigin::Nix.try_mean_radius().is_err());
21031    }
21032    #[test]
21033    fn test_tri_axial_902() {
21034        assert!(DynOrigin::Nix.try_radii().is_err());
21035    }
21036    #[test]
21037    fn test_spheroid_902() {
21038        assert!(DynOrigin::Nix.try_polar_radius().is_err());
21039        assert!(DynOrigin::Nix.try_equatorial_radius().is_err());
21040    }
21041    #[test]
21042    fn test_origin_903() {
21043        assert_eq!(Hydra.id().0, 903i32);
21044        assert_eq!(Hydra.to_string(), "Hydra");
21045        assert_eq!(DynOrigin::from(Hydra), DynOrigin::Hydra);
21046    }
21047    #[test]
21048    fn test_point_mass_903() {
21049        assert_eq!(
21050            Hydra.gravitational_parameter(),
21051            GravitationalParameter::km3_per_s2(0.003211039206155255f64)
21052        );
21053        assert_eq!(
21054            DynOrigin::Hydra.try_gravitational_parameter(),
21055            Ok(GravitationalParameter::km3_per_s2(0.003211039206155255f64))
21056        );
21057    }
21058    #[test]
21059    fn test_mean_radius_903() {
21060        assert!(DynOrigin::Hydra.try_mean_radius().is_err());
21061    }
21062    #[test]
21063    fn test_tri_axial_903() {
21064        assert!(DynOrigin::Hydra.try_radii().is_err());
21065    }
21066    #[test]
21067    fn test_spheroid_903() {
21068        assert!(DynOrigin::Hydra.try_polar_radius().is_err());
21069        assert!(DynOrigin::Hydra.try_equatorial_radius().is_err());
21070    }
21071    #[test]
21072    fn test_origin_904() {
21073        assert_eq!(Kerberos.id().0, 904i32);
21074        assert_eq!(Kerberos.to_string(), "Kerberos");
21075        assert_eq!(DynOrigin::from(Kerberos), DynOrigin::Kerberos);
21076    }
21077    #[test]
21078    fn test_point_mass_904() {
21079        assert_eq!(
21080            Kerberos.gravitational_parameter(),
21081            GravitationalParameter::km3_per_s2(0.001110040850536676f64)
21082        );
21083        assert_eq!(
21084            DynOrigin::Kerberos.try_gravitational_parameter(),
21085            Ok(GravitationalParameter::km3_per_s2(0.001110040850536676f64))
21086        );
21087    }
21088    #[test]
21089    fn test_mean_radius_904() {
21090        assert!(DynOrigin::Kerberos.try_mean_radius().is_err());
21091    }
21092    #[test]
21093    fn test_tri_axial_904() {
21094        assert!(DynOrigin::Kerberos.try_radii().is_err());
21095    }
21096    #[test]
21097    fn test_spheroid_904() {
21098        assert!(DynOrigin::Kerberos.try_polar_radius().is_err());
21099        assert!(DynOrigin::Kerberos.try_equatorial_radius().is_err());
21100    }
21101    #[test]
21102    fn test_origin_905() {
21103        assert_eq!(Styx.id().0, 905i32);
21104        assert_eq!(Styx.to_string(), "Styx");
21105        assert_eq!(DynOrigin::from(Styx), DynOrigin::Styx);
21106    }
21107    #[test]
21108    fn test_point_mass_905() {
21109        assert_eq!(
21110            Styx.gravitational_parameter(),
21111            GravitationalParameter::km3_per_s2(0f64)
21112        );
21113        assert_eq!(
21114            DynOrigin::Styx.try_gravitational_parameter(),
21115            Ok(GravitationalParameter::km3_per_s2(0f64))
21116        );
21117    }
21118    #[test]
21119    fn test_mean_radius_905() {
21120        assert!(DynOrigin::Styx.try_mean_radius().is_err());
21121    }
21122    #[test]
21123    fn test_tri_axial_905() {
21124        assert!(DynOrigin::Styx.try_radii().is_err());
21125    }
21126    #[test]
21127    fn test_spheroid_905() {
21128        assert!(DynOrigin::Styx.try_polar_radius().is_err());
21129        assert!(DynOrigin::Styx.try_equatorial_radius().is_err());
21130    }
21131    #[test]
21132    fn test_origin_9511010() {
21133        assert_eq!(Gaspra.id().0, 9511010i32);
21134        assert_eq!(Gaspra.to_string(), "Gaspra");
21135        assert_eq!(DynOrigin::from(Gaspra), DynOrigin::Gaspra);
21136    }
21137    #[test]
21138    fn test_point_mass_9511010() {
21139        assert!(DynOrigin::Gaspra.try_gravitational_parameter().is_err());
21140    }
21141    #[test]
21142    fn test_mean_radius_9511010() {
21143        assert_eq!(Gaspra.mean_radius(), Distance::kilometers(6.1f64));
21144        assert_eq!(
21145            DynOrigin::Gaspra.try_mean_radius(),
21146            Ok(Distance::kilometers(6.1f64))
21147        );
21148    }
21149    #[test]
21150    fn test_spheroid_9511010() {
21151        assert!(DynOrigin::Gaspra.try_polar_radius().is_err());
21152        assert!(DynOrigin::Gaspra.try_equatorial_radius().is_err());
21153    }
21154    #[test]
21155    fn test_tri_axial_9511010() {
21156        assert_eq!(
21157            Gaspra.radii(),
21158            (
21159                Distance::kilometers(9.1f64),
21160                Distance::kilometers(5.2f64),
21161                Distance::kilometers(4.4f64)
21162            )
21163        );
21164        assert_eq!(
21165            DynOrigin::Gaspra.try_radii(),
21166            Ok((
21167                Distance::kilometers(9.1f64),
21168                Distance::kilometers(5.2f64),
21169                Distance::kilometers(4.4f64)
21170            ))
21171        );
21172    }
21173    #[test]
21174    fn test_origin_2431010() {
21175        assert_eq!(Ida.id().0, 2431010i32);
21176        assert_eq!(Ida.to_string(), "Ida");
21177        assert_eq!(DynOrigin::from(Ida), DynOrigin::Ida);
21178    }
21179    #[test]
21180    fn test_point_mass_2431010() {
21181        assert!(DynOrigin::Ida.try_gravitational_parameter().is_err());
21182    }
21183    #[test]
21184    fn test_mean_radius_2431010() {
21185        assert_eq!(Ida.mean_radius(), Distance::kilometers(15.65f64));
21186        assert_eq!(
21187            DynOrigin::Ida.try_mean_radius(),
21188            Ok(Distance::kilometers(15.65f64))
21189        );
21190    }
21191    #[test]
21192    fn test_spheroid_2431010() {
21193        assert!(DynOrigin::Ida.try_polar_radius().is_err());
21194        assert!(DynOrigin::Ida.try_equatorial_radius().is_err());
21195    }
21196    #[test]
21197    fn test_tri_axial_2431010() {
21198        assert_eq!(
21199            Ida.radii(),
21200            (
21201                Distance::kilometers(26.8f64),
21202                Distance::kilometers(12f64),
21203                Distance::kilometers(7.6f64)
21204            )
21205        );
21206        assert_eq!(
21207            DynOrigin::Ida.try_radii(),
21208            Ok((
21209                Distance::kilometers(26.8f64),
21210                Distance::kilometers(12f64),
21211                Distance::kilometers(7.6f64)
21212            ))
21213        );
21214    }
21215    #[test]
21216    fn test_origin_2431011() {
21217        assert_eq!(Dactyl.id().0, 2431011i32);
21218        assert_eq!(Dactyl.to_string(), "Dactyl");
21219        assert_eq!(DynOrigin::from(Dactyl), DynOrigin::Dactyl);
21220    }
21221    #[test]
21222    fn test_point_mass_2431011() {
21223        assert!(DynOrigin::Dactyl.try_gravitational_parameter().is_err());
21224    }
21225    #[test]
21226    fn test_mean_radius_2431011() {
21227        assert!(DynOrigin::Dactyl.try_mean_radius().is_err());
21228    }
21229    #[test]
21230    fn test_tri_axial_2431011() {
21231        assert!(DynOrigin::Dactyl.try_radii().is_err());
21232    }
21233    #[test]
21234    fn test_spheroid_2431011() {
21235        assert!(DynOrigin::Dactyl.try_polar_radius().is_err());
21236        assert!(DynOrigin::Dactyl.try_equatorial_radius().is_err());
21237    }
21238    #[test]
21239    fn test_origin_2000001() {
21240        assert_eq!(Ceres.id().0, 2000001i32);
21241        assert_eq!(Ceres.to_string(), "Ceres");
21242        assert_eq!(DynOrigin::from(Ceres), DynOrigin::Ceres);
21243    }
21244    #[test]
21245    fn test_point_mass_2000001() {
21246        assert_eq!(
21247            Ceres.gravitational_parameter(),
21248            GravitationalParameter::km3_per_s2(62.62888864440993f64)
21249        );
21250        assert_eq!(
21251            DynOrigin::Ceres.try_gravitational_parameter(),
21252            Ok(GravitationalParameter::km3_per_s2(62.62888864440993f64))
21253        );
21254    }
21255    #[test]
21256    fn test_mean_radius_2000001() {
21257        assert_eq!(Ceres.mean_radius(), Distance::kilometers(470f64));
21258        assert_eq!(
21259            DynOrigin::Ceres.try_mean_radius(),
21260            Ok(Distance::kilometers(470f64))
21261        );
21262    }
21263    #[test]
21264    fn test_spheroid_2000001() {
21265        assert_eq!(Ceres.polar_radius(), Distance::kilometers(446f64));
21266        assert_eq!(
21267            DynOrigin::Ceres.try_polar_radius(),
21268            Ok(Distance::kilometers(446f64))
21269        );
21270        assert_eq!(Ceres.equatorial_radius(), Distance::kilometers(487.3f64));
21271        assert_eq!(
21272            DynOrigin::Ceres.try_equatorial_radius(),
21273            Ok(Distance::kilometers(487.3f64))
21274        );
21275    }
21276    #[test]
21277    fn test_tri_axial_2000001() {
21278        assert_eq!(
21279            Ceres.radii(),
21280            (
21281                Distance::kilometers(487.3f64),
21282                Distance::kilometers(487.3f64),
21283                Distance::kilometers(446f64)
21284            )
21285        );
21286        assert_eq!(
21287            DynOrigin::Ceres.try_radii(),
21288            Ok((
21289                Distance::kilometers(487.3f64),
21290                Distance::kilometers(487.3f64),
21291                Distance::kilometers(446f64)
21292            ))
21293        );
21294    }
21295    #[test]
21296    fn test_origin_2000002() {
21297        assert_eq!(Pallas.id().0, 2000002i32);
21298        assert_eq!(Pallas.to_string(), "Pallas");
21299        assert_eq!(DynOrigin::from(Pallas), DynOrigin::Pallas);
21300    }
21301    #[test]
21302    fn test_point_mass_2000002() {
21303        assert_eq!(
21304            Pallas.gravitational_parameter(),
21305            GravitationalParameter::km3_per_s2(13.665878145967422f64)
21306        );
21307        assert_eq!(
21308            DynOrigin::Pallas.try_gravitational_parameter(),
21309            Ok(GravitationalParameter::km3_per_s2(13.665878145967422f64))
21310        );
21311    }
21312    #[test]
21313    fn test_mean_radius_2000002() {
21314        assert!(DynOrigin::Pallas.try_mean_radius().is_err());
21315    }
21316    #[test]
21317    fn test_tri_axial_2000002() {
21318        assert!(DynOrigin::Pallas.try_radii().is_err());
21319    }
21320    #[test]
21321    fn test_spheroid_2000002() {
21322        assert!(DynOrigin::Pallas.try_polar_radius().is_err());
21323        assert!(DynOrigin::Pallas.try_equatorial_radius().is_err());
21324    }
21325    #[test]
21326    fn test_origin_2000004() {
21327        assert_eq!(Vesta.id().0, 2000004i32);
21328        assert_eq!(Vesta.to_string(), "Vesta");
21329        assert_eq!(DynOrigin::from(Vesta), DynOrigin::Vesta);
21330    }
21331    #[test]
21332    fn test_point_mass_2000004() {
21333        assert_eq!(
21334            Vesta.gravitational_parameter(),
21335            GravitationalParameter::km3_per_s2(17.288232879171513f64)
21336        );
21337        assert_eq!(
21338            DynOrigin::Vesta.try_gravitational_parameter(),
21339            Ok(GravitationalParameter::km3_per_s2(17.288232879171513f64))
21340        );
21341    }
21342    #[test]
21343    fn test_mean_radius_2000004() {
21344        assert!(DynOrigin::Vesta.try_mean_radius().is_err());
21345    }
21346    #[test]
21347    fn test_spheroid_2000004() {
21348        assert!(DynOrigin::Vesta.try_polar_radius().is_err());
21349        assert!(DynOrigin::Vesta.try_equatorial_radius().is_err());
21350    }
21351    #[test]
21352    fn test_tri_axial_2000004() {
21353        assert_eq!(
21354            Vesta.radii(),
21355            (
21356                Distance::kilometers(289f64),
21357                Distance::kilometers(280f64),
21358                Distance::kilometers(229f64)
21359            )
21360        );
21361        assert_eq!(
21362            DynOrigin::Vesta.try_radii(),
21363            Ok((
21364                Distance::kilometers(289f64),
21365                Distance::kilometers(280f64),
21366                Distance::kilometers(229f64)
21367            ))
21368        );
21369    }
21370    #[test]
21371    fn test_origin_2000016() {
21372        assert_eq!(Psyche.id().0, 2000016i32);
21373        assert_eq!(Psyche.to_string(), "Psyche");
21374        assert_eq!(DynOrigin::from(Psyche), DynOrigin::Psyche);
21375    }
21376    #[test]
21377    fn test_point_mass_2000016() {
21378        assert_eq!(
21379            Psyche.gravitational_parameter(),
21380            GravitationalParameter::km3_per_s2(1.5896582441709424f64)
21381        );
21382        assert_eq!(
21383            DynOrigin::Psyche.try_gravitational_parameter(),
21384            Ok(GravitationalParameter::km3_per_s2(1.5896582441709424f64))
21385        );
21386    }
21387    #[test]
21388    fn test_mean_radius_2000016() {
21389        assert_eq!(Psyche.mean_radius(), Distance::kilometers(113f64));
21390        assert_eq!(
21391            DynOrigin::Psyche.try_mean_radius(),
21392            Ok(Distance::kilometers(113f64))
21393        );
21394    }
21395    #[test]
21396    fn test_spheroid_2000016() {
21397        assert!(DynOrigin::Psyche.try_polar_radius().is_err());
21398        assert!(DynOrigin::Psyche.try_equatorial_radius().is_err());
21399    }
21400    #[test]
21401    fn test_tri_axial_2000016() {
21402        assert_eq!(
21403            Psyche.radii(),
21404            (
21405                Distance::kilometers(139.5f64),
21406                Distance::kilometers(116f64),
21407                Distance::kilometers(94.5f64)
21408            )
21409        );
21410        assert_eq!(
21411            DynOrigin::Psyche.try_radii(),
21412            Ok((
21413                Distance::kilometers(139.5f64),
21414                Distance::kilometers(116f64),
21415                Distance::kilometers(94.5f64)
21416            ))
21417        );
21418    }
21419    #[test]
21420    fn test_origin_2000021() {
21421        assert_eq!(Lutetia.id().0, 2000021i32);
21422        assert_eq!(Lutetia.to_string(), "Lutetia");
21423        assert_eq!(DynOrigin::from(Lutetia), DynOrigin::Lutetia);
21424    }
21425    #[test]
21426    fn test_point_mass_2000021() {
21427        assert!(DynOrigin::Lutetia.try_gravitational_parameter().is_err());
21428    }
21429    #[test]
21430    fn test_mean_radius_2000021() {
21431        assert_eq!(Lutetia.mean_radius(), Distance::kilometers(52.5f64));
21432        assert_eq!(
21433            DynOrigin::Lutetia.try_mean_radius(),
21434            Ok(Distance::kilometers(52.5f64))
21435        );
21436    }
21437    #[test]
21438    fn test_spheroid_2000021() {
21439        assert!(DynOrigin::Lutetia.try_polar_radius().is_err());
21440        assert!(DynOrigin::Lutetia.try_equatorial_radius().is_err());
21441    }
21442    #[test]
21443    fn test_tri_axial_2000021() {
21444        assert_eq!(
21445            Lutetia.radii(),
21446            (
21447                Distance::kilometers(62f64),
21448                Distance::kilometers(50.5f64),
21449                Distance::kilometers(46.5f64)
21450            )
21451        );
21452        assert_eq!(
21453            DynOrigin::Lutetia.try_radii(),
21454            Ok((
21455                Distance::kilometers(62f64),
21456                Distance::kilometers(50.5f64),
21457                Distance::kilometers(46.5f64)
21458            ))
21459        );
21460    }
21461    #[test]
21462    fn test_origin_2000216() {
21463        assert_eq!(Kleopatra.id().0, 2000216i32);
21464        assert_eq!(Kleopatra.to_string(), "Kleopatra");
21465        assert_eq!(DynOrigin::from(Kleopatra), DynOrigin::Kleopatra);
21466    }
21467    #[test]
21468    fn test_point_mass_2000216() {
21469        assert!(DynOrigin::Kleopatra.try_gravitational_parameter().is_err());
21470    }
21471    #[test]
21472    fn test_mean_radius_2000216() {
21473        assert!(DynOrigin::Kleopatra.try_mean_radius().is_err());
21474    }
21475    #[test]
21476    fn test_tri_axial_2000216() {
21477        assert!(DynOrigin::Kleopatra.try_radii().is_err());
21478    }
21479    #[test]
21480    fn test_spheroid_2000216() {
21481        assert!(DynOrigin::Kleopatra.try_polar_radius().is_err());
21482        assert!(DynOrigin::Kleopatra.try_equatorial_radius().is_err());
21483    }
21484    #[test]
21485    fn test_origin_2000433() {
21486        assert_eq!(Eros.id().0, 2000433i32);
21487        assert_eq!(Eros.to_string(), "Eros");
21488        assert_eq!(DynOrigin::from(Eros), DynOrigin::Eros);
21489    }
21490    #[test]
21491    fn test_point_mass_2000433() {
21492        assert_eq!(
21493            Eros.gravitational_parameter(),
21494            GravitationalParameter::km3_per_s2(0.0004463f64)
21495        );
21496        assert_eq!(
21497            DynOrigin::Eros.try_gravitational_parameter(),
21498            Ok(GravitationalParameter::km3_per_s2(0.0004463f64))
21499        );
21500    }
21501    #[test]
21502    fn test_mean_radius_2000433() {
21503        assert_eq!(Eros.mean_radius(), Distance::kilometers(8.45f64));
21504        assert_eq!(
21505            DynOrigin::Eros.try_mean_radius(),
21506            Ok(Distance::kilometers(8.45f64))
21507        );
21508    }
21509    #[test]
21510    fn test_spheroid_2000433() {
21511        assert!(DynOrigin::Eros.try_polar_radius().is_err());
21512        assert!(DynOrigin::Eros.try_equatorial_radius().is_err());
21513    }
21514    #[test]
21515    fn test_tri_axial_2000433() {
21516        assert_eq!(
21517            Eros.radii(),
21518            (
21519                Distance::kilometers(17f64),
21520                Distance::kilometers(5.5f64),
21521                Distance::kilometers(5.5f64)
21522            )
21523        );
21524        assert_eq!(
21525            DynOrigin::Eros.try_radii(),
21526            Ok((
21527                Distance::kilometers(17f64),
21528                Distance::kilometers(5.5f64),
21529                Distance::kilometers(5.5f64)
21530            ))
21531        );
21532    }
21533    #[test]
21534    fn test_origin_2000511() {
21535        assert_eq!(Davida.id().0, 2000511i32);
21536        assert_eq!(Davida.to_string(), "Davida");
21537        assert_eq!(DynOrigin::from(Davida), DynOrigin::Davida);
21538    }
21539    #[test]
21540    fn test_point_mass_2000511() {
21541        assert_eq!(
21542            Davida.gravitational_parameter(),
21543            GravitationalParameter::km3_per_s2(3.8944831481705644f64)
21544        );
21545        assert_eq!(
21546            DynOrigin::Davida.try_gravitational_parameter(),
21547            Ok(GravitationalParameter::km3_per_s2(3.8944831481705644f64))
21548        );
21549    }
21550    #[test]
21551    fn test_mean_radius_2000511() {
21552        assert_eq!(Davida.mean_radius(), Distance::kilometers(150f64));
21553        assert_eq!(
21554            DynOrigin::Davida.try_mean_radius(),
21555            Ok(Distance::kilometers(150f64))
21556        );
21557    }
21558    #[test]
21559    fn test_spheroid_2000511() {
21560        assert!(DynOrigin::Davida.try_polar_radius().is_err());
21561        assert!(DynOrigin::Davida.try_equatorial_radius().is_err());
21562    }
21563    #[test]
21564    fn test_tri_axial_2000511() {
21565        assert_eq!(
21566            Davida.radii(),
21567            (
21568                Distance::kilometers(180f64),
21569                Distance::kilometers(147f64),
21570                Distance::kilometers(127f64)
21571            )
21572        );
21573        assert_eq!(
21574            DynOrigin::Davida.try_radii(),
21575            Ok((
21576                Distance::kilometers(180f64),
21577                Distance::kilometers(147f64),
21578                Distance::kilometers(127f64)
21579            ))
21580        );
21581    }
21582    #[test]
21583    fn test_origin_2000253() {
21584        assert_eq!(Mathilde.id().0, 2000253i32);
21585        assert_eq!(Mathilde.to_string(), "Mathilde");
21586        assert_eq!(DynOrigin::from(Mathilde), DynOrigin::Mathilde);
21587    }
21588    #[test]
21589    fn test_point_mass_2000253() {
21590        assert!(DynOrigin::Mathilde.try_gravitational_parameter().is_err());
21591    }
21592    #[test]
21593    fn test_mean_radius_2000253() {
21594        assert_eq!(Mathilde.mean_radius(), Distance::kilometers(26.5f64));
21595        assert_eq!(
21596            DynOrigin::Mathilde.try_mean_radius(),
21597            Ok(Distance::kilometers(26.5f64))
21598        );
21599    }
21600    #[test]
21601    fn test_spheroid_2000253() {
21602        assert!(DynOrigin::Mathilde.try_polar_radius().is_err());
21603        assert!(DynOrigin::Mathilde.try_equatorial_radius().is_err());
21604    }
21605    #[test]
21606    fn test_tri_axial_2000253() {
21607        assert_eq!(
21608            Mathilde.radii(),
21609            (
21610                Distance::kilometers(33f64),
21611                Distance::kilometers(24f64),
21612                Distance::kilometers(23f64)
21613            )
21614        );
21615        assert_eq!(
21616            DynOrigin::Mathilde.try_radii(),
21617            Ok((
21618                Distance::kilometers(33f64),
21619                Distance::kilometers(24f64),
21620                Distance::kilometers(23f64)
21621            ))
21622        );
21623    }
21624    #[test]
21625    fn test_origin_2002867() {
21626        assert_eq!(Steins.id().0, 2002867i32);
21627        assert_eq!(Steins.to_string(), "Steins");
21628        assert_eq!(DynOrigin::from(Steins), DynOrigin::Steins);
21629    }
21630    #[test]
21631    fn test_point_mass_2002867() {
21632        assert!(DynOrigin::Steins.try_gravitational_parameter().is_err());
21633    }
21634    #[test]
21635    fn test_mean_radius_2002867() {
21636        assert_eq!(Steins.mean_radius(), Distance::kilometers(2.7f64));
21637        assert_eq!(
21638            DynOrigin::Steins.try_mean_radius(),
21639            Ok(Distance::kilometers(2.7f64))
21640        );
21641    }
21642    #[test]
21643    fn test_spheroid_2002867() {
21644        assert!(DynOrigin::Steins.try_polar_radius().is_err());
21645        assert!(DynOrigin::Steins.try_equatorial_radius().is_err());
21646    }
21647    #[test]
21648    fn test_tri_axial_2002867() {
21649        assert_eq!(
21650            Steins.radii(),
21651            (
21652                Distance::kilometers(3.24f64),
21653                Distance::kilometers(2.73f64),
21654                Distance::kilometers(2.04f64)
21655            )
21656        );
21657        assert_eq!(
21658            DynOrigin::Steins.try_radii(),
21659            Ok((
21660                Distance::kilometers(3.24f64),
21661                Distance::kilometers(2.73f64),
21662                Distance::kilometers(2.04f64)
21663            ))
21664        );
21665    }
21666    #[test]
21667    fn test_origin_2009969() {
21668        assert_eq!(Braille.id().0, 2009969i32);
21669        assert_eq!(Braille.to_string(), "Braille");
21670        assert_eq!(DynOrigin::from(Braille), DynOrigin::Braille);
21671    }
21672    #[test]
21673    fn test_point_mass_2009969() {
21674        assert!(DynOrigin::Braille.try_gravitational_parameter().is_err());
21675    }
21676    #[test]
21677    fn test_mean_radius_2009969() {
21678        assert!(DynOrigin::Braille.try_mean_radius().is_err());
21679    }
21680    #[test]
21681    fn test_tri_axial_2009969() {
21682        assert!(DynOrigin::Braille.try_radii().is_err());
21683    }
21684    #[test]
21685    fn test_spheroid_2009969() {
21686        assert!(DynOrigin::Braille.try_polar_radius().is_err());
21687        assert!(DynOrigin::Braille.try_equatorial_radius().is_err());
21688    }
21689    #[test]
21690    fn test_origin_2004015() {
21691        assert_eq!(WilsonHarrington.id().0, 2004015i32);
21692        assert_eq!(WilsonHarrington.to_string(), "Wilson-Harrington");
21693        assert_eq!(
21694            DynOrigin::from(WilsonHarrington),
21695            DynOrigin::WilsonHarrington
21696        );
21697    }
21698    #[test]
21699    fn test_point_mass_2004015() {
21700        assert!(
21701            DynOrigin::WilsonHarrington
21702                .try_gravitational_parameter()
21703                .is_err()
21704        );
21705    }
21706    #[test]
21707    fn test_mean_radius_2004015() {
21708        assert!(DynOrigin::WilsonHarrington.try_mean_radius().is_err());
21709    }
21710    #[test]
21711    fn test_tri_axial_2004015() {
21712        assert!(DynOrigin::WilsonHarrington.try_radii().is_err());
21713    }
21714    #[test]
21715    fn test_spheroid_2004015() {
21716        assert!(DynOrigin::WilsonHarrington.try_polar_radius().is_err());
21717        assert!(DynOrigin::WilsonHarrington.try_equatorial_radius().is_err());
21718    }
21719    #[test]
21720    fn test_origin_2004179() {
21721        assert_eq!(Toutatis.id().0, 2004179i32);
21722        assert_eq!(Toutatis.to_string(), "Toutatis");
21723        assert_eq!(DynOrigin::from(Toutatis), DynOrigin::Toutatis);
21724    }
21725    #[test]
21726    fn test_point_mass_2004179() {
21727        assert!(DynOrigin::Toutatis.try_gravitational_parameter().is_err());
21728    }
21729    #[test]
21730    fn test_mean_radius_2004179() {
21731        assert!(DynOrigin::Toutatis.try_mean_radius().is_err());
21732    }
21733    #[test]
21734    fn test_spheroid_2004179() {
21735        assert!(DynOrigin::Toutatis.try_polar_radius().is_err());
21736        assert!(DynOrigin::Toutatis.try_equatorial_radius().is_err());
21737    }
21738    #[test]
21739    fn test_tri_axial_2004179() {
21740        assert_eq!(
21741            Toutatis.radii(),
21742            (
21743                Distance::kilometers(2.13f64),
21744                Distance::kilometers(1.015f64),
21745                Distance::kilometers(0.85f64)
21746            )
21747        );
21748        assert_eq!(
21749            DynOrigin::Toutatis.try_radii(),
21750            Ok((
21751                Distance::kilometers(2.13f64),
21752                Distance::kilometers(1.015f64),
21753                Distance::kilometers(0.85f64)
21754            ))
21755        );
21756    }
21757    #[test]
21758    fn test_origin_2025143() {
21759        assert_eq!(Itokawa.id().0, 2025143i32);
21760        assert_eq!(Itokawa.to_string(), "Itokawa");
21761        assert_eq!(DynOrigin::from(Itokawa), DynOrigin::Itokawa);
21762    }
21763    #[test]
21764    fn test_point_mass_2025143() {
21765        assert!(DynOrigin::Itokawa.try_gravitational_parameter().is_err());
21766    }
21767    #[test]
21768    fn test_mean_radius_2025143() {
21769        assert!(DynOrigin::Itokawa.try_mean_radius().is_err());
21770    }
21771    #[test]
21772    fn test_spheroid_2025143() {
21773        assert!(DynOrigin::Itokawa.try_polar_radius().is_err());
21774        assert!(DynOrigin::Itokawa.try_equatorial_radius().is_err());
21775    }
21776    #[test]
21777    fn test_tri_axial_2025143() {
21778        assert_eq!(
21779            Itokawa.radii(),
21780            (
21781                Distance::kilometers(0.268f64),
21782                Distance::kilometers(0.147f64),
21783                Distance::kilometers(0.104f64)
21784            )
21785        );
21786        assert_eq!(
21787            DynOrigin::Itokawa.try_radii(),
21788            Ok((
21789                Distance::kilometers(0.268f64),
21790                Distance::kilometers(0.147f64),
21791                Distance::kilometers(0.104f64)
21792            ))
21793        );
21794    }
21795    #[test]
21796    fn test_origin_2101955() {
21797        assert_eq!(Bennu.id().0, 2101955i32);
21798        assert_eq!(Bennu.to_string(), "Bennu");
21799        assert_eq!(DynOrigin::from(Bennu), DynOrigin::Bennu);
21800    }
21801    #[test]
21802    fn test_point_mass_2101955() {
21803        assert!(DynOrigin::Bennu.try_gravitational_parameter().is_err());
21804    }
21805    #[test]
21806    fn test_mean_radius_2101955() {
21807        assert!(DynOrigin::Bennu.try_mean_radius().is_err());
21808    }
21809    #[test]
21810    fn test_tri_axial_2101955() {
21811        assert!(DynOrigin::Bennu.try_radii().is_err());
21812    }
21813    #[test]
21814    fn test_spheroid_2101955() {
21815        assert!(DynOrigin::Bennu.try_polar_radius().is_err());
21816        assert!(DynOrigin::Bennu.try_equatorial_radius().is_err());
21817    }
21818}