EgtGeomKernel :

- migliorie a Zmap.
This commit is contained in:
Dario Sassi
2017-09-11 05:55:08 +00:00
parent 582b574f8b
commit 397c2d9321
+21 -1
View File
@@ -712,7 +712,7 @@ VolZmap::ExtMarchingCubes( int nBlock, TRIA3DLIST& lstTria, TriHolder& triHold)
// Ciclo su tutti i voxel dello Zmap
for ( int i = nLimits[0] ; i < nLimits[1] ; ++ i) {
for ( int j = nLimits[2] ; j < nLimits[3] ; ++ j) {
for ( int k = nLimits[4] ; k < nLimits[5] ; ++ k) {
for ( int k = nLimits[4] ; k < nLimits[5] ; ++ k) {
// Riconoscimento dei voxel di frontiera
int nVoxIndexes[3] = { i, j, k} ;
@@ -1720,6 +1720,10 @@ VolZmap::ExtMarchingCubes( int nBlock, TRIA3DLIST& lstTria, TriHolder& triHold)
// vettore nello spazio genenrato dai due non appartenenti alla coppia
Vector3d vtAv23 = 0.5 * ( CompoVert[nCompCount - 1][nCoupleIndex[2]].vtNorm +
CompoVert[nCompCount - 1][nCoupleIndex[3]].vtNorm) ;
vtAv01.Normalize() ;
vtAv23.Normalize() ;
double dDAvAV = vtAv01 * vtAv23 ;
// se angolo grande si esegue std MC
if ( abs( vtAv01 * vtAv23) < EPS_SMALL) {
for ( int ni = 0 ; ni < 4 ; ++ ni) {
@@ -1731,6 +1735,22 @@ VolZmap::ExtMarchingCubes( int nBlock, TRIA3DLIST& lstTria, TriHolder& triHold)
}
}
}
else {
double dD23 = CompoVert[nCompCount - 1][nCoupleIndex[2]].vtNorm *
CompoVert[nCompCount - 1][nCoupleIndex[3]].vtNorm ;
if ( dD23 > 0.7 && dDAvAV < 0.7) {
for ( int ni = 0 ; ni < 4 ; ++ ni) {
int nj = ni == 3 ? 0 : ni + 1 ;
if ( triContainer[ni].GetN() * CompoVert[nCompCount - 1][ni].vtNorm < - 0.9 &&
triContainer[ni].GetN() * CompoVert[nCompCount - 1][nj].vtNorm < - 0.9) {
bDangerInversion = true ;
break ;
}
}
}
}
}
}
}