EgtGraphics :
- migliorate GetPointFromSelect con superfici trimesh e FindSurfTMSnapPoint per ricerca triangolo/punto dell'oggetto inquadrato nel mirino.
This commit is contained in:
+8
-6
@@ -670,12 +670,14 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
ILSIVECTOR vInfo ;
|
||||
if ( ! IntersLineSurfTm( ptMir, vtDir, dLenMir, *pStm, vInfo))
|
||||
return false ;
|
||||
// se non trovato alcunchè, cerco le linee che partono dagli angoli del rettangolo di mira
|
||||
Vector3d vtWinD( -1, -1, 0) ;
|
||||
for ( int i = 0 ; i < 4 && vInfo.size() == 0 ; ++ i) {
|
||||
// se non trovato alcunchè, cerco le linee che partono dagli angoli e dai punti medi dei lati del rettangolo di mira
|
||||
VCT3DVECTOR vVtWind = { {0.51, 0.51, 0}, {0, 0.51, 0}, {-0.51, 0.51, 0}, {-0.51, 0, 0},
|
||||
{-0.51, -0.51, 0}, {0, -0.51, 0}, {0.51, -0.51, 0}, {0.51, 0, 0},
|
||||
{0.25, 0.51, 0}, {-0.25, 0.51, 0}, {-0.51, 0.25, 0}, {-0.51, -0.25, 0},
|
||||
{-0.25, -0.51, 0}, {0.25, -0.51, 0}, {0.51, -0.25, 0}, {0.51, 0.25, 0}} ;
|
||||
for ( int i = 0 ; i < int( vVtWind.size()) && vInfo.empty() ; ++ i) {
|
||||
// determino punto su vertice del rettangolo di selezione
|
||||
Point3d ptWinZ2 = ptWinZ + vtWinD.x * m_nSelH * X_AX + vtWinD.y * m_nSelW * Y_AX ;
|
||||
vtWinD.Rotate( Z_AX, 0, 1) ;
|
||||
Point3d ptWinZ2 = ptWinZ + vVtWind[i].x * m_nSelH * X_AX + vVtWind[i].y * m_nSelW * Y_AX ;
|
||||
// ne ricavo punto di mira
|
||||
Point3d ptMir2 ;
|
||||
if ( ! UnProject( ptWinZ2, ptMir2))
|
||||
@@ -686,7 +688,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
|
||||
if ( ! IntersLineSurfTm( ptMir2, vtDir, dLenMir, *pStm, vInfo))
|
||||
return false ;
|
||||
}
|
||||
if ( vInfo.size() == 0)
|
||||
if ( vInfo.empty())
|
||||
return false ;
|
||||
|
||||
// elaborazione a seconda del tipo di snap
|
||||
|
||||
Reference in New Issue
Block a user