EgtGeomKernel :
- corretto bug nella triangolazione delle sup. di Bezier.
This commit is contained in:
@@ -1805,8 +1805,9 @@ Tree::TraceLoopLabelCell( const POLYLINEVECTOR& vplPolygons)
|
||||
if ( ! nCells.empty())
|
||||
nId = nCells.back() ;
|
||||
else
|
||||
// il loop è risultato fuori dallo spazio parametrico
|
||||
return false ;
|
||||
// il loop è risultato fuori dallo spazio parametrico // può capitare se ho una superficie trimmata con più chunk con bbox separate.
|
||||
// ma potrebbe anche essere indicatore di un errore
|
||||
continue ;
|
||||
int nFirstCell = nId ;
|
||||
// trovo quali punti della polyline sono nella cella e l'intersezione
|
||||
PNTVECTOR vptInters ;
|
||||
@@ -2077,14 +2078,14 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool
|
||||
// oltre il 3 sono le celle adiacenti in diagonale al vertice-> 4 corrisponde al ptTl e da lì in senso antiorario
|
||||
// -1 se la curva è sempre dentro la cella
|
||||
Point3d ptInters ;
|
||||
int nEdge2 ;
|
||||
//int nEdge2 ;
|
||||
if ( ptEnd.y >= ptTR.y && ptEnd.x <= ptTR.x) {
|
||||
nEdge = 0 ;
|
||||
//nEdge = 0 ;
|
||||
// lato sopra
|
||||
clEdge.Set( ptTR, ptTl) ;
|
||||
// lato sinistro
|
||||
if ( ptEnd.x < ptBL.x) {
|
||||
nEdge2 = 1 ;
|
||||
//nEdge2 = 1 ;
|
||||
clEdge2.Set( ptTl, ptBL) ;
|
||||
}
|
||||
}
|
||||
@@ -2094,7 +2095,7 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool
|
||||
clEdge.Set( ptTl, ptBL) ;
|
||||
// lato sotto
|
||||
if ( ptEnd.y < ptBL.y) {
|
||||
nEdge2 = 2 ;
|
||||
//nEdge2 = 2 ;
|
||||
clEdge2.Set( ptBL, ptBr) ;
|
||||
}
|
||||
}
|
||||
@@ -2104,7 +2105,7 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool
|
||||
clEdge.Set( ptBL, ptBr) ;
|
||||
// lato destro
|
||||
if ( ptEnd.x > ptTR.x) {
|
||||
nEdge2 = 3 ;
|
||||
//nEdge2 = 3 ;
|
||||
clEdge2.Set( ptBr, ptTR) ;
|
||||
}
|
||||
}
|
||||
@@ -2114,7 +2115,7 @@ Tree::FindInters( int& nId, const CurveLine& clTrim, PNTVECTOR& vptInters, bool
|
||||
clEdge.Set( ptBr, ptTR) ;
|
||||
// lato sopra
|
||||
if ( ptEnd.y > ptTR.y) {
|
||||
nEdge2 = 0 ;
|
||||
//nEdge2 = 0 ;
|
||||
clEdge2.Set( ptTR, ptTl) ;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user