1   /* Copyright 2020-2025 Exotrail
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    * CS 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.conversion.averaging.elements;
18  
19  /**
20   * Immutable class containing values of averaged circular elements from any applicable theory
21   * (with MEAN as {@link org.orekit.orbits.PositionAngleType}).
22   *
23   * @author Romain Serra
24   * @see AveragedOrbitalElements
25   * @since 12.1
26   */
27  public class AveragedCircularWithMeanAngle implements AveragedOrbitalElements {
28  
29      /** Averaged semi-major axis in arbitrary theory. */
30      private final double averagedSemiMajorAxis;
31      /** Averaged circular ex in arbitrary theory. */
32      private final double averagedCircularEx;
33      /** Averaged circular ey in arbitrary theory. */
34      private final double averagedCircularEy;
35      /** Averaged inclination in arbitrary theory. */
36      private final double averagedInclination;
37      /** Averaged right ascension of the ascending node in arbitrary theory. */
38      private final double averagedRightAscensionOfTheAscendingNode;
39      /** Averaged mean latitude argument in arbitrary theory. */
40      private final double averagedMeanLatitudeArgument;
41  
42      /**
43       * Constructor.
44       * @param averagedSemiMajorAxis averaged semi-major axis
45       * @param averagedCircularEx averaged circular ex
46       * @param averagedCircularEy averaged circular ey
47       * @param averagedInclination averaged inclination
48       * @param averagedRightAscensionOfTheAscendingNode averaged RAAN
49       * @param averagedMeanLatitudeArgument averaged mean latitude argument
50       */
51      public AveragedCircularWithMeanAngle(final double averagedSemiMajorAxis,
52                                           final double averagedCircularEx,
53                                           final double averagedCircularEy,
54                                           final double averagedInclination,
55                                           final double averagedRightAscensionOfTheAscendingNode,
56                                           final double averagedMeanLatitudeArgument) {
57          this.averagedSemiMajorAxis = averagedSemiMajorAxis;
58          this.averagedCircularEx = averagedCircularEx;
59          this.averagedCircularEy = averagedCircularEy;
60          this.averagedInclination = averagedInclination;
61          this.averagedRightAscensionOfTheAscendingNode = averagedRightAscensionOfTheAscendingNode;
62          this.averagedMeanLatitudeArgument = averagedMeanLatitudeArgument;
63      }
64  
65      /** {@inheritDoc} */
66      @Override
67      public double[] toArray() {
68          return new double[] { averagedSemiMajorAxis, averagedCircularEx, averagedCircularEy,
69              averagedInclination, averagedRightAscensionOfTheAscendingNode, averagedMeanLatitudeArgument };
70      }
71  
72      /**
73       * Getter for averaged semi-major axis.
74       * @return semi-major axis.
75       */
76      public double getAveragedSemiMajorAxis() {
77          return averagedSemiMajorAxis;
78      }
79  
80      /**
81       * Getter for averaged circular ex.
82       * @return ex
83       */
84      public double getAveragedCircularEx() {
85          return averagedCircularEx;
86      }
87  
88      /**
89       * Getter for averaged circular ey.
90       * @return ey
91       */
92      public double getAveragedCircularEy() {
93          return averagedCircularEy;
94      }
95  
96      /**
97       * Getter for averaged inclination.
98       * @return inclination
99       */
100     public double getAveragedInclination() {
101         return averagedInclination;
102     }
103 
104     /**
105      * Getter for averaged RAAN.
106      * @return RAAN
107      */
108     public double getAveragedRightAscensionOfTheAscendingNode() {
109         return averagedRightAscensionOfTheAscendingNode;
110     }
111 
112     /**
113      * Getter for averaged mean latitude argument.
114      * @return mean latitude argument
115      */
116     public double getAveragedMeanLatitudeArgument() {
117         return averagedMeanLatitudeArgument;
118     }
119 }