EgtGeomKernel :

- migliorata gestione segmento arco con tangenza su punto estremo dell'arco
- migliorata gestione triangoli praticamente complanari.
This commit is contained in:
Dario Sassi
2020-03-10 18:21:48 +00:00
parent 3eaedf2f3d
commit 906aa6188a
3 changed files with 14 additions and 6 deletions
+7 -1
View File
@@ -34,7 +34,6 @@ IntersLineArc::IntersLineArc( const CurveLine& Line, const CurveArc& Arc)
// verifico che l'angolo al centro non superi il giro
if ( abs( Arc.GetAngCenter()) > ANG_FULL + EPS_ANG_ZERO)
return ;
// !!! Gestire l'arco proiettato come ellisse
// verifico sovrapposizione box
BBox3d boxLine ;
@@ -69,6 +68,13 @@ IntersLineArc::IntersLineArc( const CurveLine& Line, const CurveArc& Arc)
if ( dSqDelta < - 2 * m_Arc.GetRadius() * EPS_SMALL)
return ;
// se punto proiettato approssima uno degli estremi dell'arco, annullo dSqDelta
Point3d ptArcStart, ptArcEnd ;
if ( m_Arc.GetStartPoint( ptArcStart) && AreSamePointXYApprox( ptPrjCen, ptArcStart))
dSqDelta = 0 ;
else if ( m_Arc.GetEndPoint( ptArcEnd) && AreSamePointXYApprox( ptPrjCen, ptArcEnd))
dSqDelta = 0 ;
// se distanza uguale al raggio -> una intersezione tangente, è la proiezione
// (corrisponde a una differenza max di EPS_SMALL tra le intersezioni)
if ( dSqDelta < EPS_SMALL * EPS_SMALL) {