EgtGeomKernel 1.9l4 :
- fabs sostituito da abs - in Zmap razionalizzazione operazioni taglio spilloni - in SurfTriMesh UpdateFaceting senza più chiamate recursive.
This commit is contained in:
+12
-12
@@ -46,7 +46,7 @@ CalcMinDistPointPolyLine( const Point3d& ptP, PolyLine& PL, double dLinTol, MDCV
|
||||
if ( ! dstPtLn.GetSqDist( dSqDist))
|
||||
continue ;
|
||||
// altro punto con la stessa minima distanza già trovata
|
||||
if ( bFound && fabs( dSqDist - dSqMinDist) < 2 * dMinDist * dLinTol) {
|
||||
if ( bFound && abs( dSqDist - dSqMinDist) < 2 * dMinDist * dLinTol) {
|
||||
// salvo i dati nella struttura
|
||||
approxMin.dDist = dMinDist ;
|
||||
dstPtLn.GetMinDistPoint( approxMin.ptQ) ;
|
||||
@@ -111,20 +111,20 @@ PolishMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve,
|
||||
// contatore iterazioni
|
||||
nCount ++ ;
|
||||
// calcolo P, D1 e D2
|
||||
nSide = ( fabs( dPar - approxMin.dParMin) < EPS_PARAM) ? ICurve::FROM_PLUS : ICurve::FROM_MINUS ;
|
||||
nSide = ( abs( dPar - approxMin.dParMin) < EPS_PARAM) ? ICurve::FROM_PLUS : ICurve::FROM_MINUS ;
|
||||
cCurve.GetPointD1D2( dPar, nSide, ptQ, &vtDer1, &vtDer2) ;
|
||||
// vettore dal punto al piede sulla curva
|
||||
vtDiff = ptQ - ptP ;
|
||||
// angolo tra vettore e tangente
|
||||
dTemp = vtDer1 * vtDiff ;
|
||||
if ( fabs( dTemp) > EPS_ZERO)
|
||||
if ( abs( dTemp) > EPS_ZERO)
|
||||
dSqCosA = dTemp * dTemp / ( vtDer1.SqLen() * vtDiff.SqLen()) ;
|
||||
else
|
||||
dSqCosA = 0 ;
|
||||
// stima prossimo valore del parametro (Newton : Unext = U - F(U) / F'(U))
|
||||
dPrevPar = dPar ;
|
||||
dTemp = vtDer2 * vtDiff + vtDer1.SqLen() ;
|
||||
if ( fabs( dTemp) > EPS_ZERO)
|
||||
if ( abs( dTemp) > EPS_ZERO)
|
||||
dPar = dPrevPar - ( vtDer1 * vtDiff) / dTemp ;
|
||||
// clipping parametro
|
||||
if ( dPar < approxMin.dParMin) {
|
||||
@@ -143,8 +143,8 @@ PolishMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve,
|
||||
else
|
||||
dPar = approxMin.dParMax ;
|
||||
}
|
||||
} while ( nCount < MAX_COUNT && fabs( dPar - dPrevPar) > EPS_PARAM &&
|
||||
fabs( dSqCosA) > COS_ORTO_ANG_ZERO * COS_ORTO_ANG_ZERO) ;
|
||||
} while ( nCount < MAX_COUNT && abs( dPar - dPrevPar) > EPS_PARAM &&
|
||||
abs( dSqCosA) > COS_ORTO_ANG_ZERO * COS_ORTO_ANG_ZERO) ;
|
||||
|
||||
if ( nCount == MAX_COUNT)
|
||||
LOG_DBG_ERR( GetEGkLogger(), "ERROR : Exceeded recursions") ;
|
||||
@@ -165,17 +165,17 @@ FilterMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve,
|
||||
bool bLastOnEnd = false ; // flag per ultimo punto su fine del suo intervallo
|
||||
for ( Iter = vApproxMin.begin() ; Iter != vApproxMin.end() ; ++Iter) {
|
||||
// altro punto con la stessa minima distanza
|
||||
if ( bFound && fabs( (*Iter).dDist - dMinDist) < EPS_SMALL) {
|
||||
if ( bFound && abs( (*Iter).dDist - dMinDist) < EPS_SMALL) {
|
||||
// se abbastanza lontano e non su bordi intervallino lo aggiungo
|
||||
if ( SqDist( (*Iter).ptQ, Info.back().ptQ) > MIN_LEN_CONT_MDPC &&
|
||||
! bLastOnEnd && fabs( (*Iter).dPar - (*Iter).dParMin) > EPS_PARAM) {
|
||||
! bLastOnEnd && abs( (*Iter).dPar - (*Iter).dParMin) > EPS_PARAM) {
|
||||
Info.emplace_back( MDPCI_NORMAL, (*Iter).dPar, (*Iter).ptQ) ;
|
||||
bLastOnEnd = fabs( (*Iter).dPar - (*Iter).dParMax) < EPS_PARAM ;
|
||||
bLastOnEnd = abs( (*Iter).dPar - (*Iter).dParMax) < EPS_PARAM ;
|
||||
}
|
||||
// altrimenti lo sostituisco se distanza minore
|
||||
else if ( (*Iter).dDist < dMinDist) {
|
||||
Info.back() = MinDistPCInfo( MDPCI_NORMAL, (*Iter).dPar, (*Iter).ptQ) ;
|
||||
bLastOnEnd = fabs( (*Iter).dPar - (*Iter).dParMax) < EPS_PARAM ;
|
||||
bLastOnEnd = abs( (*Iter).dPar - (*Iter).dParMax) < EPS_PARAM ;
|
||||
}
|
||||
}
|
||||
// primo punto o punto con minima distanza più bassa
|
||||
@@ -186,7 +186,7 @@ FilterMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve,
|
||||
// il nuovo vettore deve contenere solo quest'ultimo minimo
|
||||
Info.clear() ;
|
||||
Info.emplace_back( MDPCI_NORMAL, (*Iter).dPar, (*Iter).ptQ) ;
|
||||
bLastOnEnd = fabs( (*Iter).dPar - (*Iter).dParMax) < EPS_PARAM ;
|
||||
bLastOnEnd = abs( (*Iter).dPar - (*Iter).dParMax) < EPS_PARAM ;
|
||||
}
|
||||
}
|
||||
if ( Info.empty())
|
||||
@@ -201,7 +201,7 @@ FilterMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve,
|
||||
for ( int i = 1 ; i < (int) Info.size() ; ++ i) {
|
||||
dU = 0.5 * ( Info[i-1].dPar + Info[i].dPar) ;
|
||||
cCurve.GetPointD1D2( dU, ICurve::FROM_MINUS, ptQ) ;
|
||||
if ( fabs( SqDist( ptP, ptQ) - dMinDist * dMinDist) > 2 * dMinDist * EPS_SMALL) {
|
||||
if ( abs( SqDist( ptP, ptQ) - dMinDist * dMinDist) > 2 * dMinDist * EPS_SMALL) {
|
||||
bCont = false ;
|
||||
break ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user