diff options
Diffstat (limited to 'kstars/kstars/csegment.h')
-rw-r--r-- | kstars/kstars/csegment.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/kstars/kstars/csegment.h b/kstars/kstars/csegment.h new file mode 100644 index 00000000..dea55c9f --- /dev/null +++ b/kstars/kstars/csegment.h @@ -0,0 +1,91 @@ +/*************************************************************************** + csegment.h - K Desktop Planetarium + ------------------- + begin : Sun Feb 1 2004 + copyright : (C) 2004 by Jason Harris + email : kstars@30doradus.org + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef CSEGMENT_H +#define CSEGMENT_H + +#include <qstring.h> +#include <qptrlist.h> + +/**@class CSegment + *A segment of a constellation boundary. The segment consists + *of two or more SkyPoint "nodes" which are vertices of the + *boundary polygon. A single segment is define as the set of nodes + *that separates a single pair of constellations. An entire + *constellation boundary must consist of many segments, because + *each constellation is surrounded by multiple neighbors. + * + *For example, imagine constellation A is surrounded by constellations + *B, C, and D. One CSegment (AB) will describe the boundary between + *A and B; another (AC) will describe the boundary between A and C; + *and a third (AD) will describe the boundary between A and D. + */ + +class SkyPoint; + +class CSegment { +public: + /**Constructor*/ + CSegment(); + /**Destructor (empty)*/ + ~CSegment() {} + + /**Add a SkyPoint node to the boundary segment. + *@p ra the RA of the node + *@p dec the Dec of the node + */ + void addPoint( double ra, double dec ); + + /**@return the name of one of the constellations + *that borders this boundary segment. + */ + QString name1() const { return Name1; } + + /**@return the name of one of the constellations + *that borders this boundary segment. + */ + QString name2() const { return Name2; } + + /**Set the names of the bounding constellations. Use the IAU + *three-letter abbreviations. + *@p n1 IAU name of one bounding constellation + *@p n2 IAU name of the other bounding constellation + */ + bool setNames( QString n1, QString n2 ); + + /**Determine if a given constellation borders this boundary segment + *@p cname the IAU code of the constellation to be tested. + */ + bool borders( QString cname ); + + /**@return pointer to the first node in the segment + */ + SkyPoint* firstNode() { return Nodes.first(); } + /**@return pointer to the next node in the segment. + *If we were on the last node, return the NULL pointer. + */ + SkyPoint* nextNode() { return Nodes.next(); } + + /**@return pointer to the list of nodes*/ + QPtrList<SkyPoint>* nodes() { return &Nodes; } + +private: + QPtrList<SkyPoint> Nodes; + QString Name1, Name2; +}; + +#endif |