1   /* Contributed in the public domain.
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.bodies;
18  
19  /**
20   * Commonly used celestial bodies. This interface defines methods for obtaining intances
21   * of the commonly used celestial bodies.
22   *
23   * @author Luc Maisonobe
24   * @author Evan Ward
25   * @see CelestialBodyFactory
26   * @since 10.1
27   */
28  public interface CelestialBodies {
29  
30      /** Get the solar system barycenter aggregated body.
31       * <p>
32       * Both the {@link CelestialBody#getInertiallyOrientedFrame() inertially
33       * oriented frame} and {@link CelestialBody#getBodyOrientedFrame() body
34       * oriented frame} for this aggregated body are aligned with
35       * {@link org.orekit.frames.FramesFactory#getICRF() ICRF} (and therefore also
36       * {@link org.orekit.frames.FramesFactory#getGCRF() GCRF})
37       * </p>
38       * @return solar system barycenter aggregated body
39       */
40      CelestialBody getSolarSystemBarycenter();
41  
42      /** Get the Sun singleton body.
43       * @return Sun body
44       */
45      CelestialBody getSun();
46  
47      /** Get the Mercury singleton body.
48       * @return Sun body
49       */
50      CelestialBody getMercury();
51  
52      /** Get the Venus singleton body.
53       * @return Venus body
54       */
55      CelestialBody getVenus();
56  
57      /** Get the Earth-Moon barycenter singleton bodies pair.
58       * <p>
59       * Both the {@link CelestialBody#getInertiallyOrientedFrame() inertially
60       * oriented frame} and {@link CelestialBody#getBodyOrientedFrame() body
61       * oriented frame} for this bodies pair are aligned with
62       * {@link org.orekit.frames.FramesFactory#getICRF() ICRF} (and therefore also
63       * {@link org.orekit.frames.FramesFactory#getGCRF() GCRF})
64       * </p>
65       * @return Earth-Moon barycenter bodies pair
66       */
67      CelestialBody getEarthMoonBarycenter();
68  
69      /** Get the Earth singleton body.
70       * @return Earth body
71       */
72      CelestialBody getEarth();
73  
74      /** Get the Moon singleton body.
75       * @return Moon body
76       */
77      CelestialBody getMoon();
78  
79      /** Get the Mars singleton body.
80       * @return Mars body
81       */
82      CelestialBody getMars();
83  
84      /** Get the Jupiter singleton body.
85       * @return Jupiter body
86       */
87      CelestialBody getJupiter();
88  
89      /** Get the Saturn singleton body.
90       * @return Saturn body
91       */
92      CelestialBody getSaturn();
93  
94      /** Get the Uranus singleton body.
95       * @return Uranus body
96       */
97      CelestialBody getUranus();
98  
99      /** Get the Neptune singleton body.
100      * @return Neptune body
101      */
102     CelestialBody getNeptune();
103 
104     /** Get the Pluto singleton body.
105      * @return Pluto body
106      */
107     CelestialBody getPluto();
108 
109     /**
110      * Get a celestial body. The names of the common bodies are defined as constants in
111      * {@link CelestialBodyFactory}.
112      *
113      * @param name name of the celestial body
114      * @return celestial body
115      */
116     CelestialBody getBody(String name);
117 
118 }