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
+14 -14
View File
@@ -188,7 +188,7 @@ VerifyAndAdjustSamePoint( ICurve* pCrv1, ICurve* pCrv2, CurveComposite& ccAux)
if ( ! AreSamePointXYEpsilon( ptP1, ptP2, 10 * EPS_SMALL))
return false ;
// se punti quasi coincidenti in Z
if ( fabs( ptP1.z - ptP2.z) < 10 * EPS_SMALL) {
if ( abs( ptP1.z - ptP2.z) < 10 * EPS_SMALL) {
// se coincidono esattamente, va bene così
if ( AreSamePointExact( ptP1, ptP2))
return true ;
@@ -238,7 +238,7 @@ VerifyAndAdjustInternalAngle( ICurve* pCrv1, ICurve* pCrv2, CurveComposite& ccAu
! intCC.GetIntersPointNearTo( 1, ptMid, ptNew2))
return false ;
// se punti coincidenti in Z
if ( fabs( ptNew1.z - ptNew2.z) < EPS_SMALL) {
if ( abs( ptNew1.z - ptNew2.z) < EPS_SMALL) {
// modifico le due curve sul punto medio
Point3d ptNew = 0.5 * ( ptNew1 + ptNew2) ;
return ( pCrv1->ModifyEnd( ptNew) && pCrv2->ModifyStart( ptNew)) ;
@@ -277,8 +277,8 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
if ( ! pCrv1->GetEndDir( vtDir1) || ! pCrv2->GetStartDir( vtDir2))
return false ;
// verifico se presente componente in Z
bool bDZ1 = fabs( vtDir1.z) > EPS_ANG_ZERO ;
bool bDZ2 = fabs( vtDir2.z) > EPS_ANG_ZERO ;
bool bDZ1 = abs( vtDir1.z) > EPS_ANG_ZERO ;
bool bDZ2 = abs( vtDir2.z) > EPS_ANG_ZERO ;
// le porto nel piano XY
vtDir1.z = 0 ;
vtDir2.z = 0 ;
@@ -290,7 +290,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
if ( ! vtDir1.GetAngleXY( vtDir2, dAngDeg))
return false ;
// se vicino all'angolo piatto, si devono ricalcolare usando le curve originali e spostandosi un poco
if ( fabs( dAngDeg) > ( ANG_STRAIGHT - EPS_ANG_SMALL)) {
if ( abs( dAngDeg) > ( ANG_STRAIGHT - EPS_ANG_SMALL)) {
// ritorno alle curve originali
PtrOwner<ICurve> pCrvOri1( pCrv1->Clone()) ;
PtrOwner<ICurve> pCrvOri2( pCrv2->Clone()) ;
@@ -314,18 +314,18 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
}
// verifico sia angolo esterno (accetto se entità quasi esattamente sovrapposto)
if ( fabs( dAngDeg) < ( ANG_STRAIGHT - 10 * EPS_ANG_ZERO) &&
if ( abs( dAngDeg) < ( ANG_STRAIGHT - 10 * EPS_ANG_ZERO) &&
( ( dDist < 0 && dAngDeg > 0) ||
( dDist > 0 && dAngDeg < 0)))
return false ;
// se l'angolo esterno supera il retto, offset extend diventa offset chamfer
if ( nType == ICurve::OFF_EXTEND && fabs( dAngDeg) > ANG_RIGHT + EPS_ANG_SMALL)
if ( nType == ICurve::OFF_EXTEND && abs( dAngDeg) > ANG_RIGHT + EPS_ANG_SMALL)
nType = ICurve::OFF_CHAMFER ;
// se angolo esterno molto piccolo, semplifico tutto
const double SMALL_EXT_ANG = 1.0 ;
bool bAngSmall = ( fabs( dAngDeg) < SMALL_EXT_ANG) ;
bool bAngSmall = ( abs( dAngDeg) < SMALL_EXT_ANG) ;
if ( bAngSmall)
nType = ICurve::OFF_EXTEND ;
@@ -348,7 +348,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
case ICurve::OFF_CHAMFER :
{
// lunghezza aggiuntiva in tangenza
double dLen = fabs( dDist) * tan( fabs( dAngDeg) / 4 * DEGTORAD) ;
double dLen = abs( dDist) * tan( abs( dAngDeg) / 4 * DEGTORAD) ;
// punti di costruzione smusso
Point3d ptP1, ptP1a, ptP2a, ptP2 ;
if ( ! pCrv1->GetEndPoint( ptP1) || ! pCrv2->GetStartPoint( ptP2))
@@ -357,7 +357,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
ptP2a = ptP2 - vtDir2 * dLen ;
// se sull'angolo c'era un dislivello (linea verticale eliminata)
double dDeltaZ = ptP2.z - ptP1.z ;
if ( fabs( dDeltaZ) > EPS_SMALL) {
if ( abs( dDeltaZ) > EPS_SMALL) {
ptP1a.z += dDeltaZ / 4 ;
ptP2a.z -= dDeltaZ / 4 ;
bDZ1 = true ;
@@ -399,7 +399,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
case ICurve::OFF_EXTEND :
{
// lunghezza aggiuntiva in tangenza
double dLen = fabs( dDist) * tan( fabs( dAngDeg) / 2 * DEGTORAD) ;
double dLen = abs( dDist) * tan( abs( dAngDeg) / 2 * DEGTORAD) ;
// punti di costruzione estensione
Point3d ptP1, ptPc, ptP2 ;
if ( ! pCrv1->GetEndPoint( ptP1) || ! pCrv2->GetStartPoint( ptP2))
@@ -407,7 +407,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dDist, int nT
ptPc = ptP1 + vtDir1 * dLen ;
// se sull'angolo c'era un dislivello (linea verticale eliminata)
double dDeltaZ = ptP2.z - ptP1.z ;
if ( fabs( dDeltaZ) > EPS_SMALL) {
if ( abs( dDeltaZ) > EPS_SMALL) {
ptPc.z += dDeltaZ / 2 ;
bDZ1 = true ;
bDZ2 = true ;
@@ -445,7 +445,7 @@ bool
AddFirstLastVerticalLines( CurveComposite& ccOffs, double dLenVertFirst, double dLenVertLast)
{
// se richiesto inserimento prima retta verticale
if ( fabs( dLenVertFirst) > EPS_SMALL) {
if ( abs( dLenVertFirst) > EPS_SMALL) {
Point3d ptP2 ;
if ( ! ccOffs.GetStartPoint( ptP2))
return false ;
@@ -458,7 +458,7 @@ AddFirstLastVerticalLines( CurveComposite& ccOffs, double dLenVertFirst, double
return false ;
}
// se richiesto inserimento ultima retta verticale
if ( fabs( dLenVertLast) > EPS_SMALL) {
if ( abs( dLenVertLast) > EPS_SMALL) {
Point3d ptP1 ;
if ( ! ccOffs.GetEndPoint( ptP1))
return false ;