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