EgtGeomKernel 2.1c4 :

- migliorie a Zmap per calcolo triangoli.
This commit is contained in:
Dario Sassi
2019-03-26 09:21:46 +00:00
parent d76e77e391
commit 1374f7ab66
4 changed files with 24 additions and 12 deletions
+7 -3
View File
@@ -1972,7 +1972,7 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const
vtNlm.Normalize() ;
double dDotl = vtNlm * CompoVert[nComp][l].vtVec ;
double dDotm = vtNlm * CompoVert[nComp][m].vtVec;
if ( dDotl < - 0.8 || dDotm < - 0.8) {
if ( dDotl < - 0.85 || dDotm < - 0.85) {
bOverTurning = true ;
break ;
}
@@ -1986,10 +1986,10 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const
( ( k + 1) * N_DEXVOXRATIO + 0.5) * m_dStep) ;
double dNewU1, dNewU2 ;
if ( IntersLineBox( ptSol, vtNullSpace, ptMinDiag, ptMaxDiag, dNewU1, dNewU2)) {
if ( dNewU1 < dNewU2) {
if ( dNewU1 > 0.) {
ptSol += ( dNewU1 + EPS_SMALL * ( dNewU2 - dNewU1)) * vtNullSpace ;
}
else {
else if ( dNewU2 < 0.) {
ptSol += ( dNewU2 + EPS_SMALL * ( dNewU1 - dNewU2)) * vtNullSpace ;
}
}
@@ -2224,6 +2224,8 @@ VolZmap::RegulateFeaturesChain( vector<VoxelContainer>& vVecVox) const
for ( int nComp = 0 ; nComp < CurVox.nNumComp ; ++ nComp) {
// Vertice fuori dal suo voxel
if ( ! CurVox.Compo[nComp].bInside) {
if ( IsPointInsideVoxelApprox( CurVox.i, CurVox.j, CurVox.k, CurVox.Compo[nComp].ptVert, 1.5 * EPS_SMALL))
continue ;
// Caso corner
if ( CurVox.Compo[nComp].bCorner) {
// Cerco i primi vicini
@@ -2397,6 +2399,8 @@ VolZmap::RegulateFeaturesChain( vector<VoxelContainer>& vVecVox) const
for ( int nComp = 0 ; nComp < CurVox.nNumComp ; ++ nComp) {
// Vertice fuori dal suo voxel
if ( ! CurVox.Compo[nComp].bInside) {
if ( IsPointInsideVoxelApprox( CurVox.i, CurVox.j, CurVox.k, CurVox.Compo[nComp].ptVert, 1.5 * EPS_SMALL))
continue ;
// Caso feature
if ( ! CurVox.Compo[nComp].bCorner) {
INTVECTOR vNearInn, vNearBord ;