/****************************************************************************
* gtrig_adt.h :
* header file for triangle ADT.
*
* Change Log :
* Dec-22-1996 Initial version, Liujian Qian
*
* $Id: gadt_trig.h,v 1.3 1998/12/10 00:11:36 qian Exp $
***************************************************************************/
#ifndef _GTRIG_H_
#define _GTRIG_H_
/**
* class GTrig
*
* riangle class. It has three points (order of which is arbitray?)
*
*/
class GTrig : public GSpatial
{
Coord coord[9]; //capcity for potential 3D triangles.
public:
GTrig() {init();}
GTrig(Coord xLow, Coord yLow, Coord xUp, Coord yUp);
GTrig(const GTrig& other);
GTrig& operator= (const GTrig& other);
//====================================================
//====
//==== common methods
//====
//====================================================
virtual GType type (void) const { return _Triangle; }
virtual uint32 getPSize () const;
virtual Result init (void) {for(int i=0; i<9; i++)
coord[i]=InvalidCoord;
return GOk;}
virtual Result input (const char* in);
virtual Result output (char*& out);
virtual Result pack (DataPipe& p);
virtual Result unpack (DataPipe& p);
virtual Result mbr (GRect& b) const;
virtual int cmp (const GADT& other) const;
virtual GADT* clone () const {return new GTrig;}
virtual Result scale (double, double, double zf=1);
virtual Result translate (double, double, double zf=1);
virtual Result rotate (double, bool);
virtual Result transform (const GMatrix&);
virtual int covers (const GSpatial&) const {return 0;}
virtual int intersects (const GSpatial&) const {return 0;}
inline void set(const GPoint&, const GPoint&, const GPoint&);
inline float area() const;
inline float perimeter() const;
bool equals (GTrig& other) const;
void centroid(int& x, int& y);
virtual int covers (const GADT& a) const;
virtual int intersects(const GADT& a) const;
private:
inline int _covers(const GRect& a) const;
inline int _covers(const GPoint& p) const;
inline int _covers(const GSegment& seg) const;
inline int _covers(const GArc& arc) const;
inline int _covers(const GPolygon& pgn) const;
inline int _intersects(const GRect& a) const;
inline int _intersects(const GCircle& a) const;
inline int _intersects(const GArc& arc) const;
inline int _intersects(const GSegment& seg) const;
inline int _intersects(const GPolygon& pgn) const;
friend ostream& operator << (ostream& s, const GTrig& t);
}; //class GTrig
#endif
Documentation generated by lqian@lqian-sun on Wed Jul 14 09:36:10 EDT 1999