EgtGeomKernel 1.9i4 :
- migliorie a calcoli grafica Zmap per box.
This commit is contained in:
+51
-72
@@ -2104,30 +2104,23 @@ VolZmap::ExtMarchingCubes( int nBlock, TRIA3DEXLIST& lstTria, VoxelContainer& vV
|
||||
int nLastVoxI, nLastVoxJ, nLastVoxK ;
|
||||
GetLastVoxIJK( nLastVoxI, nLastVoxJ, nLastVoxK) ;
|
||||
// Costruisco i triangoli paralleli al piano YZ
|
||||
if ( nBlockIJK[0] == 0 || nBlockIJK[0] + 1 == m_nFracLin[0]) {
|
||||
// Determino coordinate minime dei punti dei triangoli
|
||||
double dYMin, dZMin ;
|
||||
if ( nBlockIJK[1] > 0)
|
||||
dYMin = ( nBlockIJK[1] * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dYMin = ( ( nFirstVoxJ + 1) * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
if ( nBlockIJK[2] > 0)
|
||||
dZMin = ( nBlockIJK[2] * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dZMin = ( ( nFirstVoxK + 1) * N_DEXVOXRATIO + 0.5) * m_dStep ; ;
|
||||
// Determino le coordinate massime dei punti dei triangoli
|
||||
double dYMax, dZMax ;
|
||||
if ( nBlockIJK[1] + 1 < int( m_nFracLin[1]))
|
||||
dYMax = ( ( nBlockIJK[1] + 1) * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dYMax = ( nLastVoxJ * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
if ( nBlockIJK[2] + 1 < int( m_nFracLin[2]))
|
||||
dZMax = ( ( nBlockIJK[2] + 1) * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dZMax = ( nLastVoxK * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
// Determino colore dei triangoli
|
||||
int nDexMinJ = N_DEXVOXRATIO * ( nFirstVoxJ + 1) ;
|
||||
int nDexMinK = N_DEXVOXRATIO * ( nFirstVoxK + 1) ;
|
||||
if ( nBlockIJK[0] == 0 || nBlockIJK[0] + 1 == m_nFracLin[0]) {
|
||||
// Indici dei dexel corrispondenti al confine inferiore fra voxel piatti e feature
|
||||
int nDexMinJ = ( nBlockIJK[1] == 0 ? N_DEXVOXRATIO * ( nFirstVoxJ + 1) :
|
||||
N_DEXVOXRATIO * nBlockIJK[1] * m_nVoxNumPerBlock) ;
|
||||
int nDexMinK = ( nBlockIJK[2] == 0 ? N_DEXVOXRATIO * ( nFirstVoxK + 1) :
|
||||
N_DEXVOXRATIO * nBlockIJK[2] * m_nVoxNumPerBlock) ;
|
||||
// Indici dei dexel corrispondenti al confine superiore fra voxel piatti e feature
|
||||
int nDexMaxJ = ( nBlockIJK[1] + 1 < int( m_nFracLin[1]) ? N_DEXVOXRATIO * ( nBlockIJK[1] + 1) * m_nVoxNumPerBlock :
|
||||
N_DEXVOXRATIO * nLastVoxJ) ;
|
||||
int nDexMaxK = ( nBlockIJK[2] + 1 < int( m_nFracLin[2]) ? N_DEXVOXRATIO * ( nBlockIJK[2] + 1) * m_nVoxNumPerBlock :
|
||||
N_DEXVOXRATIO * nLastVoxK) ;
|
||||
// Determino coordinate minime e massime dei punti dei triangoli
|
||||
double dYMin = ( nDexMinJ + 0.5) * m_dStep ;
|
||||
double dZMin = ( nDexMinK + 0.5) * m_dStep ;
|
||||
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 ;
|
||||
// Piano di coordinata x inferiore: versore normale rivolto come X-
|
||||
@@ -2150,30 +2143,23 @@ VolZmap::ExtMarchingCubes( int nBlock, TRIA3DEXLIST& lstTria, VoxelContainer& vV
|
||||
}
|
||||
}
|
||||
// Costruisco i triangoli paralleli al piano XZ
|
||||
if ( nBlockIJK[1] == 0 || nBlockIJK[1] + 1 == m_nFracLin[1]) {
|
||||
// Determino coordinate minime dei punti dei triangoli
|
||||
double dXMin, dZMin ;
|
||||
if ( nBlockIJK[0] > 0)
|
||||
dXMin = ( nBlockIJK[0] * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dXMin = ( ( nFirstVoxI + 1) * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
if ( nBlockIJK[2] > 0)
|
||||
dZMin = ( nBlockIJK[2] * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dZMin = ( ( nFirstVoxK + 1) * N_DEXVOXRATIO + 0.5) * m_dStep ; ;
|
||||
// Determino le coordinate massime dei punti dei triangoli
|
||||
double dXMax, dZMax ;
|
||||
if ( nBlockIJK[0] + 1 < int( m_nFracLin[0]))
|
||||
dXMax = ( ( nBlockIJK[0] + 1) * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dXMax = ( nLastVoxI * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
if ( nBlockIJK[2] + 1 < int( m_nFracLin[2]))
|
||||
dZMax = ( ( nBlockIJK[2] + 1) * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dZMax = ( nLastVoxK * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
// Determino colore dei triangoli
|
||||
int nDexMinI = N_DEXVOXRATIO * ( nFirstVoxI + 1) ;
|
||||
int nDexMinK = N_DEXVOXRATIO * ( nFirstVoxK + 1) ;
|
||||
if ( nBlockIJK[1] == 0 || nBlockIJK[1] + 1 == m_nFracLin[1]) {
|
||||
// Indici dei dexel corrispondenti al confine inferiore fra voxel piatti e feature
|
||||
int nDexMinI = ( nBlockIJK[0] == 0 ? N_DEXVOXRATIO * ( nFirstVoxI + 1) :
|
||||
N_DEXVOXRATIO * nBlockIJK[0] * m_nVoxNumPerBlock) ;
|
||||
int nDexMinK = ( nBlockIJK[2] == 0 ? N_DEXVOXRATIO * ( nFirstVoxK + 1) :
|
||||
N_DEXVOXRATIO * nBlockIJK[2] * m_nVoxNumPerBlock) ;
|
||||
// Indici dei dexel corrispondenti al confine superiore fra voxel piatti e feature
|
||||
int nDexMaxI = ( nBlockIJK[0] + 1 < int( m_nFracLin[0]) ? N_DEXVOXRATIO * ( nBlockIJK[0] + 1) * m_nVoxNumPerBlock :
|
||||
N_DEXVOXRATIO * nLastVoxI) ;
|
||||
int nDexMaxK = ( nBlockIJK[2] + 1 < int( m_nFracLin[2]) ? N_DEXVOXRATIO * ( nBlockIJK[2] + 1) * m_nVoxNumPerBlock :
|
||||
N_DEXVOXRATIO * nLastVoxK) ;
|
||||
// Determino coordinate minime e massime dei punti dei triangoli
|
||||
double dXMin = ( nDexMinI + 0.5) * m_dStep ;
|
||||
double dZMin = ( nDexMinK + 0.5) * m_dStep ;
|
||||
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 ;
|
||||
// Piano di coordinata y inferiore: versore normale rivolto come Y-
|
||||
@@ -2196,30 +2182,23 @@ VolZmap::ExtMarchingCubes( int nBlock, TRIA3DEXLIST& lstTria, VoxelContainer& vV
|
||||
}
|
||||
}
|
||||
// Costruisco i triangoli paralleli al piano XY
|
||||
if ( nBlockIJK[2] == 0 || nBlockIJK[2] + 1 == m_nFracLin[2]) {
|
||||
// Determino coordinate minime dei punti dei triangoli
|
||||
double dXMin, dYMin ;
|
||||
if ( nBlockIJK[0] > 0)
|
||||
dXMin = ( nBlockIJK[0] * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dXMin = ( ( nFirstVoxI + 1) * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
if ( nBlockIJK[1] > 0)
|
||||
dYMin = ( nBlockIJK[1] * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dYMin = ( ( nFirstVoxJ + 1) * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
// Determino le coordinate massime dei punti dei triangoli
|
||||
double dXMax, dYMax ;
|
||||
if ( nBlockIJK[0] + 1 < int( m_nFracLin[0]))
|
||||
dXMax = ( ( nBlockIJK[0] + 1) * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dXMax = ( nLastVoxI * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
if ( nBlockIJK[1] + 1 < int( m_nFracLin[1]))
|
||||
dYMax = ( ( nBlockIJK[1] + 1) * m_nVoxNumPerBlock * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
else
|
||||
dYMax = ( nLastVoxJ * N_DEXVOXRATIO + 0.5) * m_dStep ;
|
||||
// Determino colore dei triangoli
|
||||
int nDexMinI = N_DEXVOXRATIO * ( nFirstVoxI + 1) ;
|
||||
int nDexMinJ = N_DEXVOXRATIO * ( nFirstVoxJ + 1) ;
|
||||
if ( nBlockIJK[2] == 0 || nBlockIJK[2] + 1 == m_nFracLin[2]) {
|
||||
// Indici dei dexel corrispondenti al confine inferiore fra voxel piatti e feature
|
||||
int nDexMinI = ( nBlockIJK[0] == 0 ? N_DEXVOXRATIO * ( nFirstVoxI + 1) :
|
||||
N_DEXVOXRATIO * nBlockIJK[0] * m_nVoxNumPerBlock) ;
|
||||
int nDexMinJ = ( nBlockIJK[1] == 0 ? N_DEXVOXRATIO * ( nFirstVoxJ + 1) :
|
||||
N_DEXVOXRATIO * nBlockIJK[1] * m_nVoxNumPerBlock) ;
|
||||
// Indici dei dexel corrispondenti al confine superiore fra voxel piatti e feature
|
||||
int nDexMaxI = ( nBlockIJK[0] + 1 < int( m_nFracLin[0]) ? N_DEXVOXRATIO * ( nBlockIJK[0] + 1) * m_nVoxNumPerBlock :
|
||||
N_DEXVOXRATIO * nLastVoxI) ;
|
||||
int nDexMaxJ = ( nBlockIJK[1] + 1 < int( m_nFracLin[1]) ? N_DEXVOXRATIO * ( nBlockIJK[1] + 1) * m_nVoxNumPerBlock :
|
||||
N_DEXVOXRATIO * nLastVoxJ) ;
|
||||
// Determino coordinate minime e massime dei punti dei triangoli
|
||||
double dXMin = ( nDexMinI + 0.5) * m_dStep ;
|
||||
double dYMin = ( nDexMinJ + 0.5) * m_dStep ;
|
||||
double dXMax = ( nDexMaxI + 0.5) * m_dStep ;
|
||||
double dYMax = ( nDexMaxJ + 0.5) * m_dStep ;
|
||||
// Determino colore dei triangoli
|
||||
int nFaceInfGrade = m_Values[0][nDexMinJ * m_nNx[0] + nDexMinI][0].nToolMin ;
|
||||
int nFaceSupGrade = m_Values[0][nDexMinJ * m_nNx[0] + nDexMinI][0].nToolMax ;
|
||||
// Piano di coordinata Z inferiore: versore normale rivolto come Z-
|
||||
|
||||
Reference in New Issue
Block a user