1 // ephemeris.cxx -- Top level class for calculating current positions of
2 // astronomical objects
4 // Written by Curtis Olson, started March 2000.
6 // Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Library General Public
10 // License as published by the Free Software Foundation; either
11 // version 2 of the License, or (at your option) any later version.
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Library General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
25 # include <simgear_config.h>
30 #include "ephemeris.hxx"
34 SGEphemeris::SGEphemeris( const string &path ) {
37 mercury = new Mercury;
40 jupiter = new Jupiter;
43 neptune = new Neptune;
45 for ( int i = 0; i < nplanets; ++i ) {
46 sgdSetVec3( planets[i], 0.0, 0.0, 0.0 );
48 stars = new SGStarData( SGPath(path) );
53 SGEphemeris::~SGEphemeris( void ) {
67 // Update (recalculate) the positions of all objects for the specified
69 void SGEphemeris::update( double mjd, double lst, double lat ) {
70 // update object positions
71 our_sun->updatePosition( mjd );
72 moon->updatePosition( mjd, lst, lat, our_sun );
73 mercury->updatePosition( mjd, our_sun );
74 venus->updatePosition( mjd, our_sun );
75 mars->updatePosition( mjd, our_sun );
76 jupiter->updatePosition( mjd, our_sun );
77 saturn->updatePosition( mjd, our_sun );
78 uranus->updatePosition( mjd, our_sun );
79 neptune->updatePosition( mjd, our_sun );
81 // update planets list
83 mercury->getPos( &planets[0][0], &planets[0][1], &planets[0][2] );
84 venus ->getPos( &planets[1][0], &planets[1][1], &planets[1][2] );
85 mars ->getPos( &planets[2][0], &planets[2][1], &planets[2][2] );
86 jupiter->getPos( &planets[3][0], &planets[3][1], &planets[3][2] );
87 saturn ->getPos( &planets[4][0], &planets[4][1], &planets[4][2] );
88 uranus ->getPos( &planets[5][0], &planets[5][1], &planets[5][2] );
89 neptune->getPos( &planets[6][0], &planets[6][1], &planets[6][2] );