EgtGeomKernel 2.1c4 :
- migliorie a Zmap per calcolo triangoli.
This commit is contained in:
+7
-3
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user