cyphesis/rulesets/astronomy/Body.h
Olek Wojnar 7f9ff2246d Remove CVS $Id tags
The legacy tags are causing build issues in Debian.
2013-07-15 20:31:59 +02:00

45 lines
1.3 KiB
C++

// This file may be redistributed and modified only under the terms of
// the GNU General Public License (See COPYING for details).
// Copyright (C) 2000 Alistair Riddoch
#ifndef ASTRONOMY_BODY_H
#define ASTRONOMY_BODY_H
#include <Atlas/Message/Object.h>
#include <physics/VectorPol.h>
class Body {
private:
double m_initpos;
public:
const double m_period; // Orbital period in seconds
const double m_eccentricity; // Orbital eccentricity in degrees
const double m_at; // Orbital point at which it is furthest from the orbital plane
const double m_radius; // Orbital radius
Body(double period, double radius, double eccentricity = 0, double at = 0) :
m_period(period), m_eccentricity(eccentricity), m_at(at),
m_radius(radius) { }
VectorPol pos(double time)
{
double ret_latt = (m_initpos + 360 * time / m_period);
ret_latt = ret_latt - ((int)ret_latt / 360);
double offset = ret_latt - m_at;
if (offset < 0) { offset+=360; }
double ret_long = cos((offset * TPI) / 360);
double ret_dist = m_radius;
return VectorPol(ret_latt, ret_long, ret_dist);
}
virtual Atlas::Message::Element asObject()
{
Atlas::Message::Element::MapType bmap;
return Atlas::Message::Element(bmap);
}
};
#endif // ASTRONOMY_BODY_H