EgtGeomKernel 2.1b3 :
- razionalizzazione interfaccia Zmap e SurfTm.
This commit is contained in:
+13
-35
@@ -409,9 +409,11 @@ VolZmap::GetDepthWithVoxel( const Point3d& ptP, const Vector3d& vtD, double& dIn
|
||||
return true ;
|
||||
}
|
||||
|
||||
// Se la grafica non è aggiornata la ricalcolo
|
||||
INTVECTOR nModifiedBlocks ;
|
||||
UpdateTripleMapGraphics( nModifiedBlocks) ;
|
||||
// Lancio eventuale aggiornamento pendente della grafica
|
||||
if ( m_nMapNum == 1)
|
||||
UpdateSingleMapGraphics() ;
|
||||
else
|
||||
UpdateTripleMapGraphics() ;
|
||||
|
||||
// Determino il voxel di partenza
|
||||
int nVoxI, nVoxJ, nVoxK ;
|
||||
@@ -420,7 +422,7 @@ VolZmap::GetDepthWithVoxel( const Point3d& ptP, const Vector3d& vtD, double& dIn
|
||||
return false ;
|
||||
}
|
||||
|
||||
// Incrementi degli indici per sguire la retta
|
||||
// Incrementi degli indici per seguire la retta
|
||||
int nDeltaI = ( vtD.x > 0 ? 1 : ( vtD.x < 0 ? - 1 : 0)) ;
|
||||
int nDeltaJ = ( vtD.y > 0 ? 1 : ( vtD.y < 0 ? - 1 : 0)) ;
|
||||
int nDeltaK = ( vtD.z > 0 ? 1 : ( vtD.z < 0 ? - 1 : 0)) ;
|
||||
@@ -493,13 +495,13 @@ VolZmap::GetDepthWithVoxel( const Point3d& ptP, const Vector3d& vtD, double& dIn
|
||||
int nCurBlockN ;
|
||||
GetBlockNFromIJK( nCurBlockIJK, nCurBlockN) ;
|
||||
// Triangoli sharp fra blocchi
|
||||
for ( int nBlVx = 0 ; nBlVx < int( m_InterBlockToBeFlippedSharpTria[nCurBlockN].size()) ; ++ nBlVx) {
|
||||
if ( m_InterBlockToBeFlippedSharpTria[nCurBlockN][nBlVx].i == nCurVoxIJK[0] &&
|
||||
m_InterBlockToBeFlippedSharpTria[nCurBlockN][nBlVx].j == nCurVoxIJK[1] &&
|
||||
m_InterBlockToBeFlippedSharpTria[nCurBlockN][nBlVx].k == nCurVoxIJK[2]) {
|
||||
for ( int nBlCm = 0 ; nBlCm < int( m_InterBlockToBeFlippedSharpTria[nCurBlockN][nBlVx].vCompoTria.size()) ; ++ nBlCm) {
|
||||
for ( int nBlTr = 0 ; nBlTr < int( m_InterBlockToBeFlippedSharpTria[nCurBlockN][nBlVx].vCompoTria[nBlCm].size()) ; ++ nBlTr) {
|
||||
Triangle3d CurrTria = m_InterBlockToBeFlippedSharpTria[nCurBlockN][nBlVx].vCompoTria[nBlCm][nBlTr] ;
|
||||
for ( int nBlVx = 0 ; nBlVx < int( m_InterBlockSharpTria[nCurBlockN].size()) ; ++ nBlVx) {
|
||||
if ( m_InterBlockSharpTria[nCurBlockN][nBlVx].i == nCurVoxIJK[0] &&
|
||||
m_InterBlockSharpTria[nCurBlockN][nBlVx].j == nCurVoxIJK[1] &&
|
||||
m_InterBlockSharpTria[nCurBlockN][nBlVx].k == nCurVoxIJK[2]) {
|
||||
for ( int nBlCm = 0 ; nBlCm < int( m_InterBlockSharpTria[nCurBlockN][nBlVx].vCompoTria.size()) ; ++ nBlCm) {
|
||||
for ( int nBlTr = 0 ; nBlTr < int( m_InterBlockSharpTria[nCurBlockN][nBlVx].vCompoTria[nBlCm].size()) ; ++ nBlTr) {
|
||||
Triangle3d CurrTria = m_InterBlockSharpTria[nCurBlockN][nBlVx].vCompoTria[nBlCm][nBlTr] ;
|
||||
Point3d ptLineTria1, ptLineTria2 ;
|
||||
// Studio dell'intersezione della retta con il triangolo corrente
|
||||
int nIntType = IntersLineTria( ptOutP, vtOutD, 1.5 * dU2, CurrTria, ptLineTria1, ptLineTria2) ;
|
||||
@@ -611,30 +613,6 @@ VolZmap::GetDepthWithVoxel( const Point3d& ptP, const Vector3d& vtD, double& dIn
|
||||
}
|
||||
}
|
||||
}
|
||||
// Ciclo sui triangoli dei voxel
|
||||
//for ( auto it = lstTria.begin() ; it != lstTria.end() ; ++it ) {
|
||||
// // Triangolo corrente e suoi punti di intersezione con la retta
|
||||
// const Triangle3d& CurrTria = *it ;
|
||||
// Point3d ptLineTria1, ptLineTria2 ;
|
||||
// // Studio dell'intersezione della retta con il triangolo corrente
|
||||
// int nIntType = IntersLineTria( ptP, vtD, 1.5 * dU2, CurrTria, ptLineTria1, ptLineTria2) ;
|
||||
// // Se non ci sono intersezioni passo al prossimo triangolo
|
||||
// if ( nIntType == ILTT_NO)
|
||||
// continue ;
|
||||
// // se altrimenti c'è una sola intersezione
|
||||
// else if ( nIntType == ILTT_VERT ||
|
||||
// nIntType == ILTT_EDGE ||
|
||||
// nIntType == ILTT_IN) {
|
||||
// vInt.emplace_back( ( ptLineTria1 - ptP) * vtD, vtD * CurrTria.GetN()) ;
|
||||
// }
|
||||
// // altrimenti ci sono due intersezioni
|
||||
// else {
|
||||
// double dP1 = ( ptLineTria1 - ptP) * vtD ;
|
||||
// double dP2 = ( ptLineTria2 - ptP) * vtD ;
|
||||
// double dD = vtD * CurrTria.GetN() ;
|
||||
// vInt.emplace_back( ( dP1 < dP2 ? dP1 : dP2), ( dP1 < dP2 ? dP2 : dP1), dD) ;
|
||||
// }
|
||||
//}
|
||||
|
||||
// Ordino le intersezioni in base al parametro distanza con segno da ptP
|
||||
sort( vInt.begin(), vInt.end(),
|
||||
|
||||
Reference in New Issue
Block a user