1 /* Copyright 2002-2025 Airbus Defence and Space
2 * Licensed to CS GROUP (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * Airbus Defence and Space licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.orekit.propagation.analytical.intelsat;
18
19 import org.orekit.time.AbsoluteDate;
20
21 /**
22 * This class is a container for a single set of Intelsat's 11 Elements data.
23 * <p>
24 * Intelsat's 11 elements are defined in ITU-R S.1525 standard.
25 * </p>
26 *
27 * @author Bryan Cazabonne
28 * @since 12.1
29 */
30 public class IntelsatElevenElements {
31
32 /**
33 * Sun synchronous radius in kilometers.
34 */
35 public static final double SYNCHRONOUS_RADIUS_KM = 42164.57;
36
37 /**
38 * PI over 360.
39 */
40 public static final double K = 0.0087266462;
41
42 /**
43 * Longitude drift rate.
44 */
45 public static final double DRIFT_RATE_SHIFT_DEG_PER_DAY = 360.98564;
46
47 /**
48 * Elements epoch.
49 */
50 private final AbsoluteDate epoch;
51
52 /**
53 * Mean longitude (East of Greenwich).
54 */
55 private final double lm0;
56
57 /**
58 * Drift rate.
59 */
60 private final double lm1;
61
62 /**
63 * Drift acceleration.
64 */
65 private final double lm2;
66
67 /**
68 * Longitude oscillation-amplitude for the cosine term.
69 */
70 private final double lonC;
71
72 /**
73 * Rate of change of longitude, for the cosine term.
74 */
75 private final double lonC1;
76
77 /**
78 * Longitude oscillation-amplitude for the sine term.
79 */
80 private final double lonS;
81
82 /**
83 * Rate of change of longitude, for the sine term.
84 */
85 private final double lonS1;
86
87 /**
88 * Latitude oscillation-amplitude for the cosine term.
89 */
90 private final double latC;
91
92 /**
93 * Rate of change of latitude, for the cosine term.
94 */
95 private final double latC1;
96
97 /**
98 * Latitude oscillation-amplitude for the sine term.
99 */
100 private final double latS;
101
102 /**
103 * Rate of change of latitude, for the sine term.
104 */
105 private final double latS1;
106
107 /**
108 * Constructor.
109 *
110 * @param epoch elements epoch
111 * @param lm0 mean longitude (East of Greenwich) in degrees
112 * @param lm1 drift rate in degrees/day
113 * @param lm2 drift acceleration in degrees/day/day
114 * @param lonC longitude oscillation-amplitude for the cosine term in degrees
115 * @param lonC1 rate of change of longitude, for the cosine term, in degrees/day
116 * @param lonS longitude oscillation-amplitude for the sine term in degrees
117 * @param lonS1 rate of change of longitude, for the sine term, in degrees/day
118 * @param latC latitude oscillation-amplitude for the cosine term in degrees
119 * @param latC1 rate of change of latitude, for the cosine term, in degrees/day
120 * @param latS latitude oscillation-amplitude for the sine term in degrees
121 * @param latS1 rate of change of latitude, for the sine term, in degrees/day
122 */
123 public IntelsatElevenElements(final AbsoluteDate epoch, final double lm0, final double lm1, final double lm2, final double lonC, final double lonC1, final double lonS,
124 final double lonS1, final double latC, final double latC1, final double latS, final double latS1) {
125 this.epoch = epoch;
126 this.lm0 = lm0;
127 this.lm1 = lm1;
128 this.lm2 = lm2;
129 this.lonC = lonC;
130 this.lonC1 = lonC1;
131 this.lonS = lonS;
132 this.lonS1 = lonS1;
133 this.latC = latC;
134 this.latC1 = latC1;
135 this.latS = latS;
136 this.latS1 = latS1;
137 }
138
139 /**
140 * Get the elements epoch.
141 *
142 * @return elements epoch
143 */
144 public AbsoluteDate getEpoch() {
145 return epoch;
146 }
147
148 /**
149 * Get the mean longitude (East of Greenwich).
150 *
151 * @return the mean longitude (East of Greenwich) in degrees
152 */
153 public double getLm0() {
154 return lm0;
155 }
156
157 /**
158 * Get the drift rate.
159 *
160 * @return the drift rate in degrees/day
161 */
162 public double getLm1() {
163 return lm1;
164 }
165
166 /**
167 * Get the drift acceleration.
168 *
169 * @return the drift acceleration in degrees/day/day
170 */
171 public double getLm2() {
172 return lm2;
173 }
174
175 /**
176 * Get the longitude oscillation-amplitude for the cosine term.
177 *
178 * @return the longitude oscillation-amplitude for the cosine term in degrees
179 */
180 public double getLonC() {
181 return lonC;
182 }
183
184 /**
185 * Get the rate of change of longitude, for the cosine term.
186 *
187 * @return the rate of change of longitude, for the cosine term, in degrees/day
188 */
189 public double getLonC1() {
190 return lonC1;
191 }
192
193 /**
194 * Get the longitude oscillation-amplitude for the sine term.
195 *
196 * @return the longitude oscillation-amplitude for the sine term in degrees
197 */
198 public double getLonS() {
199 return lonS;
200 }
201
202 /**
203 * Get the rate of change of longitude, for the sine term.
204 *
205 * @return the rate of change of longitude, for the sine term, in degrees/day
206 */
207 public double getLonS1() {
208 return lonS1;
209 }
210
211 /**
212 * Get the latitude oscillation-amplitude for the cosine term.
213 *
214 * @return the latitude oscillation-amplitude for the cosine term in degrees
215 */
216 public double getLatC() {
217 return latC;
218 }
219
220 /**
221 * Get the rate of change of latitude, for the cosine term.
222 *
223 * @return the rate of change of latitude, for the cosine term, in degrees/day
224 */
225 public double getLatC1() {
226 return latC1;
227 }
228
229 /**
230 * Get the latitude oscillation-amplitude for the sine term.
231 *
232 * @return the latitude oscillation-amplitude for the sine term in degrees
233 */
234 public double getLatS() {
235 return latS;
236 }
237
238 /**
239 * Get the rate of change of latitude, for the sine term.
240 *
241 * @return the rate of change of latitude, for the sine term, in degrees/day
242 */
243 public double getLatS1() {
244 return latS1;
245 }
246 }