EgtGeomKernel : Migliorata interfaccia calcolo distanza punto-curva,

inoltre sistemata gestione per punti singoli e tratti continui
This commit is contained in:
Dario Sassi
2014-01-13 21:11:19 +00:00
parent 87e3800d1a
commit 0ec9bceb16
9 changed files with 228 additions and 160 deletions
+8 -3
View File
@@ -292,8 +292,8 @@ GdbExecutor::ExecuteCurveLine( const string& sCmd2, const STRVECTOR& vsParams)
}
// creazione linea di minima distanza tra punto e curva
else if ( sCmd2 == "MINPOINTCURVE" || sCmd2 == "MPC") {
// 4 parametri
if ( vsParams.size() != 4)
// almeno 4 parametri
if ( vsParams.size() < 4)
return false ;
// recupero l'identificativo del gruppo destinazione
int nIdParent ;
@@ -322,10 +322,15 @@ GdbExecutor::ExecuteCurveLine( const string& sCmd2, const STRVECTOR& vsParams)
// porto il punto nel riferimento della curva
Point3d ptSloc = ptStart ;
ptSloc.LocToLoc( frPoint, frCurve) ;
// recupero eventuale parametro per discriminare tra più soluzioni
double dNearParam ;
if ( vsParams.size() < 5 || ! FromString( vsParams[4], dNearParam))
dNearParam = 0 ;
// calcolo il punto a minima distanza
int nFlag ;
Point3d ptEnd ;
DistPointCurve dstPtCurve( ptSloc, *pCurve) ;
if ( ! dstPtCurve.GetPointMinDist( ptEnd))
if ( ! dstPtCurve.GetMinDistPoint( dNearParam, ptEnd, nFlag))
return false ;
// porto il punto finale nel riferimento di creazione
ptEnd.LocToLoc( frCurve, frPoint) ;