Clean/fix triangulation internals
Drop unused variable Remove commented-out code Fix leak by using Vector instead of raw memory
This commit is contained in:
parent
90519b295c
commit
0e1972aa51
|
@ -71,7 +71,7 @@ bool Triangulate::is_inside_triangle(float Ax, float Ay,
|
||||||
return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f));
|
return ((aCROSSbp >= 0.0f) && (bCROSScp >= 0.0f) && (cCROSSap >= 0.0f));
|
||||||
};
|
};
|
||||||
|
|
||||||
bool Triangulate::snip(const Vector<Vector2> &p_contour,int u,int v,int w,int n,int *V)
|
bool Triangulate::snip(const Vector<Vector2> &p_contour,int u,int v,int w,int n,const Vector<int>& V)
|
||||||
{
|
{
|
||||||
int p;
|
int p;
|
||||||
float Ax, Ay, Bx, By, Cx, Cy, Px, Py;
|
float Ax, Ay, Bx, By, Cx, Cy, Px, Py;
|
||||||
|
@ -107,8 +107,8 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour,Vector<int> &result
|
||||||
if ( n < 3 ) return false;
|
if ( n < 3 ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
Vector<int> V;
|
||||||
int *V = (int*)alloca(sizeof(int)*n);
|
V.resize(n);
|
||||||
|
|
||||||
/* we want a counter-clockwise polygon in V */
|
/* we want a counter-clockwise polygon in V */
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour,Vector<int> &result
|
||||||
/* remove nv-2 Vertices, creating 1 triangle every time */
|
/* remove nv-2 Vertices, creating 1 triangle every time */
|
||||||
int count = 2*nv; /* error detection */
|
int count = 2*nv; /* error detection */
|
||||||
|
|
||||||
for(int m=0, v=nv-1; nv>2; )
|
for(int v=nv-1; nv>2; )
|
||||||
{
|
{
|
||||||
/* if we loop, it is probably a non-simple polygon */
|
/* if we loop, it is probably a non-simple polygon */
|
||||||
if (0 >= (count--))
|
if (0 >= (count--))
|
||||||
|
@ -144,18 +144,10 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour,Vector<int> &result
|
||||||
a = V[u]; b = V[v]; c = V[w];
|
a = V[u]; b = V[v]; c = V[w];
|
||||||
|
|
||||||
/* output Triangle */
|
/* output Triangle */
|
||||||
/*
|
|
||||||
result.push_back( contour[a] );
|
|
||||||
result.push_back( contour[b] );
|
|
||||||
result.push_back( contour[c] );
|
|
||||||
*/
|
|
||||||
|
|
||||||
result.push_back( a );
|
result.push_back( a );
|
||||||
result.push_back( b );
|
result.push_back( b );
|
||||||
result.push_back( c );
|
result.push_back( c );
|
||||||
|
|
||||||
m++;
|
|
||||||
|
|
||||||
/* remove v from remaining polygon */
|
/* remove v from remaining polygon */
|
||||||
for(s=v,t=v+1;t<nv;s++,t++)
|
for(s=v,t=v+1;t<nv;s++,t++)
|
||||||
V[s] = V[t];
|
V[s] = V[t];
|
||||||
|
|
|
@ -56,7 +56,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool snip(const Vector<Vector2> &p_contour,int u,int v,int w,int n,int *V);
|
static bool snip(const Vector<Vector2> &p_contour,int u,int v,int w,int n,const Vector<int>& V);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue