EgtGeomKernel 1.5d4 :
- migliorie alla triangolazione di aree piane.
This commit is contained in:
+15
-7
@@ -185,19 +185,27 @@ Triangulate::MakeByEC2( const PNTVECTOR& vPt, const INTVECTOR& vPol, INTVECTOR&
|
||||
if ( bIsEar) {
|
||||
// Save square distance of diagonal
|
||||
double dSqDist = SqDist(vPt[vPol[vPrev[i]]], vPt[vPol[vNext[i]]]) ;
|
||||
// Try with next
|
||||
// Try with next or next^2
|
||||
int j = vNext[i] ;
|
||||
bool bIsEar1 = TestTriangle( vPt, vPol, vPrev, vNext, j) ;
|
||||
double dSqDist1 = INFINITO ;
|
||||
if ( bIsEar1)
|
||||
if ( TestTriangle( vPt, vPol, vPrev, vNext, j))
|
||||
dSqDist1 = SqDist( vPt[vPol[vPrev[j]]], vPt[vPol[vNext[j]]]) ;
|
||||
// Try with prev
|
||||
else {
|
||||
j = vNext[j] ;
|
||||
if ( TestTriangle( vPt, vPol, vPrev, vNext, j))
|
||||
dSqDist1 = SqDist( vPt[vPol[vPrev[j]]], vPt[vPol[vNext[j]]]) ;
|
||||
}
|
||||
// Try with prev or prev^2
|
||||
int k = vPrev[i] ;
|
||||
bool bIsEar2 = TestTriangle( vPt, vPol, vPrev, vNext, k) ;
|
||||
double dSqDist2 = INFINITO ;
|
||||
if ( bIsEar2)
|
||||
if ( TestTriangle( vPt, vPol, vPrev, vNext, k))
|
||||
dSqDist2 = SqDist( vPt[vPol[vPrev[k]]], vPt[vPol[vNext[k]]]) ;
|
||||
// Choose the best
|
||||
else {
|
||||
k = vPrev[k] ;
|
||||
if ( TestTriangle( vPt, vPol, vPrev, vNext, k))
|
||||
dSqDist2 = SqDist( vPt[vPol[vPrev[k]]], vPt[vPol[vNext[k]]]) ;
|
||||
}
|
||||
// Choose the better
|
||||
if ( dSqDist <= dSqDist1 && dSqDist <= dSqDist2)
|
||||
; // i is the better
|
||||
else if ( dSqDist1 <= dSqDist2)
|
||||
|
||||
Reference in New Issue
Block a user