]> git.mxchange.org Git - simgear.git/blob - simgear/ephemeris/ephemeris.cxx
Pass current latitude to moon position calculations to compenstate for it's
[simgear.git] / simgear / ephemeris / ephemeris.cxx
1 // ephemeris.cxx -- Top level class for calculating current positions of
2 //                  astronomical objects
3 //
4 // Written by Curtis Olson, started March 2000.
5 //
6 // Copyright (C) 2000  Curtis L. Olson - curt@flightgear.org
7 //
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as
10 // published by the Free Software Foundation; either version 2 of the
11 // License, or (at your option) any later version.
12 //
13 // This program is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 // General Public License for more details.
17 //
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., 675 Mass Ave, Cambridge, MA 02139, USA.
21 //
22 // $Id$
23
24
25 #include "ephemeris.hxx"
26
27
28 // Constructor
29 FGEphemeris::FGEphemeris( void ) {
30     our_sun = new Star;
31     moon = new Moon;
32     mercury = new Mercury;
33     venus = new Venus;
34     mars = new Mars;
35     jupiter = new Jupiter;
36     saturn = new Saturn;
37     uranus = new Uranus;
38     neptune = new Neptune;
39 }
40
41
42 // Destructor
43 FGEphemeris::~FGEphemeris( void ) {
44     delete our_sun;
45     delete moon;
46     delete mercury;
47     delete venus;
48     delete mars;
49     delete jupiter;
50     delete saturn;
51     delete uranus;
52     delete neptune;
53 }
54
55
56 // Update (recalculate) the positions of all objects for the specified
57 // time
58 void FGEphemeris::update( FGTime *t, double lat ) {
59     // update object positions
60     our_sun->updatePosition( t );
61     moon->updatePosition( t, lat, our_sun );
62     mercury->updatePosition( t, our_sun );
63     venus->updatePosition( t, our_sun );
64     mars->updatePosition( t, our_sun );
65     jupiter->updatePosition( t, our_sun );
66     saturn->updatePosition( t, our_sun );
67     uranus->updatePosition( t, our_sun );
68     neptune->updatePosition( t, our_sun );
69
70     // update planets list
71     nplanets = 7;
72     mercury->getPos( &planets[0][0], &planets[0][1], &planets[0][2] );
73     venus  ->getPos( &planets[1][0], &planets[1][1], &planets[1][2] );
74     mars   ->getPos( &planets[2][0], &planets[2][1], &planets[2][2] );
75     jupiter->getPos( &planets[3][0], &planets[3][1], &planets[3][2] );
76     saturn ->getPos( &planets[4][0], &planets[4][1], &planets[4][2] );
77     uranus ->getPos( &planets[5][0], &planets[5][1], &planets[5][2] );
78     neptune->getPos( &planets[6][0], &planets[6][1], &planets[6][2] );
79 }
80