41 #include "partitionX.h"
43 #define CONCAVITY_ZERO 1.0e-6 //this number is used to test whether a vertex is concave (refelx)
52 Real* P = v->getPrev()->head();
53 Real* N = v->getNext()->head();
55 (compV2InX(T,P) != -1 &&
58 (compV2InX(T,P) != 1 &&
69 Real* A = v->getPrev()->head();
74 Bx = 10*(B[0] - A[0]);
75 By = 10*(B[1] - A[1]);
76 Cx = 10*(C[0] - A[0]);
77 Cy = 10*(C[1] - A[1]);
79 if(Bx*Cy - Cx*By < -CONCAVITY_ZERO)
return 1;
91 if(! isCuspX(v))
return 0;
112 if(cuspTypeX(polygon) == 1)
114 for(temp = polygon->getNext(); temp != polygon; temp = temp->getNext())
115 if(cuspTypeX(temp) == 1)
121 void findInteriorCuspsX(
directedLine *polygon, Int& ret_n_interior_cusps,
125 ret_n_interior_cusps = 0;
126 if(cuspTypeX(polygon) == 1)
128 ret_interior_cusps[ret_n_interior_cusps++] = polygon;
130 for(temp = polygon->getNext(); temp != polygon; temp = temp->getNext())
131 if(cuspTypeX(temp) == 1)
133 ret_interior_cusps[ret_n_interior_cusps++] = temp;
140 Int is_minimal = ((compV2InX(cusp->head(), cusp->tail()) == -1)? 1:0);
143 for(temp = cusp->getNext(); temp != cusp; temp = temp->getNext())
145 if(compV2InX(cusp->head(), temp->head()) == 1)
151 for(temp = cusp->getNext(); temp != cusp; temp = temp->getNext())
153 if(compV2InX(cusp->head(), temp->head()) == -1)