EgtGraphics 1.6v7 :
- migliorie varie per overload e const - aggiunta GetPlaneSnapPoint.
This commit is contained in:
+22
-3
@@ -70,7 +70,7 @@ Scene::GetGraphicSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH, Poi
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Scene::GetGridSnapPointZ( bool bSketch, const Point3d& ptWin, const Point3d& ptGrid, Point3d& ptSel)
|
||||
Scene::GetGridSnapPointZ( bool bSketch, const Point3d& ptWin, const Point3d& ptGrid, Point3d& ptSel) const
|
||||
{
|
||||
// recupero il riferimento di griglia
|
||||
Frame3d frGrid = GetGridFrame() ;
|
||||
@@ -468,7 +468,7 @@ Scene::FindCurveSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Scene::VerifySnapPoint( const Point3d& ptP, const Point3d& ptWin, double& dMinSqDist)
|
||||
Scene::VerifySnapPoint( const Point3d& ptP, const Point3d& ptWin, double& dMinSqDist) const
|
||||
{
|
||||
// il punto di riferimento deriva da XY su viewport e Z minima (più vicina a osservatore) da selezione
|
||||
Point3d ptWinZ( ptWin.x, ptWin.y, GetSelectedObjMinWinZ()) ;
|
||||
@@ -962,4 +962,23 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
|
||||
break ;
|
||||
}
|
||||
return bFound ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Scene::GetPlaneSnapPoint( const Point3d& ptWin, const Plane3d& plPlane, Point3d& ptSel) const
|
||||
{
|
||||
// calcolo un punto e la direzione della linea di mira
|
||||
Point3d ptLine ;
|
||||
if ( ! UnProject( ptWin, ptLine))
|
||||
return false ;
|
||||
Vector3d vtLine = - m_vtDirCamera ;
|
||||
|
||||
// determino l'intersezione di questa linea con il piano
|
||||
double dDenom = vtLine * plPlane.vtN ;
|
||||
if ( fabs( dDenom) < COS_ORTO_ANG_ZERO)
|
||||
return false ;
|
||||
double dU = ( plPlane.dDist - ( ptLine - ORIG) * plPlane.vtN) / dDenom ;
|
||||
ptSel = ptLine + dU * vtLine ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user