EgtExecutor :

- in Trimming piccola miglioria nella scelta delle curve di sincronizzazione da visualizzare.
This commit is contained in:
Riccardo Elitropi
2026-01-22 19:25:01 +01:00
parent ab3681e209
commit f2dc3876b0
+28 -13
View File
@@ -704,6 +704,9 @@ ExeTrimmingGetSurfBzSyncPoints( int nParentId, int nEdge1Id, int nEdge2Id, doubl
bOk = bOk && ( pCrvEdge1 != nullptr && pCrvEdge1->IsValid() &&
pCrvEdge2 != nullptr && pCrvEdge2->IsValid()) ;
// Verifico che le curve siano entrambe Aperte o entrambe Chiuse
bOk = bOk && ( pCrvEdge1->IsClosed() == pCrvEdge2->IsClosed()) ;
// Recupero i punti di sincronizzazione
BIPNTVECTOR vSyncPoints ;
bOk = bOk && GetTrimmingSurfBzSyncPoints( pCrvEdge1, pCrvEdge2, dMyLinTol, vSyncPoints) &&
@@ -761,20 +764,32 @@ ExeTrimmingGetSurfBzSyncPoints( int nParentId, int nEdge1Id, int nEdge2Id, doubl
}
// Se devo mostrare alcune Linee -> Algoritmo di Pick_Bresenham
if ( bOk && nLineNbr > 0) {
if ( nLineNbr == 1)
setInds.insert( 0) ;
else {
int nDx = nToTSyncLines - 1 ;
int nDy = nLineNbr - 1 ;
int nErr = 0 ;
int nX = 0 ;
for ( int i = 0 ; i <= nDy ; ++ i) {
setInds.insert( nX) ;
nErr += nDx ;
while ( nErr >= nDy) {
nX += 1 ;
nErr -= nDy ;
bool bBothOpen = ( ! pCrvEdge1->IsClosed() && ! pCrvEdge2->IsClosed()) ;
bool bBothClosed = ( ! bBothOpen) ;
int nLastIdx = nToTSyncLines - 1 ;
if ( bBothClosed) {
int nLine = nLineNbr ;
if ( nLine == 1)
setInds.insert( 0) ;
else {
int nMaxIndex = nToTSyncLines - 2 ;
for ( int i = 0 ; i < nLine ; ++ i) {
double dT = double( i) / double( nLine) ;
int nIdx = int( 0.5 + dT * nMaxIndex) ;
setInds.insert( nIdx) ;
}
setInds.erase( nLastIdx) ;
}
}
else {
int nInternal = nLineNbr ;
setInds.insert( 0) ;
setInds.insert( nLastIdx) ;
int nMaxIndex = nLastIdx ;
for ( int i = 0; i < nInternal ; ++ i) {
double dT = double( i + 1) / double( nInternal + 1) ;
int nIdx = int( 0.5 + dT * nMaxIndex) ;
setInds.insert( nIdx) ;
}
}
}