EgtGeomKernel 1.6w3 :
- correzioni nell'intersezione di archi tangenti o quasi - pulizia uso distanze e relative costanti minime.
This commit is contained in:
+6
-6
@@ -1329,7 +1329,7 @@ CurveArc::ModifyEnd( const Point3d& ptNewEnd)
|
||||
Point3d ptEndIntr = ptNewEnd ;
|
||||
ptEndIntr.ToLoc( frIntr) ;
|
||||
// se coincidono nel piano XY, è cambiato solo il deltaN
|
||||
if ( SqDistXY( ptOldEndIntr, ptEndIntr) < EPS_ZERO * EPS_ZERO) {
|
||||
if ( AreSamePointXYExact( ptOldEndIntr, ptEndIntr)) {
|
||||
m_dDeltaN += ptEndIntr.z - ptOldEndIntr.z ;
|
||||
}
|
||||
// altrimenti, calcolo un arco ausiliario nel riferimento intrinseco con i nuovi dati
|
||||
@@ -1779,7 +1779,7 @@ CurveArc::CalcPointAngle( const Point3d& ptP, double& dAngDeg) const
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
CurveArc::CalcPointParamPosiz( const Point3d& ptP, double& dU, int& nPos) const
|
||||
CurveArc::MyCalcPointParamPosiz( const Point3d& ptP, double& dU, int& nPos, double dLinTol) const
|
||||
{
|
||||
// calcolo la posizione angolare
|
||||
double dAngDeg ;
|
||||
@@ -1789,13 +1789,13 @@ CurveArc::CalcPointParamPosiz( const Point3d& ptP, double& dU, int& nPos) const
|
||||
dU = dAngDeg / m_dAngCenDeg ;
|
||||
// verifica posizione punto su arco
|
||||
nPos = PP_NULL ; // fuori
|
||||
if ( fabs( DiffAngle( dAngDeg, 0) * DEGTORAD * m_dRad) < EPS_SMALL) {
|
||||
nPos = ( IsACircle() ? PP_MID : PP_START) ; // se cerchio interno, altrimenti vicino a inizio
|
||||
if ( fabs( DiffAngle( dAngDeg, 0) * DEGTORAD * m_dRad) < dLinTol) {
|
||||
nPos = ( IsACircle() ? PP_MID : PP_START) ; // se cerchio è interno, altrimenti vicino a inizio
|
||||
dU = AngleNearAngle( dAngDeg, 0) / m_dAngCenDeg ;
|
||||
dU = max( dU, 0.) ;
|
||||
}
|
||||
else if ( fabs( DiffAngle( dAngDeg, m_dAngCenDeg) * DEGTORAD * m_dRad) < EPS_SMALL) {
|
||||
nPos = ( IsACircle() ? PP_MID : PP_END) ; // se cerchio interno, altrimenti vicino a fine
|
||||
else if ( fabs( DiffAngle( dAngDeg, m_dAngCenDeg) * DEGTORAD * m_dRad) < dLinTol) {
|
||||
nPos = ( IsACircle() ? PP_MID : PP_END) ; // se cerchio è interno, altrimenti vicino a fine
|
||||
dU = AngleNearAngle( dAngDeg, m_dAngCenDeg) / m_dAngCenDeg ;
|
||||
dU = min( dU, 1.) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user