2007-12-08 18:19:48 +00:00
|
|
|
// file php_polygon_vertex.h
|
|
|
|
// See comments in file php_polygon_vertex.cpp
|
|
|
|
|
|
|
|
#ifndef PHP_POLYGON_VERTEX_H
|
|
|
|
#define PHP_POLYGON_VERTEX_H
|
|
|
|
|
|
|
|
#include "defs-macros.h"
|
|
|
|
|
|
|
|
class vertex;
|
|
|
|
class polygon;
|
|
|
|
|
|
|
|
class segment
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
segment(double xc=0.0, double yc=0.0, int d=0 );
|
|
|
|
double Xc(){ return m_xc; };
|
|
|
|
double Yc(){ return m_yc; };
|
|
|
|
int d(){ return m_d; };
|
|
|
|
void setXc( double xc ){ m_xc = xc; };
|
|
|
|
void setYc( double yc ){ m_yc = yc; };
|
|
|
|
|
|
|
|
double m_xc, m_yc; // center of arc
|
|
|
|
int m_d; // direction (-1=CW, 0=LINE, 1=CCW)
|
|
|
|
};
|
|
|
|
|
|
|
|
class vertex
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
vertex( double x, double y,
|
|
|
|
double xc=0.0, double yc=0.0, double d=0.0,
|
|
|
|
vertex * nextV=NULL, vertex * prevV=NULL,
|
|
|
|
polygon * nextPoly=NULL,
|
|
|
|
BOOL intersect=FALSE,
|
|
|
|
vertex * neighbor=NULL,
|
|
|
|
double alpha=0.0,
|
|
|
|
BOOL entry=TRUE,
|
|
|
|
BOOL checked=FALSE );
|
|
|
|
~vertex();
|
|
|
|
int id() { return m_id; };
|
|
|
|
double X() { return m_x; };
|
|
|
|
void setX( double x ) { m_x = x; };
|
|
|
|
double Y() { return m_y; };
|
|
|
|
void setY( double y ) { m_y = y; };
|
|
|
|
double Xc ( BOOL g = TRUE );
|
|
|
|
double Yc ( BOOL g = TRUE );
|
|
|
|
double d ( BOOL g = TRUE );
|
|
|
|
void setXc ( double xc ) { m_nSeg->setXc(xc); };
|
|
|
|
void setYc ( double yc ) { m_nSeg->setYc(yc); };
|
|
|
|
void setNext ( vertex* nextV ){ m_nextV = nextV; };
|
|
|
|
vertex * Next (){ return m_nextV; };
|
|
|
|
void setPrev ( vertex *prevV ){ m_prevV = prevV; };
|
|
|
|
vertex * Prev (){ return m_prevV; };
|
|
|
|
void setNseg ( segment * nSeg ){ m_nSeg = nSeg; };
|
|
|
|
segment * Nseg (){ return m_nSeg; };
|
|
|
|
void setPseg ( segment * pSeg ){ m_pSeg = pSeg; };
|
|
|
|
segment * Pseg (){ return m_pSeg; };
|
|
|
|
void setNextPoly ( polygon * nextPoly ){ m_nextPoly = nextPoly; };
|
|
|
|
polygon * NextPoly (){ return m_nextPoly; };
|
|
|
|
void setNeighbor ( vertex * neighbor ){ m_neighbor = neighbor; };
|
|
|
|
vertex * Neighbor (){ return m_neighbor; };
|
|
|
|
double Alpha (){ return m_alpha; };
|
|
|
|
BOOL isIntersect (){ return m_intersect; };
|
|
|
|
void setChecked( BOOL check = TRUE);
|
|
|
|
BOOL isChecked () { return m_checked; };
|
|
|
|
void setEntry ( BOOL entry = TRUE){ m_entry = entry; }
|
|
|
|
BOOL isEntry (){ return m_entry; };
|
|
|
|
|
|
|
|
double m_x, m_y; // coords
|
|
|
|
vertex * m_nextV; // links to next and prev vertices
|
|
|
|
vertex * m_prevV; // links to next and prev vertices
|
|
|
|
segment * m_nSeg, * m_pSeg; // links to next and prev segments
|
|
|
|
polygon * m_nextPoly;
|
|
|
|
BOOL m_intersect;
|
|
|
|
vertex * m_neighbor;
|
|
|
|
double m_alpha;
|
|
|
|
BOOL m_entry;
|
|
|
|
BOOL m_checked;
|
|
|
|
int m_id;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // ifndef PHP_POLYGON_VERTEX_H
|