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:
+16
-16
@@ -228,19 +228,19 @@ OffsetCurve::Make( const ICurve* pCrv, double dDist, int nType)
|
||||
// calcolo la massima estensione di offset (Voronoi con entità adiacenti)
|
||||
double dMaxDist = INFINITO ;
|
||||
if ( bPrevInt && bNextInt) {
|
||||
double dTgA = tan( 0.5 * ( ANG_STRAIGHT - fabs( vAngs[nInd1-1])) * DEGTORAD) ;
|
||||
double dTgB = tan( 0.5 * ( ANG_STRAIGHT - fabs( vAngs[nInd1])) * DEGTORAD) ;
|
||||
double dTgA = tan( 0.5 * ( ANG_STRAIGHT - abs( vAngs[nInd1-1])) * DEGTORAD) ;
|
||||
double dTgB = tan( 0.5 * ( ANG_STRAIGHT - abs( vAngs[nInd1])) * DEGTORAD) ;
|
||||
dMaxDist = dTgA * dTgB / ( dTgA + dTgB) * vLens[nInd1-1] ;
|
||||
}
|
||||
else if ( bPrevInt) {
|
||||
double dTgA = tan( 0.5 * ( ANG_STRAIGHT - fabs( vAngs[nInd1-1])) * DEGTORAD) ;
|
||||
double dTgA = tan( 0.5 * ( ANG_STRAIGHT - abs( vAngs[nInd1-1])) * DEGTORAD) ;
|
||||
dMaxDist = dTgA * vLens[nInd1-1] ;
|
||||
}
|
||||
else if ( bNextInt) {
|
||||
double dTgB = tan( 0.5 * ( ANG_STRAIGHT - fabs( vAngs[nInd1])) * DEGTORAD) ;
|
||||
double dTgB = tan( 0.5 * ( ANG_STRAIGHT - abs( vAngs[nInd1])) * DEGTORAD) ;
|
||||
dMaxDist = dTgB * vLens[nInd1-1] ;
|
||||
}
|
||||
if ( fabs( dDist) > dMaxDist + 5 * EPS_SMALL) {
|
||||
if ( abs( dDist) > dMaxDist + 5 * EPS_SMALL) {
|
||||
delete pCrv ;
|
||||
iIter = m_CrvLst.erase( iIter) ;
|
||||
continue ;
|
||||
@@ -656,7 +656,7 @@ CalcAngle( const ICurve* pCrv1, const ICurve* pCrv2, double& dAngDeg)
|
||||
if ( ! vtDir1.GetAngleXY( vtDir2, dAngDeg))
|
||||
return false ;
|
||||
// se vicino all'angolo piatto, si devono ricalcolare spostandosi un poco
|
||||
if ( fabs( dAngDeg) > ( ANG_STRAIGHT - EPS_ANG_SMALL)) {
|
||||
if ( abs( dAngDeg) > ( ANG_STRAIGHT - EPS_ANG_SMALL)) {
|
||||
// eseguo calcolo spostato
|
||||
double dU1 = 1 ;
|
||||
double dU2 = 0 ;
|
||||
@@ -750,18 +750,18 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dAngDeg, doub
|
||||
}
|
||||
|
||||
// verifico sia angolo esterno (accetto se entità quasi esattamente sovrapposte)
|
||||
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 ;
|
||||
|
||||
@@ -784,7 +784,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dAngDeg, doub
|
||||
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))
|
||||
@@ -827,7 +827,7 @@ VerifyAndAdjustExternalAngle( ICurve* pCrv1, ICurve* pCrv2, double dAngDeg, doub
|
||||
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))
|
||||
@@ -885,7 +885,7 @@ IsFillet( ICurve* pCrv, double dDist)
|
||||
return false ;
|
||||
CurveArc* pArc = GetBasicCurveArc( pCrv) ;
|
||||
// deve avere raggio uguale alla distanza di offset
|
||||
if ( fabs( pArc->GetRadius() - fabs( dDist)) > EPS_SMALL)
|
||||
if ( abs( pArc->GetRadius() - abs( dDist)) > EPS_SMALL)
|
||||
return false ;
|
||||
// deve essere CCW se offset a destra e CW se offset a sinistra
|
||||
return ( pArc->GetAngCenter() * dDist > 0) ;
|
||||
@@ -907,12 +907,12 @@ ModifyFillet( ICurve* pCrv, double dDist, int nType, CurveComposite& ccAux)
|
||||
nType &= ( ICurve::OFF_FILLET | ICurve::OFF_CHAMFER | ICurve::OFF_EXTEND) ;
|
||||
|
||||
// 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 ;
|
||||
|
||||
@@ -920,7 +920,7 @@ ModifyFillet( ICurve* pCrv, double dDist, int nType, CurveComposite& ccAux)
|
||||
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 ( ! pArc->GetStartPoint( ptP1) || ! pArc->GetEndPoint( ptP2))
|
||||
@@ -954,7 +954,7 @@ ModifyFillet( ICurve* pCrv, double dDist, int nType, CurveComposite& ccAux)
|
||||
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 ( ! pArc->GetStartPoint( ptP1) || ! pArc->GetEndPoint( ptP2))
|
||||
|
||||
Reference in New Issue
Block a user