// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Copyright 2003 Liam Girdwood
#ifndef _CONSTELLATION_HH
#define _CONSTELLATION_HH
#include <glibmm/ustring.h>
#include <vector>
#define NUM_CONSTEL 89
#define NUM_CONST_LINES 646
#define NUM_CONST_BOUND 357
/*! \namespace Vega
* \brief Nova Virtual Sky Engine
*/
namespace Vega
{
/*! \class Constellation
* \brief Manages constellation boundaries, lines and names
*/
class Constellation
{
public:
Constellation();
~Constellation();
/*! \fn void clip(double ra_min, double dec_min, double ra_max , double dec_max);
* \brief Clip the constellation objects
*/
void clip(double ra_min, double dec_min, double ra_max , double dec_max);
/*! \fn const Glib::ustring& get_constellation(double ra, double dec);
* \brief Get the constellation name at position ra,dec
*/
const Glib::ustring& get_constellation(double ra, double dec);
/*! \enum const_id
* \brief Constellation ID's
*/
enum const_id {
AND = 0, ANT, APS, AQR, AQL, ARA, ARG, ARI,
AUR, BOO, CAE, CAM, CNC, CVN, CMA, CMI, CAP,
CAR, CAS, CEN, CEP, CET, CHA, CIR, COL, COM,
CRA, CRB, CRV, CRT, CRU, CYG, DEL, DOR, DRA,
EQU, ERI, FOR, GEM, GRU, HER, HOR, HYA, HYI,
IND, LAC, LEO, LMI, LEP, LIB, LUP, LYN, LYR,
MEN, MIC, MON, MUS, NOR, OCT, OPH, ORI, PAV,
PEG, PER, PHE, PIC, PSC, PSA, PUP, PYX, RET,
SGE, SGR, SCO, SCL, SCT, SER, SEX, TAU, TEL,
TRI, TRA, TUC, UMA, UMI, VEL, VIR, VOL, VUL
};
struct ConstName {
const_id id;
const char* abv;
const char* nominative;
const char* genitive;
};
struct ConstLine {
const_id id;
double ra1;
double dec1;
double ra2;
double dec2;
};
struct ConstBound {
const_id id;
double ra1;
double ra2;
double dec1;
};
int get_lines (std::vector<ConstLine>& lines);
int get_names (std::vector<ConstName>& names);
int get_bounds (std::vector<ConstBound>& boundaries);
private:
double m_min_ra;
double m_min_dec;
double m_max_ra;
double m_max_dec;
static ConstName const_names[NUM_CONSTEL];
static ConstLine const_lines[NUM_CONST_LINES];
static ConstBound const_bounds[NUM_CONST_BOUND];
};
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1