Merge commit '5fe0c3e3768b481137a3f90f5ad342d039130c6a' into ThreeJS

This commit is contained in:
riccardo.elitropi
2022-09-21 08:19:01 +02:00
6 changed files with 124 additions and 174 deletions
BIN
View File
Binary file not shown.
+2 -4
View File
@@ -403,10 +403,8 @@ Scene::ZoomWin( const Point3d& ptWin1, const Point3d& ptWin2)
return false ;
// porto i punti in coordinate camera (vista)
Point3d ptView1 = ptWorld1 ;
ptView1.ToLoc( frView) ;
Point3d ptView2 = ptWorld2 ;
ptView2.ToLoc( frView) ;
Point3d ptView1 = GetToLoc( ptWorld1, frView) ;
Point3d ptView2 = GetToLoc( ptWorld2, frView) ;
// imposto il nuovo centro di vista
Point3d ptNewCen = 0.5 * ( ptWorld1 + ptWorld2) ;
+8 -16
View File
@@ -881,26 +881,20 @@ CalcCurveTailMark( const Vector3d& vtRef, const PolyLine& plCrv, PolyLine& plMar
// disegno traverso
Frame3d frF ;
if ( frF.Set( ptTail, vtDir, vtRef)) {
Point3d ptP0 = ORIG + Vector3d( 0, 0.5 * dLenTr, 0) ;
ptP0.ToGlob( frF) ;
Point3d ptP0 = GetToGlob( ORIG + Vector3d( 0, 0.5 * dLenTr, 0), frF) ;
plMark.AddUPoint( 0, ptP0) ;
Point3d ptP1 = ORIG + Vector3d( 0, - 0.5 * dLenTr, 0) ;
ptP1.ToGlob( frF) ;
Point3d ptP1 = GetToGlob( ORIG + Vector3d( 0, - 0.5 * dLenTr, 0), frF) ;
plMark.AddUPoint( 1, ptP1) ;
}
else {
frF.Set( ptTail, vtDir) ;
Point3d ptP0 = ORIG + Vector3d( - 0.5 * dLenTr, - 0.5 * dLenTr, 0) ;
ptP0.ToGlob( frF) ;
Point3d ptP0 = GetToGlob( ORIG + Vector3d( - 0.5 * dLenTr, - 0.5 * dLenTr, 0), frF) ;
plMark.AddUPoint( 0, ptP0) ;
Point3d ptP1 = ORIG + Vector3d( 0.5 * dLenTr, - 0.5 * dLenTr, 0) ;
ptP1.ToGlob( frF) ;
Point3d ptP1 = GetToGlob( ORIG + Vector3d( 0.5 * dLenTr, - 0.5 * dLenTr, 0), frF) ;
plMark.AddUPoint( 1, ptP1) ;
Point3d ptP2 = ORIG + Vector3d( 0.5 * dLenTr, 0.5 * dLenTr, 0) ;
ptP2.ToGlob( frF) ;
Point3d ptP2 = GetToGlob( ORIG + Vector3d( 0.5 * dLenTr, 0.5 * dLenTr, 0), frF) ;
plMark.AddUPoint( 2, ptP2) ;
Point3d ptP3 = ORIG + Vector3d( - 0.5 * dLenTr, 0.5 * dLenTr, 0) ;
ptP3.ToGlob( frF) ;
Point3d ptP3 = GetToGlob( ORIG + Vector3d( - 0.5 * dLenTr, 0.5 * dLenTr, 0), frF) ;
plMark.AddUPoint( 3, ptP3) ;
// punto di chiusura coincidente con il primo
plMark.AddUPoint( 4, ptP0) ;
@@ -957,11 +951,9 @@ CalcCurveTipArrow( const Vector3d& vtRef, const PolyLine& plCrv, PolyLine& plArr
if ( ! frF.Set( ptTip, vtDir, vtRef))
frF.Set( ptTip, vtDir) ;
plArr.AddUPoint( 0, ptTip) ;
Point3d ptP1 = ORIG + Vector3d( 0, A_WIDTH_COEFF, -1) * dLenArr ;
ptP1.ToGlob( frF) ;
Point3d ptP1 = GetToGlob( ORIG + Vector3d( 0, A_WIDTH_COEFF, -1) * dLenArr, frF) ;
plArr.AddUPoint( 1, ptP1) ;
Point3d ptP2 = ORIG + Vector3d( 0, - A_WIDTH_COEFF, -1) * dLenArr ;
ptP2.ToGlob( frF) ;
Point3d ptP2 = GetToGlob( ORIG + Vector3d( 0, - A_WIDTH_COEFF, -1) * dLenArr, frF) ;
plArr.AddUPoint( 2, ptP2) ;
plArr.AddUPoint( 3, ptTip) ;
+52 -26
View File
@@ -15,6 +15,7 @@
#include "stdafx.h"
#include "Scene.h"
#include "EGrUtils.h"
#include "/EgtDev/Include/EgtNumUtils.h"
#include <algorithm>
using namespace std ;
@@ -35,8 +36,8 @@ Scene::SetGridGeo( double dSnapStep, int nMinLineSstep, int nMajLineSstep, int n
const double MIN_SNAP_STEP = 0.1 ;
m_dSnapStep = max( abs( dSnapStep), MIN_SNAP_STEP) ;
m_nMinLineSstep = abs( nMinLineSstep) ;
m_nMajLineSstep = abs( nMajLineSstep) ;
m_nExtSstep = abs( nExtSstep) ;
m_nMajLineSstep = max( abs( nMajLineSstep), m_nMinLineSstep) ;
m_nExtSstep = max( abs( nExtSstep), m_nMajLineSstep) ;
return true ;
}
@@ -49,6 +50,26 @@ Scene::SetGridColor( Color colMinLine, Color colMajLine)
return true ;
}
//----------------------------------------------------------------------------
static int
GetSpecialCoeff( double dVal)
{
if ( dVal < 1.99)
return 1 ;
else if ( dVal < 4.99)
return 2 ;
else if ( dVal < 9.99)
return 5 ;
else if ( dVal < 24.99)
return 10 ;
else if ( dVal < 49.99)
return 25 ;
else if ( dVal < 99.99)
return 50 ;
else
return 100 ;
}
//----------------------------------------------------------------------------
bool
Scene::DrawGrid( void)
@@ -73,35 +94,40 @@ Scene::DrawGrid( void)
// se richiesto, disegno la griglia
if ( m_bShowGrid) {
// disegno linee minori (a trattini)
glLineStipple( 2, 0xAAAA) ;
glEnable( GL_LINE_STIPPLE) ;
glBegin( GL_LINES) ;
glColor3f( m_colMinLine.GetRed(), m_colMinLine.GetGreen(), m_colMinLine.GetBlue()) ;
for ( int i = m_nMinLineSstep ; i <= m_nExtSstep ; i += m_nMinLineSstep) {
// se non si sovrappongono alle maggiori
if ( ( i % m_nMajLineSstep) != 0) {
float dPos = float( i * m_dSnapStep) ;
// X +
glVertex3f( dPos, - dExt, Z_DOWN) ;
glVertex3f( dPos, dExt, Z_DOWN) ;
// X -
glVertex3f( - dPos, - dExt, Z_DOWN) ;
glVertex3f( - dPos, dExt, Z_DOWN) ;
// Y +
glVertex3f( - dExt, dPos, Z_DOWN) ;
glVertex3f( dExt, dPos, Z_DOWN) ;
// Y -
glVertex3f( - dExt, - dPos, Z_DOWN) ;
glVertex3f( dExt, - dPos, Z_DOWN) ;
// disegno linee minori (a trattini), se non troppe
double dMinRapp = min( m_dHalfWidth, m_dHalfHeight) / ( m_dSnapStep * m_nMinLineSstep) ;
if ( dMinRapp < 60) {
glLineStipple( 2, 0xAAAA) ;
glEnable( GL_LINE_STIPPLE) ;
glBegin( GL_LINES) ;
glColor3f( m_colMinLine.GetRed(), m_colMinLine.GetGreen(), m_colMinLine.GetBlue()) ;
for ( int i = m_nMinLineSstep ; i <= m_nExtSstep ; i += m_nMinLineSstep) {
// se non si sovrappongono alle maggiori
if ( ( i % m_nMajLineSstep) != 0) {
float dPos = float( i * m_dSnapStep) ;
// X +
glVertex3f( dPos, - dExt, Z_DOWN) ;
glVertex3f( dPos, dExt, Z_DOWN) ;
// X -
glVertex3f( - dPos, - dExt, Z_DOWN) ;
glVertex3f( - dPos, dExt, Z_DOWN) ;
// Y +
glVertex3f( - dExt, dPos, Z_DOWN) ;
glVertex3f( dExt, dPos, Z_DOWN) ;
// Y -
glVertex3f( - dExt, - dPos, Z_DOWN) ;
glVertex3f( dExt, - dPos, Z_DOWN) ;
}
}
glEnd() ;
glDisable( GL_LINE_STIPPLE) ;
}
glEnd() ;
glDisable( GL_LINE_STIPPLE) ;
// disegno linee maggiori
double dMaxRapp = min( m_dHalfWidth, m_dHalfHeight) / ( m_dSnapStep * m_nMajLineSstep) ;
int nCoeff = GetSpecialCoeff( 0.06 * dMaxRapp) ;
glBegin( GL_LINES) ;
glColor3f( m_colMajLine.GetRed(), m_colMajLine.GetGreen(), m_colMajLine.GetBlue()) ;
for ( int i = m_nMajLineSstep ; i <= m_nExtSstep ; i += m_nMajLineSstep) {
for ( int i = min( nCoeff * m_nMajLineSstep, m_nExtSstep) ; i <= m_nExtSstep ; i += nCoeff * m_nMajLineSstep) {
float dPos = float( i * m_dSnapStep) ;
// X +
glVertex3f( dPos, - dExt, Z_DOWN) ;
+16 -32
View File
@@ -275,24 +275,21 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
// recupero il geo-punto
const IGeoPoint3d* pGP = GetGeoPoint3d( pGObj) ;
// recupero il punto
ptSel = pGP->GetPoint() ;
ptSel.ToGlob( frEnt) ;
ptSel = GetToGlob( pGP->GetPoint(), frEnt) ;
}
// se vettore
else if ( pGObj->GetType() == GEO_VECT3D) {
// recupero il geo-vettore
const IGeoVector3d* pGV = GetGeoVector3d( pGObj) ;
// recupero il punto
ptSel = pGV->GetBase() ;
ptSel.ToGlob( frEnt) ;
ptSel = GetToGlob( pGV->GetBase(), frEnt) ;
}
// se frame
else if ( pGObj->GetType() == GEO_FRAME3D) {
// recupero il geo-frame
const IGeoFrame3d* pGF = GetGeoFrame3d( pGObj) ;
// recupero il punto
ptSel = pGF->GetFrame().Orig() ;
ptSel.ToGlob( frEnt) ;
ptSel = GetToGlob( pGF->GetFrame().Orig(), frEnt) ;
}
// se curva
else if ( ( pGObj->GetType() & GEO_CURVE) != 0) {
@@ -310,8 +307,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
MinDistPCInfo mdInfo ;
DistPointCurve dstPtCurve( ptRef, *pCrv) ;
if ( dstPtCurve.GetMinDistInfo( 0, mdInfo)) {
Point3d ptP = mdInfo.ptQ ;
ptP.ToGlob( frEnt) ;
Point3d ptP = GetToGlob( mdInfo.ptQ, frEnt) ;
if ( VerifySnapPoint( ptP, ptView, dMinSqDist)) {
ptSel = ptP ;
nAux = int( mdInfo.dPar) ;
@@ -325,14 +321,12 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
vtExtr *= dTh ;
vtExtr.ToGlob( frEnt) ;
// correggo il punto di riferimento del contrario dell'estrusione
Vector3d vtTemp = vtExtr ;
vtTemp.ToLoc( frEnt) ;
Vector3d vtTemp = GetToLoc( vtExtr, frEnt) ;
// determino il punto più vicino della curva a questo
MinDistPCInfo mdInfo ;
DistPointCurve dstPtCurve( ptRef - vtTemp, *pCrv) ;
if ( dstPtCurve.GetMinDistInfo( 0, mdInfo)) {
Point3d ptP = mdInfo.ptQ ;
ptP.ToGlob( frEnt) ;
Point3d ptP = GetToGlob( mdInfo.ptQ, frEnt) ;
ptP += vtExtr ;
if ( VerifySnapPoint( ptP, ptView, dMinSqDist)) {
ptSel = ptP ;
@@ -353,8 +347,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
// lo porto nel frame della superficie
ptRef.ToLoc( frEnt) ;
// recupero la direzione di mira e la porto nel riferimento della superficie
Vector3d vtDir = - m_vtDirCamera ;
vtDir.ToLoc( frEnt) ;
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
// recupero il raggio del box di ingombro
double dBlRad = 1000 ;
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pStm) ;
@@ -371,8 +364,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
if ( ! IntersLineSurfTm( ptMir, vtDir, dLenMir, *pStm, vInfo) || vInfo.size() == 0)
return false ;
// recupero il primo punto
ptSel = vInfo[0].ptI ;
ptSel.ToGlob( frEnt) ;
ptSel = GetToGlob( vInfo[0].ptI, frEnt) ;
nAux = vInfo[0].nT ;
}
// se regione
@@ -387,8 +379,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
// lo porto nel frame della regione
ptRef.ToLoc( frEnt) ;
// recupero la direzione di mira e la porto nel riferimento della regione
Vector3d vtDir = - m_vtDirCamera ;
vtDir.ToLoc( frEnt) ;
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
// recupero il piano della regione
Plane3d plReg ;
plReg.Set( pReg->GetPlanePoint(), pReg->GetNormVersor()) ;
@@ -397,8 +388,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
if ( IntersLinePlane( ptRef, vtDir, INFINITO, plReg, ptInt, false) != ILPT_YES)
return false ;
// assegno il punto
ptSel = ptInt ;
ptSel.ToGlob( frEnt) ;
ptSel = GetToGlob( ptInt, frEnt) ;
// determino il chunk
nAux = 0 ;
if ( pReg->GetChunkCount() > 1) {
@@ -429,8 +419,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
// lo porto nel frame della superficie
ptRef.ToLoc( frEnt) ;
// recupero la direzione di mira e la porto nel riferimento della superficie
Vector3d vtDir = - m_vtDirCamera ;
vtDir.ToLoc( frEnt) ;
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
// recupero il raggio del box di ingombro
double dBlRad = 1000 ;
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pStm) ;
@@ -447,8 +436,7 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
if ( ! IntersLineSurfTm( ptMir, vtDir, dLenMir, *pStm, vInfo) || vInfo.size() == 0)
return false ;
// recupero il primo punto
ptSel = vInfo[0].ptI ;
ptSel.ToGlob( frEnt) ;
ptSel = GetToGlob( vInfo[0].ptI, frEnt) ;
nAux = 0 ;
}
// se testo
@@ -505,23 +493,19 @@ Scene::GetPointFromSelect( int nSelId, const Point3d& ptView, Point3d& ptSel, in
double dMinSqDist = INFINITO * INFINITO ;
Point3d ptP ;
// punto iniziale
ptP = pDim->GetStart() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetStart(), frEnt) ;
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
ptSel = ptP ;
// punto sopra iniziale
ptP = pDim->GetOverStart() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetOverStart(), frEnt) ;
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
ptSel = ptP ;
// punto finale
ptP = pDim->GetEnd() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetEnd(), frEnt) ;
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
ptSel = ptP ;
// punto sopra finale
ptP = pDim->GetOverEnd() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetOverEnd(), frEnt) ;
if ( VerifySnapPoint( ptP, ptView, dMinSqDist))
ptSel = ptP ;
// punto medio
+46 -96
View File
@@ -262,8 +262,7 @@ Scene::FindSelectedSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH)
// recupero il geo-punto
const IGeoPoint3d* pGP = GetGeoPoint3d( pGObj) ;
// recupero il punto
Point3d ptP = pGP->GetPoint() ;
ptP.ToGlob( frEnt) ;
Point3d ptP = GetToGlob( pGP->GetPoint(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
@@ -276,26 +275,22 @@ Scene::FindSelectedSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH)
// recupero il geo-vettore
const IGeoVector3d* pGV = GetGeoVector3d( pGObj) ;
// recupero il punto base
Point3d ptP = pGV->GetBase() ;
ptP.ToGlob( frEnt) ;
Point3d ptP = GetToGlob( pGV->GetBase(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pGV->GetVector() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pGV->GetVector(), frEnt) ;
}
// recupero il punto tip
Point3d ptTip= pGV->GetBase() + pGV->GetVector() ;
ptTip.ToGlob( frEnt) ;
Point3d ptTip = GetToGlob( pGV->GetBase() + pGV->GetVector(), frEnt) ;
if ( VerifySnapPoint( ptTip, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptTip ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pGV->GetVector() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pGV->GetVector(), frEnt) ;
}
}
// se frame
@@ -303,8 +298,7 @@ Scene::FindSelectedSnapPoint( int nSnap, const Point3d& ptWin, int nW, int nH)
// recupero il geo-frame
const IGeoFrame3d* pGF = GetGeoFrame3d( pGObj) ;
// recupero l'origine del riferimento
Point3d ptP = pGF->GetFrame().Orig() ;
ptP.ToGlob( frEnt) ;
Point3d ptP = GetToGlob( pGF->GetFrame().Orig(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
@@ -631,8 +625,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
// porto il punto nel riferimento della superficie
ptRef.ToLoc( frEnt) ;
// recupero la direzione di mira e la porto nel riferimento della superficie
Vector3d vtDir = - m_vtDirCamera ;
vtDir.ToLoc( frEnt) ;
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
// recupero il raggio del box di ingombro
double dBlRad = 1000 ;
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pStm) ;
@@ -662,8 +655,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
m_bLastSnapDirOk = false ;
}
}
@@ -719,11 +711,9 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptEnd ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptEnd, frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = vtN ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( vtN, frEnt) ;
}
}
}
@@ -749,11 +739,9 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptMid ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptMid, frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = vtN ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( vtN, frEnt) ;
}
}
}
@@ -777,11 +765,9 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptCen ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptCen, frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = vtN ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( vtN, frEnt) ;
}
}
}
@@ -799,8 +785,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
m_nLastSnapId = nId ;
// punto
Point3d ptInt = vInfo[0].ptI ;
m_ptLastSnapPnt = ptInt ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptInt, frEnt) ;
// direzione
Triangle3d Tria ;
TriNormals3d Tnorms ;
@@ -809,8 +794,7 @@ Scene::FindSurfTMSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
pStm->GetTriangleSmoothNormals( vInfo[0].nT, Tnorms) &&
CalcNormal( ptInt, Tria, Tnorms, vtNorm)) {
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = vtNorm ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( vtNorm, frEnt) ;
}
else
m_bLastSnapDirOk = false ;
@@ -841,8 +825,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
// porto il punto nel riferimento della superficie
ptRef.ToLoc( frEnt) ;
// recupero la direzione di mira e la porto nel riferimento della superficie
Vector3d vtDir = - m_vtDirCamera ;
vtDir.ToLoc( frEnt) ;
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
// determino se oggetto trasparente
Color cCol ;
@@ -862,8 +845,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
m_bLastSnapDirOk = false ;
}
}
@@ -881,8 +863,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
m_bLastSnapDirOk = false ;
}
}
@@ -901,8 +882,7 @@ Scene::FindSurfFRSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fram
bFound = true ;
dMinSqDist = 0 ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptInt ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptInt, frEnt) ;
m_bLastSnapDirOk = false ;
}
// in tutti gli altri casi
@@ -947,8 +927,7 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
// porto il punto nel riferimento della superficie
ptRef.ToLoc( frEnt) ;
// recupero la direzione di mira e la porto nel riferimento della superficie
Vector3d vtDir = - m_vtDirCamera ;
vtDir.ToLoc( frEnt) ;
Vector3d vtDir = GetToLoc( -m_vtDirCamera, frEnt) ;
// recupero il raggio del box di ingombro
double dBlRad = 1000 ;
const ObjEGrGraphics* pGraphics = GetObjEGrGraphics( pVzm) ;
@@ -978,8 +957,7 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptP, frEnt) ;
m_bLastSnapDirOk = false ;
}
}
@@ -1028,11 +1006,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = trTria.GetP( nVert) ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( trTria.GetP( nVert), frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = trTria.GetN() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( trTria.GetN(), frEnt) ;
}
}
}
@@ -1050,11 +1026,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptMid ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptMid, frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = trTria.GetN() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( trTria.GetN(), frEnt) ;
}
}
}
@@ -1076,11 +1050,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
bFound = true ;
dMinSqDist = dSqDist ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptCen ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
m_ptLastSnapPnt = GetToGlob( ptCen, frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = trTria.GetN() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( trTria.GetN(), frEnt) ;
}
}
}
@@ -1095,15 +1067,9 @@ Scene::FindVolZmapSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Fra
bFound = true ;
dMinSqDist = 0 ;
m_nLastSnapId = nId ;
// punto
Point3d ptInt = vInfo[0].ptI ;
m_ptLastSnapPnt = ptInt ;
m_ptLastSnapPnt.ToGlob( frEnt) ;
// direzione
Vector3d vtNorm = vInfo[0].trTria.GetN() ;
m_ptLastSnapPnt = GetToGlob( vInfo[0].ptI, frEnt) ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = vtNorm ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( vInfo[0].trTria.GetN(), frEnt) ;
}
break ;
default :
@@ -1135,8 +1101,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pTxt->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
}
}
// punto sopra iniziale
@@ -1147,8 +1112,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pTxt->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
}
}
// punto finale
@@ -1159,8 +1123,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pTxt->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
}
}
// punto sopra finale
@@ -1171,8 +1134,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pTxt->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
}
}
break ;
@@ -1185,8 +1147,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pTxt->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
}
}
break ;
@@ -1200,8 +1161,7 @@ Scene::FindTextSnapPoint( int nSnap, const Point3d& ptWin, int nId, const Frame3
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pTxt->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pTxt->GetNormVersor(), frEnt) ;
}
}
break ;
@@ -1221,54 +1181,46 @@ Scene::FindDimensionSnapPoint( int nSnap, const Point3d& ptWin, int nId, const F
case SP_END :
// punto iniziale
if ( pDim->IsValid()) {
ptP = pDim->GetStart() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetStart(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pDim->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
}
}
// punto sopra iniziale
if ( pDim->IsValid()) {
ptP = pDim->GetOverStart() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetOverStart(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pDim->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
}
}
// punto finale
if ( pDim->IsValid()) {
ptP = pDim->GetEnd() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetEnd(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pDim->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
}
}
// punto sopra finale
if ( pDim->IsValid()) {
ptP = pDim->GetOverEnd() ;
ptP.ToGlob( frEnt) ;
ptP = GetToGlob( pDim->GetOverEnd(), frEnt) ;
if ( VerifySnapPoint( ptP, ptWin, dMinSqDist)) {
bFound = true ;
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pDim->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
}
}
break ;
@@ -1281,8 +1233,7 @@ Scene::FindDimensionSnapPoint( int nSnap, const Point3d& ptWin, int nId, const F
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pDim->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
}
}
break ;
@@ -1296,8 +1247,7 @@ Scene::FindDimensionSnapPoint( int nSnap, const Point3d& ptWin, int nId, const F
m_nLastSnapId = nId ;
m_ptLastSnapPnt = ptP ;
m_bLastSnapDirOk = true ;
m_vtLastSnapDir = pDim->GetNormVersor() ;
m_vtLastSnapDir.ToGlob( frEnt) ;
m_vtLastSnapDir = GetToGlob( pDim->GetNormVersor(), frEnt) ;
}
}
break ;