50 inline bool leftHandturn(
double p1x,
double p1y,
double p2x,
double p2y,
double p3x,
double p3y )
54 return( ( ((p3y - p1y) * (p2x - p1x)) - ((p2y - p1y) * (p3x - p1x)) ) > 0 );
79 double dx, dy, sx,
sy;
93 stripID(-1), regionID( -1 ), ola( -1 ), olb( -1 )
100 sx(rhs.sx), sy(rhs.sy),
101 la(rhs.la), lb(rhs.lb),
102 stripID( rhs.stripID), regionID( rhs.regionID ),
103 ola( rhs.ola ), olb( rhs.olb )
109 return( dx < sx || (dx == sx && dy < sy ) );
132 return dx == rhs.
dx && dy == rhs.
dy && sx == rhs.
sx && sy == rhs.
sy;
144 if( dx < rhs.
dx || (dx == rhs.
dx && dy < rhs.
dy ) )
return true;
145 else if( dx == rhs.
dx && dy == rhs.
dy ) {
147 if( isLeft() != rhs.
isLeft( ) )
return !isLeft();
149 else if( this->colinear( rhs ) && (sx < rhs.
sx || (sx == rhs.
sx && sy < rhs.
sy)) )
return true;
161 return 0 == ( ((rhs.
dy - dy) * (sx - dx)) - ((sy - dy) * (rhs.
dx - dx)) ) &&
162 0 == ( ((rhs.
sy - dy) * (sx - dx)) - ((sy - dy) * (rhs.
sx - dx)) ) ;
176 if( x == dx )
return dy;
177 else if( x == sx )
return sy;
178 return( ( (sy*x - sy*dx - dy*x + dy*dx) /
float((sx-dx))) + dy );
185 cerr <<
"[(" << rhs.
dx <<
"," << rhs.
dy <<
")(" << rhs.
sx <<
"," << rhs.
sy <<
") " << rhs.
la <<
", " << rhs.
lb <<
", " << rhs.
regionID <<
" <" << rhs.
ola <<
","<<rhs.
olb<<
">"<<
"]";
202 void parallelOverlay( vector<halfsegment> &r1, vector<halfsegment> &r2, vector<halfsegment> &result,
203 int numSplits=-1,
int numWorkerThreads = -1);
218 vector<halfsegment>& result );
bool colinear(const halfsegment &rhs) const
holds a single halfsegment, along with labeling information and information indicating if the opposin...
bool leftHandturn(double p1x, double p1y, double p2x, double p2y, double p3x, double p3y)
int regionID
The region the seg belongs to.
double getYvalAtX(const double x) const
bool operator<(const halfsegment &rhs) const
void overlayPlaneSweep(const halfsegment r1[], int r1Size, const halfsegment r2[], int r2Size, vector< halfsegment > &result)
double dx
dominating and submissive points
int la
label above, label below
friend ostream & operator<<(ostream &out, const halfsegment &rhs)
halfsegment(const halfsegment &rhs)
halfsegment getBrother() const
bool operator==(const halfsegment &rhs) const
void parallelOverlay(vector< halfsegment > &r1, vector< halfsegment > &r2, vector< halfsegment > &result, int numSplits=-1, int numWorkerThreads=-1)