EgtGeomKernel 2.1b1 :
- modifiche a Zmap per mantenimento liste triangoli.
This commit is contained in:
+73
-52
@@ -46,16 +46,16 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
m_MapFrame.Set( ptO, X_AX, Y_AX, Z_AX) ;
|
||||
|
||||
// Definisco i vettori dei limiti su indici
|
||||
m_nNx[0] = unsigned int( ( dLengthX + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[0] = unsigned int( ( dLengthY + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNx[0] = int( ( dLengthX + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[0] = int( ( dLengthY + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
|
||||
// Calcolo il numero di voxel lungo X e Y
|
||||
unsigned int nVoxNumX = m_nNx[0] / N_DEXVOXRATIO + ( m_nNx[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
unsigned int nVoxNumY = m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumX = m_nNx[0] / N_DEXVOXRATIO + ( m_nNx[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumY = m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
|
||||
// Definisco il numero di blocchi lungo x e y
|
||||
m_nFracLin[0] = max( 1u, unsigned int( nVoxNumX * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[1] = max( 1u, unsigned int( nVoxNumY * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[0] = max( 1, int( nVoxNumX * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[1] = max( 1, int( nVoxNumY * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
|
||||
// Numero di componenti connesse
|
||||
m_nConnectedCompoCount = 1 ;
|
||||
@@ -63,13 +63,13 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
// Se tridexel
|
||||
if ( bTriDex) {
|
||||
m_nNx[1] = m_nNy[0] ;
|
||||
m_nNy[1] = unsigned int( ( dLengthZ + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[1] = int( ( dLengthZ + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNx[2] = m_nNy[1] ;
|
||||
m_nNy[2] = m_nNx[0] ;
|
||||
// Calcolo il numero di voxel lungo Z
|
||||
unsigned int nVoxNumZ = m_nNy[1] / N_DEXVOXRATIO + ( m_nNy[1] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumZ = m_nNy[1] / N_DEXVOXRATIO + ( m_nNy[1] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
// Definisco il numero di blocchi lungo z
|
||||
m_nFracLin[2] = max( 1u, unsigned int( nVoxNumZ * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[2] = max( 1, int( nVoxNumZ * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
}
|
||||
|
||||
// altrimenti mono dexel
|
||||
@@ -86,16 +86,16 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
|
||||
// Creazione delle mappe
|
||||
// Calcolo del numero di celle per ogni mappa
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i)
|
||||
for ( int i = 0 ; i < m_nMapNum ; ++ i)
|
||||
m_nDim[i] = m_nNx[i] * m_nNy[i] ;
|
||||
|
||||
// Creazione delle celle per ogni mappa
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i)
|
||||
for ( int i = 0 ; i < m_nMapNum ; ++ i)
|
||||
m_Values[i].resize( m_nDim[i]) ;
|
||||
|
||||
// Riempimento delle celle
|
||||
for ( unsigned int i = 0 ; i < m_nMapNum ; ++ i)
|
||||
for ( unsigned int j = 0 ; j < m_nDim[i] ; ++ j) {
|
||||
for ( int i = 0 ; i < m_nMapNum ; ++ i)
|
||||
for ( int j = 0 ; j < m_nDim[i] ; ++ j) {
|
||||
|
||||
// Aggiungo il tratto al dexel vuoto
|
||||
m_Values[i][j].resize( 1) ;
|
||||
@@ -133,17 +133,24 @@ VolZmap::Create( const Point3d& ptO, double dLengthX, double dLengthY, double dL
|
||||
m_dMinZ[2] = 0 ;
|
||||
m_dMaxZ[2] = ( bTriDex ? dLengthY : 0) ;
|
||||
|
||||
// Dimensiono e setto il vettore dei blocchi a da ricalcolare
|
||||
// Dimensiono e setto il vettore dei blocchi a da ricalcolare e il vettore di contatori di aggiornamenti della grafica
|
||||
m_nNumBlock = m_nFracLin[0] * m_nFracLin[1] * m_nFracLin[2] ;
|
||||
m_BlockToUpdate.clear() ;
|
||||
m_BlockToUpdate.resize( m_nNumBlock, true) ;
|
||||
m_BlockUpGradingCounter.clear() ;
|
||||
m_BlockUpGradingCounter.resize( m_nNumBlock + ( m_nMapNum == 1 ? 0 : 1), 0) ;
|
||||
|
||||
// Tipologia
|
||||
m_nShape = BOX ;
|
||||
|
||||
// Dimensiono raccolta di voxel, triangoli di feature tra blocchi e di segnalatori di materiale fra voxel
|
||||
m_InterBlockVox.resize( m_nNumBlock) ;
|
||||
m_InterBlockTria.resize( m_nNumBlock) ;
|
||||
m_InterBlockOriginalSharpTria.resize( m_nNumBlock) ;
|
||||
m_InterBlockToBeFlippedSharpTria.resize( m_nNumBlock) ;
|
||||
m_BlockSharpTria.resize( m_nNumBlock) ;
|
||||
m_BlockSmoothTria.resize( m_nNumBlock) ;
|
||||
m_BlockBigTria.resize( m_nNumBlock) ;
|
||||
m_SingleMapTria.resize( m_nNumBlock) ;
|
||||
m_SliceXY.resize( m_nNumBlock) ;
|
||||
m_SliceXZ.resize( m_nNumBlock) ;
|
||||
m_SliceYZ.resize( m_nNumBlock) ;
|
||||
@@ -182,19 +189,19 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
|
||||
// A partire dalle dimensioni di xy del grezzo determino il numero di colonne e righe
|
||||
// della griglia Zmap e da questi la dimensione del vettore di dexel
|
||||
m_nNx[0] = unsigned int( ( dLengthX + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[0] = unsigned int( ( dLengthY + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNx[0] = int( ( dLengthX + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[0] = int( ( dLengthY + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nDim[0] = m_nNx[0] * m_nNy[0] ;
|
||||
// Ridimensiono il vettore di dexel e creo lo Zmap
|
||||
m_Values[0].resize( m_nDim[0]) ;
|
||||
|
||||
// Calcolo il numero di voxel lungo X e Y
|
||||
unsigned int nVoxNumX = m_nNx[0] / N_DEXVOXRATIO + ( m_nNx[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
unsigned int nVoxNumY = m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumX = m_nNx[0] / N_DEXVOXRATIO + ( m_nNx[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumY = m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
|
||||
// Definisco il numero di blocchi lungo x e y
|
||||
m_nFracLin[0] = max( 1u, unsigned int( nVoxNumX * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[1] = max( 1u, unsigned int( nVoxNumY * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[0] = max( 1, int( nVoxNumX * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[1] = max( 1, int( nVoxNumY * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
|
||||
// Numero di componenti connesse
|
||||
m_nConnectedCompoCount = Surf.GetChunkCount() ;
|
||||
@@ -202,7 +209,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
// Se Tridexel ridimensiono anche gli altri vettori
|
||||
if ( bTriDex) {
|
||||
m_nNx[1] = m_nNy[0] ;
|
||||
m_nNy[1] = unsigned int( ( dDimZ + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[1] = int( ( dDimZ + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nDim[1] = m_nNx[1] * m_nNy[1] ;
|
||||
m_Values[1].resize( m_nDim[1]) ;
|
||||
m_nNx[2] = m_nNy[1] ;
|
||||
@@ -210,9 +217,9 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
m_nDim[2] = m_nNx[2] * m_nNy[2] ;
|
||||
m_Values[2].resize( m_nDim[2]) ;
|
||||
// Calcolo il numero di voxel lungo Z
|
||||
unsigned int nVoxNumZ = m_nNy[1] / N_DEXVOXRATIO + ( m_nNy[1] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumZ = m_nNy[1] / N_DEXVOXRATIO + ( m_nNy[1] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
// Definisco il numero di blocchi lungo z
|
||||
m_nFracLin[2] = max( 1u, unsigned int( nVoxNumZ * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[2] = max( 1, int( nVoxNumZ * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
}
|
||||
|
||||
else {
|
||||
@@ -242,7 +249,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
}
|
||||
|
||||
// Calcolo griglia 0=XY ( se tridexel anche griglia 2=ZX)
|
||||
for ( unsigned int i = 0 ; i < m_nNx[0] ; ++ i) {
|
||||
for ( int i = 0 ; i < m_nNx[0] ; ++ i) {
|
||||
|
||||
// Definisco la retta diretta come Y da intersecare con la regione
|
||||
double dX = ( i + 0.5) * m_dStep ;
|
||||
@@ -274,7 +281,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
int nFind = 0 ;
|
||||
int nCompo = 0 ;
|
||||
Vector3d vtN1 = - Y_AX ; Vector3d vtN2 = Y_AX ;
|
||||
for ( size_t m = 0 ; m < vpCrvs.size() ; ++ m) {
|
||||
for ( int m = 0 ; m < int( vpCrvs.size()) ; ++ m) {
|
||||
// recupero la curva
|
||||
ICurve* pCurve = vpCrvs[m] ;
|
||||
// determino posizione primo punto su curva
|
||||
@@ -326,9 +333,9 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
|
||||
// Se tridexel riempio i singoli dexel della griglia 2 con gli intervalli
|
||||
if ( bTriDex) {
|
||||
for ( size_t n = 0 ; n < m_nNx[2] ; ++ n) {
|
||||
size_t nPos2 = i * m_nNx[2] + n ;
|
||||
size_t nCurrSize = m_Values[2][nPos2].size( ) ;
|
||||
for ( int n = 0 ; n < m_nNx[2] ; ++ n) {
|
||||
int nPos2 = i * m_nNx[2] + n ;
|
||||
int nCurrSize = int( m_Values[2][nPos2].size()) ;
|
||||
// Aggiungo un tratto al dexel
|
||||
m_Values[2][nPos2].resize( nCurrSize + 1) ;
|
||||
// Aggiorno i dati del tratto di dexel
|
||||
@@ -349,7 +356,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
if ( bTriDex) {
|
||||
|
||||
// ciclo sul lato orizzontale della griglia
|
||||
for ( unsigned int i = 0 ; i < m_nNx[1] ; ++ i) {
|
||||
for ( int i = 0 ; i < m_nNx[1] ; ++ i) {
|
||||
|
||||
// Definisco la retta diretta come X da intersecare con la regione
|
||||
double dY = ( i + 0.5) * m_dStep ;
|
||||
@@ -381,7 +388,7 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
int nFind = 0 ;
|
||||
int nCompo = 0 ;
|
||||
Vector3d vtN1 = -X_AX ; Vector3d vtN2 = X_AX ;
|
||||
for ( size_t m = 0 ; m < vpCrvs.size() ; ++ m) {
|
||||
for ( int m = 0 ; m < int( vpCrvs.size()) ; ++ m) {
|
||||
// recupero la curva
|
||||
ICurve* pCurve = vpCrvs[m] ;
|
||||
// determino posizione primo punto su curva
|
||||
@@ -413,9 +420,9 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
LOG_ERROR( GetEGkLogger(), "Error in VolZmap::CreateFromFlatRegion : point not on baundary")
|
||||
|
||||
// aggiorno i dexel impilati
|
||||
for ( size_t j = 0 ; j < m_nNy[1] ; ++ j) {
|
||||
size_t nPos1 = j * m_nNx[1] + i ;
|
||||
size_t nCurrSize = m_Values[1][nPos1].size() ;
|
||||
for ( int j = 0 ; j < m_nNy[1] ; ++ j) {
|
||||
int nPos1 = j * m_nNx[1] + i ;
|
||||
int nCurrSize = int( m_Values[1][nPos1].size()) ;
|
||||
// Aggiungo un tratto al dexel
|
||||
m_Values[1][nPos1].resize( nCurrSize + 1) ;
|
||||
// Assegno i dati
|
||||
@@ -440,14 +447,21 @@ VolZmap::CreateFromFlatRegion( const ISurfFlatRegion& Surf, double dDimZ, double
|
||||
m_dMinZ[2] = 0 ;
|
||||
m_dMaxZ[2] = ( bTriDex ? dLengthY : 0) ;
|
||||
|
||||
// Dimensiono e setto il vettore dei blocchi a da ricalcolare
|
||||
// Dimensiono e setto il vettore dei blocchi a da ricalcolare e il vettore di contatori di aggiornamenti della grafica
|
||||
m_nNumBlock = m_nFracLin[0] * m_nFracLin[1] * m_nFracLin[2] ;
|
||||
m_BlockToUpdate.clear() ;
|
||||
m_BlockToUpdate.resize( m_nNumBlock, true) ;
|
||||
m_BlockUpGradingCounter.clear() ;
|
||||
m_BlockUpGradingCounter.resize( m_nNumBlock + ( m_nMapNum == 1 ? 0 : 1), 0) ;
|
||||
|
||||
// Dimensiono raccolta di voxel, triangoli di feature tra blocchi e di segnalatori di materiale fra voxel
|
||||
m_InterBlockVox.resize( m_nNumBlock) ;
|
||||
m_InterBlockTria.resize( m_nNumBlock) ;
|
||||
m_InterBlockOriginalSharpTria.resize( m_nNumBlock) ;
|
||||
m_InterBlockToBeFlippedSharpTria.resize( m_nNumBlock) ;
|
||||
m_BlockSharpTria.resize( m_nNumBlock) ;
|
||||
m_BlockSmoothTria.resize( m_nNumBlock) ;
|
||||
m_BlockBigTria.resize( m_nNumBlock) ;
|
||||
m_SingleMapTria.resize( m_nNumBlock) ;
|
||||
m_SliceXY.resize( m_nNumBlock) ;
|
||||
m_SliceXZ.resize( m_nNumBlock) ;
|
||||
m_SliceYZ.resize( m_nNumBlock) ;
|
||||
@@ -495,17 +509,17 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
|
||||
// A partire dalle dimensioni di xy del grezzo determino il numero di colonne e righe
|
||||
// della griglia Zmap e da questi la dimensione del vettore di dexel
|
||||
m_nNx[0] = unsigned int( ( vtLen.x + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[0] = unsigned int( ( vtLen.y + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNx[0] = int( ( vtLen.x + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[0] = int( ( vtLen.y + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nDim[0] = m_nNx[0] * m_nNy[0] ;
|
||||
// Ridimensiono il vettore di dexel e creo lo Zmap
|
||||
m_Values[0].resize( m_nDim[0]) ;
|
||||
// Calcolo il numero di voxel lungo X e Y
|
||||
unsigned int nVoxNumX = m_nNx[0] / N_DEXVOXRATIO + ( m_nNx[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
unsigned int nVoxNumY = m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumX = m_nNx[0] / N_DEXVOXRATIO + ( m_nNx[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumY = m_nNy[0] / N_DEXVOXRATIO + ( m_nNy[0] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
// Definisco il numero di blocchi lungo x e y
|
||||
m_nFracLin[0] = max( 1u, unsigned int( nVoxNumX * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[1] = max( 1u, unsigned int( nVoxNumY * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[0] = max( 1, int( nVoxNumX * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[1] = max( 1, int( nVoxNumY * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
|
||||
// Numero di componenti connesse da calcolare
|
||||
m_nConnectedCompoCount = - 1 ;
|
||||
@@ -513,7 +527,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
// Se Tridexel ridimensiono anche gli altri vettori
|
||||
if ( bTriDex) {
|
||||
m_nNx[1] = m_nNy[0] ;
|
||||
m_nNy[1] = unsigned int( ( vtLen.z + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nNy[1] = int( ( vtLen.z + EPS_SMALL) / m_dStep + 0.5) ;
|
||||
m_nDim[1] = m_nNx[1] * m_nNy[1] ;
|
||||
m_Values[1].resize( m_nDim[1]) ;
|
||||
m_nNx[2] = m_nNy[1] ;
|
||||
@@ -521,9 +535,9 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
m_nDim[2] = m_nNx[2] * m_nNy[2] ;
|
||||
m_Values[2].resize( m_nDim[2]) ;
|
||||
// Calcolo il numero di voxel lungo Z
|
||||
unsigned int nVoxNumZ = m_nNy[1] / N_DEXVOXRATIO + ( m_nNy[1] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
int nVoxNumZ = m_nNy[1] / N_DEXVOXRATIO + ( m_nNy[1] % N_DEXVOXRATIO == 0 ? 1 : 2) ;
|
||||
// Definisco il numero di blocchi lungo z
|
||||
m_nFracLin[2] = max( 1u, unsigned int( nVoxNumZ * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
m_nFracLin[2] = max( 1, int( nVoxNumZ * 1.0 / m_nVoxNumPerBlock + 0.7)) ;
|
||||
}
|
||||
|
||||
else {
|
||||
@@ -538,7 +552,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
}
|
||||
|
||||
// ciclo sulle griglie
|
||||
for ( unsigned int g = 0 ; g < m_nMapNum ; ++ g) {
|
||||
for ( int g = 0 ; g < m_nMapNum ; ++ g) {
|
||||
|
||||
// Definisco dei sistemi di riferimento ausiliari
|
||||
Frame3d frMapFrame ;
|
||||
@@ -553,8 +567,8 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
IntersParLinesSurfTm intPLSTM( frMapFrame, Surf) ;
|
||||
|
||||
// Determinazione e ridimensionamento dei dexel interni alla trimesh
|
||||
for ( unsigned int i = 0 ; i < m_nNx[g] ; ++ i) {
|
||||
for ( unsigned int j = 0 ; j < m_nNy[g] ; ++ j) {
|
||||
for ( int i = 0 ; i < m_nNx[g] ; ++ i) {
|
||||
for ( int j = 0 ; j < m_nNy[g] ; ++ j) {
|
||||
|
||||
// Definisco la retta da intersecare con la trimesh
|
||||
double dX = ( i + 0.5) * m_dStep ;
|
||||
@@ -567,7 +581,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
|
||||
int nInt = int( IntersectionResults.size()) ;
|
||||
|
||||
unsigned int nPos = j * m_nNx[g] + i ;
|
||||
int nPos = j * m_nNx[g] + i ;
|
||||
|
||||
bool bInside = false ;
|
||||
Point3d ptIn ;
|
||||
@@ -606,7 +620,7 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
Vector3d vtOutN ;
|
||||
Surf.GetFacetNormal( nF, vtOutN) ;
|
||||
|
||||
unsigned int nCurrentSize = unsigned int( m_Values[g][nPos].size()) ;
|
||||
int nCurrentSize = int( m_Values[g][nPos].size()) ;
|
||||
|
||||
// Aggiungo un tratto al dexel
|
||||
m_Values[g][nPos].resize( nCurrentSize + 1) ;
|
||||
@@ -636,14 +650,21 @@ VolZmap::CreateFromTriMesh( const ISurfTriMesh& Surf, double dStep, bool bTriDex
|
||||
m_dMinZ[2] = 0 ;
|
||||
m_dMaxZ[2] = ( bTriDex ? vtLen.y : 0) ;
|
||||
|
||||
// Dimensiono e setto il vettore dei blocchi a da ricalcolare
|
||||
// Dimensiono e setto il vettore dei blocchi a da ricalcolare e il vettore di contatori di aggiornamenti della grafica
|
||||
m_nNumBlock = m_nFracLin[0] * m_nFracLin[1] * m_nFracLin[2] ;
|
||||
m_BlockToUpdate.clear() ;
|
||||
m_BlockToUpdate.resize( m_nNumBlock, true) ;
|
||||
m_BlockUpGradingCounter.clear() ;
|
||||
m_BlockUpGradingCounter.resize( m_nNumBlock + ( m_nMapNum == 1 ? 0 : 1), 0) ;
|
||||
|
||||
// Dimensiono raccolta di voxel, triangoli di feature tra blocchi e di segnalatori di materiale fra voxel
|
||||
m_InterBlockVox.resize( m_nNumBlock) ;
|
||||
m_InterBlockTria.resize( m_nNumBlock) ;
|
||||
m_InterBlockOriginalSharpTria.resize( m_nNumBlock) ;
|
||||
m_InterBlockToBeFlippedSharpTria.resize( m_nNumBlock) ;
|
||||
m_BlockSharpTria.resize( m_nNumBlock) ;
|
||||
m_BlockSmoothTria.resize( m_nNumBlock) ;
|
||||
m_BlockBigTria.resize( m_nNumBlock) ;
|
||||
m_SingleMapTria.resize( m_nNumBlock) ;
|
||||
m_SliceXY.resize( m_nNumBlock) ;
|
||||
m_SliceXZ.resize( m_nNumBlock) ;
|
||||
m_SliceYZ.resize( m_nNumBlock) ;
|
||||
|
||||
Reference in New Issue
Block a user