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.control.heuristics.lambert;
18  
19  import org.hipparchus.geometry.euclidean.threed.Vector3D;
20  import org.orekit.frames.Frame;
21  import org.orekit.time.AbsoluteDate;
22  
23  /**
24   * Class holding values defining the boundary conditions to a Lambert arc.
25   *
26   * @author Romain Serra
27   * @since 13.1
28   */
29  public class LambertBoundaryConditions {
30  
31      /** Initial date. */
32      private final AbsoluteDate initialDate;
33  
34      /** Initial position vector. */
35      private final Vector3D initialPosition;
36  
37      /** Terminal date. */
38      private final AbsoluteDate terminalDate;
39  
40      /** Terminal position vector. */
41      private final Vector3D terminalPosition;
42  
43      /** Reference frame. */
44      private final Frame referenceFrame;
45  
46      /**
47       * Constructor.
48       * @param initialDate initial date
49       * @param initialPosition initial position vector
50       * @param terminalDate terminal date
51       * @param terminalPosition terminal position vector
52       * @param referenceFrame reference frame
53       */
54      public LambertBoundaryConditions(final AbsoluteDate initialDate, final Vector3D initialPosition,
55                                       final AbsoluteDate terminalDate, final Vector3D terminalPosition,
56                                       final Frame referenceFrame) {
57          this.initialDate = initialDate;
58          this.initialPosition = initialPosition;
59          this.terminalDate = terminalDate;
60          this.terminalPosition = terminalPosition;
61          this.referenceFrame = referenceFrame;
62      }
63  
64      /**
65       * Getter for the terminal position vector.
66       * @return terminal position
67       */
68      public Vector3D getTerminalPosition() {
69          return terminalPosition;
70      }
71  
72      /**
73       * Getter for the terminal date.
74       * @return terminal date
75       */
76      public AbsoluteDate getTerminalDate() {
77          return terminalDate;
78      }
79  
80      /**
81       * Getter for the initial position vector.
82       * @return initial position
83       */
84      public Vector3D getInitialPosition() {
85          return initialPosition;
86      }
87  
88      /**
89       * Getter for the initial date.
90       * @return initial date
91       */
92      public AbsoluteDate getInitialDate() {
93          return initialDate;
94      }
95  
96      /**
97       * Getter for the reference frame.
98       * @return frame
99       */
100     public Frame getReferenceFrame() {
101         return referenceFrame;
102     }
103 }