EgtGeomKernel :

- corretto bug nella triangolazione delle sup. di Bezier.
This commit is contained in:
Daniele Bariletti
2024-02-12 12:53:57 +01:00
parent 595421bcdd
commit 47e79756d1
+9 -8
View File
@@ -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) ;
}
}