diff --git a/CurveArc.cpp b/CurveArc.cpp index 8c72034..12ff873 100644 --- a/CurveArc.cpp +++ b/CurveArc.cpp @@ -831,7 +831,7 @@ CurveArc::GetEndPoint( Point3d& ptEnd) const double dAng = m_dAngCenDeg * DEGTORAD ; Vector3d vtDir = cos( dAng) * m_VtS + sin( dAng) * ( m_VtN ^ m_VtS) ; ptEnd = m_PtCen + m_dRad * vtDir ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) ptEnd += m_dDeltaN * m_VtN ; return true ; @@ -849,7 +849,7 @@ CurveArc::GetMidPoint( Point3d& ptMid) const double dAng = 0.5 * m_dAngCenDeg * DEGTORAD ; Vector3d vtDir = cos( dAng) * m_VtS + sin( dAng) * ( m_VtN ^ m_VtS) ; ptMid = m_PtCen + m_dRad * vtDir ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) ptMid += ( 0.5 * m_dDeltaN) * m_VtN ; return true ; @@ -909,7 +909,7 @@ CurveArc::GetDir( double dU, Vector3d& vtDir) const Vector3d vtRad = cos( dAng) * m_VtS + sin( dAng) * ( m_VtN ^ m_VtS) ; // calcolo della tangente nel punto finale vtDir = ( m_dRad * m_dAngCenDeg * DEGTORAD) * ( m_VtN ^ vtRad) ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) vtDir += m_dDeltaN * m_VtN ; // normalizzo return vtDir.Normalize( EPS_ZERO) ; @@ -935,13 +935,13 @@ CurveArc::GetPointD1D2( double dU, Side nS, Point3d& ptPos, Vector3d* pvtDer1, V // calcolo del punto ptPos = m_PtCen + m_dRad * vtDir ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) ptPos += ( dU * m_dDeltaN) * m_VtN ; // calcolo della derivata prima if ( pvtDer1 != nullptr) { *pvtDer1 = ( m_dRad * m_dAngCenDeg * DEGTORAD) * ( m_VtN ^ vtDir) ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) *pvtDer1 += m_dDeltaN * m_VtN ; } @@ -963,7 +963,7 @@ CurveArc::GetLength( double& dLen) const // lunghezza dell'arco piano dLen = m_dRad * abs( m_dAngCenDeg) * DEGTORAD ; // aggiunta eventuale parte ortogonale - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) dLen = sqrt( dLen * dLen + m_dDeltaN * m_dDeltaN) ; return ( dLen > EPS_SMALL) ; @@ -1204,7 +1204,7 @@ CurveArc::Invert( void) return false ; // il centro va spostato di DeltaN - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) m_PtCen += m_dDeltaN * m_VtN ; // il versore normale rimane inalterato // il versore iniziale diventa quello finale @@ -1447,7 +1447,7 @@ CurveArc::TrimStartAtLen( double dLenTrim) dAngRot = m_dAngCenDeg * dLenTrim / dLen ; m_VtS.Rotate( m_VtN, dAngRot) ; m_dAngCenDeg -= dAngRot ; - if ( abs( m_dDeltaN) > EPS_SMALL) { + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) { dMoveN = m_dDeltaN * dLenTrim / dLen ; m_PtCen.Translate( m_VtN * dMoveN) ; m_dDeltaN -= dMoveN ; @@ -1477,7 +1477,7 @@ CurveArc::TrimEndAtLen( double dLenTrim) // eseguo il trim if ( ( dLen - dLenTrim) > EPS_ZERO) { m_dAngCenDeg *= dLenTrim / dLen ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) m_dDeltaN *= dLenTrim / dLen ; } @@ -2109,7 +2109,7 @@ ArcApproxer::GetPoint( double& dU, Point3d& ptP) if ( ! m_bInside && m_nCurrPnt == m_nTotPnt - 1) { dU = 1 ; ptP = m_PtCen + m_vtA1 * m_dRad ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) ptP += ( dU * m_dDeltaN) * m_VtN ; return true ; } @@ -2130,7 +2130,7 @@ ArcApproxer::GetPoint( double& dU, Point3d& ptP) ptP = m_PtCen + m_vtA1 * m_dRad ; else ptP = m_PtCen + ( vtA1p + m_vtA1) * ( m_dRad / ( 1 + m_dCosA)) ; - if ( abs( m_dDeltaN) > EPS_SMALL) + if ( abs( m_dDeltaN) > 0.1 * EPS_SMALL) ptP += ( dU * m_dDeltaN) * m_VtN ; return true ;