EgtGeomKernel :
- correzione offset di curve aperte (quando curve di estremità corte) - correzione a Zmap.
This commit is contained in:
+12
-38
@@ -19,6 +19,7 @@
|
||||
#include "GeoConst.h"
|
||||
#include "IntersLineSurfTm.h"
|
||||
#include "/EgtDev/Include/EgtNumUtils.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
@@ -179,15 +180,6 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
|
||||
if ( nGrid == 0) {
|
||||
|
||||
/*INTVECTOR nXBlock ;
|
||||
INTVECTOR nYBlock ;
|
||||
nXBlock.emplace_back( min( nI / m_nDexNumPBlock, m_nFracLin[0] - 1)) ;
|
||||
nYBlock.emplace_back( min( nJ / m_nDexNumPBlock, m_nFracLin[1] - 1)) ;
|
||||
if ( nI % N_DEXBLOCK == 0 && nXBlock[0] > 0)
|
||||
nXBlock.emplace_back( nXBlock[0] - 1) ;
|
||||
if ( nJ % N_DEXBLOCK == 0 && nYBlock[0] > 0)
|
||||
nYBlock.emplace_back( nYBlock[0] - 1) ;*/
|
||||
|
||||
int nXStop = 1 ;
|
||||
int nYStop = 1 ;
|
||||
|
||||
@@ -217,7 +209,7 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
int nMinK = Clamp( int( floor( ( ( dMin - 0.5 * m_dStep) / ( N_DEXVOXRATIO * m_dStep) - EPS_SMALL))), 0, nVoxNumZ - 2) ;
|
||||
int nMaxK = Clamp( int( floor( ( ( dMax + 0.5 * m_dStep) / ( N_DEXVOXRATIO * m_dStep) + EPS_SMALL))), 0, nVoxNumZ - 2) ;
|
||||
|
||||
int nMinZBlock = ( m_nMapNum == 1 ? 0 : max( 0, nMinK / int( m_nVoxNumPerBlock))) ;
|
||||
int nMinZBlock = ( m_nMapNum == 1 ? 0 : Clamp( nMinK / int( m_nVoxNumPerBlock), 0, int( m_nFracLin[2] - 1))) ;
|
||||
int nMaxZBlock = min( int( m_nFracLin[2] - 1), nMaxK / int( m_nVoxNumPerBlock)) ;
|
||||
|
||||
for ( int tI = 0 ; tI < nXStop ; ++ tI) {
|
||||
@@ -227,20 +219,11 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
m_BlockToUpdate[nBlockNum] = true ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if ( nGrid == 1) {
|
||||
|
||||
/*INTVECTOR nYBlock ;
|
||||
INTVECTOR nZBlock ;
|
||||
nYBlock.emplace_back( min( nI / m_nDexNumPBlock, m_nFracLin[1] - 1)) ;
|
||||
nZBlock.emplace_back( min( nJ / m_nDexNumPBlock, m_nFracLin[2] - 1)) ;
|
||||
if ( nI % N_DEXBLOCK == 0 && nYBlock[0] > 0)
|
||||
nYBlock.emplace_back( nYBlock[0] - 1) ;
|
||||
if ( nJ % N_DEXBLOCK == 0 && nZBlock[0] > 0)
|
||||
nZBlock.emplace_back( nZBlock[0] - 1) ;*/
|
||||
|
||||
|
||||
int nYStop = 1 ;
|
||||
int nZStop = 1 ;
|
||||
|
||||
@@ -270,7 +253,7 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
int nMinI = Clamp( int( floor( ( ( dMin - 0.5 * m_dStep) / ( N_DEXVOXRATIO * m_dStep) - EPS_SMALL))), 0, nVoxNumX - 2) ;
|
||||
int nMaxI = Clamp( int( floor( ( ( dMax + 0.5 * m_dStep) / ( N_DEXVOXRATIO * m_dStep) + EPS_SMALL))), 0, nVoxNumX - 2) ;
|
||||
|
||||
int nMinXBlock = max( 0, nMinI / int( m_nVoxNumPerBlock)) ;
|
||||
int nMinXBlock = Clamp( nMinI / int( m_nVoxNumPerBlock), 0, int( m_nFracLin[0] - 1)) ;
|
||||
int nMaxXBlock = min( int( m_nFracLin[0] - 1), nMaxI / int( m_nVoxNumPerBlock)) ;
|
||||
|
||||
for ( int tI = 0 ; tI < nYStop ; ++ tI) {
|
||||
@@ -280,20 +263,11 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
m_BlockToUpdate[nBlockNum] = true ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if ( nGrid == 2) {
|
||||
|
||||
/*INTVECTOR nXBlock ;
|
||||
INTVECTOR nZBlock ;
|
||||
nXBlock.emplace_back( min( nJ / m_nDexNumPBlock, m_nFracLin[0] - 1)) ;
|
||||
nZBlock.emplace_back( min( nI / m_nDexNumPBlock, m_nFracLin[2] - 1)) ;
|
||||
if ( nJ % N_DEXBLOCK == 0 && nXBlock[0] > 0)
|
||||
nXBlock.emplace_back( nXBlock[0] - 1) ;
|
||||
if ( nI % N_DEXBLOCK == 0 && nZBlock[0] > 0)
|
||||
nZBlock.emplace_back( nZBlock[0] - 1) ;*/
|
||||
|
||||
int nXStop = 1 ;
|
||||
int nZStop = 1 ;
|
||||
|
||||
@@ -318,12 +292,12 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
}
|
||||
|
||||
// Numero di voxel lungo Y
|
||||
int nVoxNumY = int( m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] / N_DEXVOXRATIO == 0 ? 1 : 2)) ;
|
||||
int nVoxNumY = int( m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2)) ;
|
||||
|
||||
int nMinJ = Clamp( int( floor( ( ( dMin - 0.5 * m_dStep) / ( N_DEXVOXRATIO * m_dStep) - EPS_SMALL))), 0, nVoxNumY - 2) ;
|
||||
int nMaxJ = Clamp( int( floor( ( ( dMax + 0.5 * m_dStep) / ( N_DEXVOXRATIO * m_dStep) + EPS_SMALL))), 0, nVoxNumY - 2) ;
|
||||
|
||||
int nMinYBlock = max( 0, nMinJ / int( m_nVoxNumPerBlock)) ;
|
||||
int nMinYBlock = Clamp( nMinJ / int( m_nVoxNumPerBlock), 0, int( m_nFracLin[1] - 1)) ;
|
||||
int nMaxYBlock = min( int( m_nFracLin[1] - 1), nMaxJ / int( m_nVoxNumPerBlock)) ;
|
||||
|
||||
for ( int tI = 0 ; tI < nZStop ; ++ tI) {
|
||||
@@ -333,7 +307,7 @@ VolZmap::SubtractIntervals( unsigned int nGrid, unsigned int nI, unsigned int nJ
|
||||
m_BlockToUpdate[nBlockNum] = true ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_OGrMgr.Reset() ;
|
||||
@@ -370,9 +344,8 @@ VolZmap::SubtractIntervals( unsigned int nGrid, const Point3d & ptP,
|
||||
|
||||
// Controllo che gli indici ottenuti siano nella griglia:
|
||||
// se sono dentro la griglia chiamo l'altra subtract
|
||||
if ( i >= 0 && i < m_nNx[nGrid] &&
|
||||
j >= 0 && j < m_nNy[nGrid])
|
||||
|
||||
if ( i >= 0 && i < m_nNx[nGrid] &&
|
||||
j >= 0 && j < m_nNy[nGrid])
|
||||
return SubtractIntervals( nGrid, i, j, dhMin, dhMax, vtNMin, vtNMax) ;
|
||||
// altrimenti non succede niente
|
||||
else
|
||||
@@ -925,6 +898,7 @@ VolZmap::MillingStep( const Point3d& ptPs, const Vector3d& vtDs, const Vector3d&
|
||||
// Altri casi al momento non gestiti
|
||||
// return false ;
|
||||
}
|
||||
|
||||
m_nConnectedCompoCount = - 1 ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user