EgtGeomKernel :
- migliorie e correzioni a SurfExtend e Offset3d.
This commit is contained in:
@@ -1295,8 +1295,7 @@ GetCurveOnSurfInfo( const ICurve& crCrv, const ISurfTriMesh& pSurf,
|
||||
|
||||
// approssimo la curva con una polilinea entro la tolleranza
|
||||
PolyLine PL ;
|
||||
if ( ! crCrv.ApproxWithLines( 10 * EPS_SMALL, ANG_TOL_STD_DEG, ICurve::APL_SPECIAL, PL) ||
|
||||
! PL.RemoveAlignedPoints( dLinTol, false) )
|
||||
if ( ! crCrv.ApproxWithLines( 10 * EPS_SMALL, ANG_TOL_STD_DEG, ICurve::APL_SPECIAL, PL))
|
||||
return false ;
|
||||
const double MAX_SEG_LEN = min( dMaxSegmLen, 0.977) ;
|
||||
if ( ! PL.AdjustForMaxSegmentLen( MAX_SEG_LEN))
|
||||
@@ -1345,7 +1344,7 @@ GetCurveOnSurfInfo( const ICurve& crCrv, const ISurfTriMesh& pSurf,
|
||||
nTria = nTriaCurr ;
|
||||
if ( bJoint) {
|
||||
int nTria2 ; pCC->GetCurveTempProp( int( dPar), nTria2, 0) ;
|
||||
Triangle3d trTria2 ; pSurf.GetTriangle( nTria2, trTria2) ;
|
||||
Triangle3dEx trTria2 ; pSurf.GetTriangle( nTria2, trTria2) ;
|
||||
if ( ! CalcNormal( ptP, trTria2, Pt5ax.vtDir2))
|
||||
Pt5ax.vtDir2 = trTria2.GetN() ;
|
||||
nTria = nTria2 ;
|
||||
@@ -1368,13 +1367,15 @@ GetCurveOnSurfInfo( const ICurve& crCrv, const ISurfTriMesh& pSurf,
|
||||
else
|
||||
vtDir = vtDirPrev ;
|
||||
// in caso sia stato superato l'angolo limite dò priorità alla direzione precedente
|
||||
bool bEdge = false ;
|
||||
if ( vtDirPrev.IsValid() && (! bFirst || ( bFirst && bClosed))) {
|
||||
double dProj = vtDirNext * vtDirPrev ;
|
||||
if ( dProj > COS_ANG_MAX_CORNER)
|
||||
bEdge = dProj < COS_ANG_MAX_CORNER ;
|
||||
if ( ! bEdge)
|
||||
vtDir = Media( vtDirNext, vtDirPrev) ;
|
||||
}
|
||||
vtDirPrev = vtDirNext ;
|
||||
bool bEdge = ! AreSameVectorExact( vPt5ax.back().vtDir1, vPt5ax.back().vtDir2) ;
|
||||
bEdge = bEdge || ! AreSameVectorExact( vPt5ax.back().vtDir1, vPt5ax.back().vtDir2) ;
|
||||
Vector3d vtTang = vtDir ^ vtNorm ; vtTang.Normalize() ;
|
||||
vPt5ax.back().vtDir1 = vtTang ;
|
||||
if ( bEdge) {
|
||||
|
||||
Reference in New Issue
Block a user