From b90289e42ba0931d29240ee29ea8ba173cd24bcf Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 6 Aug 2024 14:42:25 +0200 Subject: [PATCH] EgtGeomKernel : - piccole velocizzazioni per biarchi - modifiche per unificazioni AreSamePoint***. --- BiArcs.cpp | 8 +++++--- SurfBezier.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/BiArcs.cpp b/BiArcs.cpp index 55fcd4b..e3bb3cb 100644 --- a/BiArcs.cpp +++ b/BiArcs.cpp @@ -136,14 +136,16 @@ GetBiArc( const Point3d& ptP0, double dDir0Deg, const Point3d& ptP1, double dDir // determino la massima distanza tra la curva e il biarco double dSqDist = 0 ; - const double STEP = dTol ; // scelto euristicamente + const double STEP = 10 ; Point3d ptCurr ; bool bPnt = PL.GetFirstPoint( ptCurr) ; Point3d ptPrev = ptCurr ; while ( bPnt) { double dLen = Dist( ptCurr, ptPrev) ; - int nStep = ( dLen < STEP ? 2 : 1) * ( int( dLen / STEP) + 1) ; - nStep = min( 10, nStep) ; // scelto euristicamente + int nStep = int( dLen / STEP) + 1 ; + int nMinStep = ( dLen > 50 * dTol ? 3 : ( dLen > 10 * dTol ? 2 : 1)) ; + int nMaxStep = 10 ; + nStep = Clamp( nStep, nMinStep, nMaxStep) ; for ( int i = 1 ; i <= nStep ; ++ i) { double dCoeff = double( i) / nStep ; Point3d ptP = Media( ptPrev, ptCurr, dCoeff) ; diff --git a/SurfBezier.cpp b/SurfBezier.cpp index 330cd6d..c67584e 100644 --- a/SurfBezier.cpp +++ b/SurfBezier.cpp @@ -1723,23 +1723,23 @@ SurfBezier::ReorderPntVector( const POLYLINEVECTOR& vPL, bool bTriangulatedIn3D, nInd = 0 ; Point3d ptPoly ; pl.GetFirstPoint( ptPoly) ; bool bFound = false ; - if( AreSamePointStepExact( pt, ptPoly)){ + if( AreSamePointExact( pt, ptPoly)){ nPoints = pl.GetPointNbr() ; nPoly = poly ; bFound = true ; pl.GetNextPoint( ptPoly) ; - if( ! AreSamePointStepExact( vPnt[p+1], ptPoly)) + if( ! AreSamePointExact( vPnt[p+1], ptPoly)) bInverted = true ; break ; } while ( pl.GetNextPoint( ptPoly) && ! bFound) { ++ nInd ; - if( AreSamePointStepExact( pt, ptPoly)) { + if( AreSamePointExact( pt, ptPoly)) { nPoints = pl.GetPointNbr() ; nPoly = poly ; bFound = true ; pl.GetNextPoint( ptPoly) ; - if( ! AreSamePointStepExact( vPnt[p+1], ptPoly)) + if( ! AreSamePointExact( vPnt[p+1], ptPoly)) bInverted = true ; break ; } @@ -1817,7 +1817,7 @@ SurfBezier::ReorderPntEnhancedVector( const POLYLINEVECTOR& vPL, bool bTriangula if( vbPntChecked[t]) continue ; Point3d ptToCheck = vPnt[t] ; - if ( AreSamePointStepExact( pt, ptToCheck)) { + if ( AreSamePointExact( pt, ptToCheck)) { vbPntChecked[t] = true ; vPntOrd.push_back( vPntPolyToOrd[p]) ; }