pykep_core/astro/elements/
values.rs1use crate::Elements6;
5
6#[derive(Clone, Copy, Debug, PartialEq)]
12pub struct ClassicalElements {
13 pub semi_major_axis: f64,
15 pub eccentricity: f64,
17 pub inclination: f64,
19 pub longitude_ascending_node: f64,
21 pub argument_periapsis: f64,
23 pub true_anomaly: f64,
25}
26
27impl ClassicalElements {
28 #[must_use]
30 pub const fn new(
31 semi_major_axis: f64,
32 eccentricity: f64,
33 inclination: f64,
34 longitude_ascending_node: f64,
35 argument_periapsis: f64,
36 true_anomaly: f64,
37 ) -> Self {
38 Self {
39 semi_major_axis,
40 eccentricity,
41 inclination,
42 longitude_ascending_node,
43 argument_periapsis,
44 true_anomaly,
45 }
46 }
47
48 #[must_use]
50 pub const fn to_array(self) -> Elements6 {
51 [
52 self.semi_major_axis,
53 self.eccentricity,
54 self.inclination,
55 self.longitude_ascending_node,
56 self.argument_periapsis,
57 self.true_anomaly,
58 ]
59 }
60}
61
62impl From<Elements6> for ClassicalElements {
63 fn from(values: Elements6) -> Self {
64 Self::new(
65 values[0], values[1], values[2], values[3], values[4], values[5],
66 )
67 }
68}
69
70impl From<ClassicalElements> for Elements6 {
71 fn from(elements: ClassicalElements) -> Self {
72 elements.to_array()
73 }
74}
75
76#[derive(Clone, Copy, Debug, PartialEq)]
83pub struct ModifiedEquinoctialElements {
84 pub semilatus_rectum: f64,
86 pub f: f64,
88 pub g: f64,
90 pub h: f64,
92 pub k: f64,
94 pub true_longitude: f64,
96}
97
98impl ModifiedEquinoctialElements {
99 #[must_use]
101 pub const fn new(
102 semilatus_rectum: f64,
103 f: f64,
104 g: f64,
105 h: f64,
106 k: f64,
107 true_longitude: f64,
108 ) -> Self {
109 Self {
110 semilatus_rectum,
111 f,
112 g,
113 h,
114 k,
115 true_longitude,
116 }
117 }
118
119 #[must_use]
121 pub const fn to_array(self) -> Elements6 {
122 [
123 self.semilatus_rectum,
124 self.f,
125 self.g,
126 self.h,
127 self.k,
128 self.true_longitude,
129 ]
130 }
131}
132
133impl From<Elements6> for ModifiedEquinoctialElements {
134 fn from(values: Elements6) -> Self {
135 Self::new(
136 values[0], values[1], values[2], values[3], values[4], values[5],
137 )
138 }
139}
140
141impl From<ModifiedEquinoctialElements> for Elements6 {
142 fn from(elements: ModifiedEquinoctialElements) -> Self {
143 elements.to_array()
144 }
145}