From 4508c8a6346f8544e4053dbe5bb03bf242d90d66 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 8 Dec 2020 10:36:20 +0000 Subject: [PATCH] EgtGeomKernel 2.2l1 : - correzioni a Zmap per casi degeneri (dexel solo in una matrice anche se tridexel). --- EgtGeomKernel.rc | Bin 11718 -> 11718 bytes VolZmap.cpp | 4 ++-- VolZmapGraphics.cpp | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 42bbfb48028f5aa7664705d110723227776f069d..8139089be6f78abd0d2c3d1ff555e3c55837c6fa 100644 GIT binary patch delta 134 zcmX>WeJpyz4>ndK1|0^&&G-4vGfl1&(wY2&Q-wK)!EmyouWeJpyz4>ndq1|0^|&G-4vGfl1&(wY2&Q-wL3!E~~sum_nNx[nMap] = nMaxIndI[nMap] - nMinIndI[nMap] + 1 ; - pVolume->m_nNy[nMap] = nMaxIndJ[nMap] - nMinIndJ[nMap] + 1 ; + pVolume->m_nNx[nMap] = max( 0, nMaxIndI[nMap] - nMinIndI[nMap] + 1) ; + pVolume->m_nNy[nMap] = max( 0, nMaxIndJ[nMap] - nMinIndJ[nMap] + 1) ; pVolume->m_nDim[nMap] = pVolume->m_nNx[nMap] * pVolume->m_nNy[nMap] ; pVolume->m_Values[nMap].resize( pVolume->m_nDim[nMap]) ; } diff --git a/VolZmapGraphics.cpp b/VolZmapGraphics.cpp index a379ed9..24c127f 100644 --- a/VolZmapGraphics.cpp +++ b/VolZmapGraphics.cpp @@ -2216,8 +2216,8 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const double dYMax = ( nDexMaxJ + 0.5) * m_dStep ; double dZMax = ( nDexMaxK + 0.5) * m_dStep ; // Determino colore dei triangoli - int nFaceInfGrade = m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMin ; - int nFaceSupGrade = m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMax ; + int nFaceInfGrade = ( ! m_Values[1].empty() ? m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMin : 0) ; + int nFaceSupGrade = ( ! m_Values[1].empty() ? m_Values[1][nDexMinK * m_nNx[1] + nDexMinJ][0].nToolMax : 0) ; // Piano di coordinata x inferiore: versore normale rivolto come X- if ( nBlockIJK[0] == 0) { Triangle3dEx trTria1, trTria2 ; @@ -2255,8 +2255,8 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const double dXMax = ( nDexMaxI + 0.5) * m_dStep ; double dZMax = ( nDexMaxK + 0.5) * m_dStep ; // Determino colore dei triangoli - int nFaceInfGrade = m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMin ; - int nFaceSupGrade = m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMax ; + int nFaceInfGrade = ( ! m_Values[2].empty() ? m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMin : 0) ; + int nFaceSupGrade = ( ! m_Values[2].empty() ? m_Values[2][nDexMinI * m_nNx[2] + nDexMinK][0].nToolMax : 0) ; // Piano di coordinata y inferiore: versore normale rivolto come Y- if ( nBlockIJK[1] == 0) { Triangle3dEx trTria1, trTria2 ; @@ -4024,7 +4024,7 @@ VolZmap::GetFirstVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( nj = 0 ; nj < 2 ; ++ nj) { int nDex = nj * int( m_nNx[0]) + ni ; - if ( m_Values[0][nDex].size() > 0) { + if ( ! m_Values[0].empty() && m_Values[0][nDex].size() > 0) { bNotEmpty = true ; break ; } @@ -4037,7 +4037,7 @@ VolZmap::GetFirstVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( mj = 0 ; mj < 2 ; ++ mj) { int nDex = mj * int( m_nNx[1]) + mi ; - if ( m_Values[1][nDex].size() > 0) { + if ( ! m_Values[1].empty() && m_Values[1][nDex].size() > 0) { bNotEmpty = true ; break ; } @@ -4067,7 +4067,7 @@ VolZmap::GetLastVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( nj = int( m_nNy[0]) - 1 ; nj > int( m_nNy[0]) - 3 ; -- nj) { int nDex = nj * int( m_nNx[0]) + ni ; - if ( m_Values[0][nDex].size() > 0) { + if ( ! m_Values[0].empty() && m_Values[0][nDex].size() > 0) { bNotEmpty = true ; break ; } @@ -4080,7 +4080,7 @@ VolZmap::GetLastVoxIJK( int& i, int& j, int& k) const bool bNotEmpty = false ; for ( mj = int( m_nNy[1]) - 1 ; mj > int( m_nNy[1]) - 3 ; -- mj) { int nDex = mj * int( m_nNx[1]) + mi ; - if ( m_Values[1][nDex].size() > 0) { + if ( ! m_Values[1].empty() && m_Values[1][nDex].size() > 0) { bNotEmpty = true ; break ; }