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:
Dario Sassi
2018-12-27 11:19:40 +00:00
parent a149384fbb
commit 64c954ad4b
56 changed files with 936 additions and 1408 deletions
+13 -13
View File
@@ -315,7 +315,7 @@ SurfTriMesh::GetCentroid( Point3d& ptCen) const
nId = GetNextTriangle( nId, Tria) ;
}
dVolume /= 6 ;
if ( fabs( dVolume) < EPS_SMALL * EPS_SMALL * EPS_SMALL)
if ( abs( dVolume) < EPS_SMALL * EPS_SMALL * EPS_SMALL)
return false ;
ptCen /= ( 24 * 2 * dVolume) ;
}
@@ -330,7 +330,7 @@ SurfTriMesh::GetCentroid( Point3d& ptCen) const
ptCen += Tria.GetCentroid() * dTriaArea ;
nId = GetNextTriangle( nId, Tria) ;
}
if ( fabs( dArea) < SQ_EPS_SMALL)
if ( abs( dArea) < SQ_EPS_SMALL)
return false ;
ptCen /= dArea ;
}
@@ -2064,20 +2064,20 @@ SurfTriMesh::CreateByScrewing( const PolyLine& PL, const Point3d& ptAx, const Ve
if ( vtAx.IsSmall())
return false ;
// verifico se solo rivoluzione
bool bOnlyRev = ( fabs( dMove) < EPS_SMALL) ;
bool bOnlyRev = ( abs( dMove) < EPS_SMALL) ;
// verifico che l'angolo di rotazione sia significativo e, se solo rivoluzione, non superi un giro
if ( fabs( dAngRot) < EPS_ANG_SMALL)
if ( abs( dAngRot) < EPS_ANG_SMALL)
return false ;
if ( bOnlyRev && fabs( dAngRot) > ANG_FULL)
if ( bOnlyRev && abs( dAngRot) > ANG_FULL)
dAngRot = _copysign( ANG_FULL, dAngRot) ;
// verifico se rotazione completa
bool bFullRev = bOnlyRev && ( fabs( fabs( dAngRot) - ANG_FULL) < EPS_ANG_SMALL) ;
bool bFullRev = bOnlyRev && ( abs( abs( dAngRot) - ANG_FULL) < EPS_ANG_SMALL) ;
// aggiusto il valore dell'angolo di step
const double MIN_STEP_ROT = 1 ;
const double MAX_STEP_ROT = 90 ;
if ( fabs( dStepRot) < MIN_STEP_ROT)
if ( abs( dStepRot) < MIN_STEP_ROT)
dStepRot = _copysign( MIN_STEP_ROT, dAngRot) ;
else if ( fabs( dStepRot) > MAX_STEP_ROT)
else if ( abs( dStepRot) > MAX_STEP_ROT)
dStepRot = _copysign( MAX_STEP_ROT, dAngRot) ;
else
dStepRot = _copysign( dStepRot, dAngRot) ;
@@ -2604,7 +2604,7 @@ SurfTriMesh::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double
return false ;
// verifico non sia nulla
if ( fabs( dCoeffX) < EPS_ZERO && fabs( dCoeffY) < EPS_ZERO && fabs( dCoeffZ) < EPS_ZERO)
if ( abs( dCoeffX) < EPS_ZERO && abs( dCoeffY) < EPS_ZERO && abs( dCoeffZ) < EPS_ZERO)
return false ;
// calcolo bbox allineato con riferimento di scalatura e senza tener conto dello spessore
@@ -2613,9 +2613,9 @@ SurfTriMesh::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double
if ( ! GetBBox( frRef, b3Ref))
return false ;
Vector3d vtDelta = b3Ref.GetMax() - b3Ref.GetMin() ;
bool bZeroX = ( fabs( vtDelta.x * dCoeffX) < EPS_SMALL) ;
bool bZeroY = ( fabs( vtDelta.y * dCoeffY) < EPS_SMALL) ;
bool bZeroZ = ( fabs( vtDelta.z * dCoeffZ) < EPS_SMALL) ;
bool bZeroX = ( abs( vtDelta.x * dCoeffX) < EPS_SMALL) ;
bool bZeroY = ( abs( vtDelta.y * dCoeffY) < EPS_SMALL) ;
bool bZeroZ = ( abs( vtDelta.z * dCoeffZ) < EPS_SMALL) ;
if ( ( bZeroX && bZeroY) || ( bZeroX && bZeroZ) || ( bZeroY && bZeroZ))
return false ;
@@ -2635,7 +2635,7 @@ SurfTriMesh::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double
bMirror = ( bMirror ? ( dCoeffZ > 0) : ( dCoeffZ < 0)) ;
// aggiorno le facce
bool bRecalc = ( fabs( dCoeffX) < EPS_ZERO || fabs( dCoeffY) < EPS_ZERO || fabs( dCoeffZ) < EPS_ZERO) ;
bool bRecalc = ( abs( dCoeffX) < EPS_ZERO || abs( dCoeffY) < EPS_ZERO || abs( dCoeffZ) < EPS_ZERO) ;
for ( int i = 0 ; i < GetTriangleSize() ; ++ i) {
if ( m_vTria[i].nIdVert[0] != SVT_DEL) {
// se c'è mirror, devo invertire la faccia