diff --git a/VolZmapGraphics.cpp b/VolZmapGraphics.cpp index e6c130c..cc1d006 100644 --- a/VolZmapGraphics.cpp +++ b/VolZmapGraphics.cpp @@ -1993,8 +1993,30 @@ VolZmap::ExtMarchingCubes( int nBlock, VoxelContainer& vVox) const ptSol += ( dNewU2 + EPS_SMALL * ( dNewU1 - dNewU2)) * vtNullSpace ; } } - else - bExtConfirmed = nVertComp[nComp] < 6 ? false : true ; + else { + + if ( nVertComp[nComp] == 5) { + double dDotAvarage = 0.; + for (int m = 0; m < nVertComp[nComp] - 1; ++m) { + for (int l = m + 1 ; l < nVertComp[nComp]; ++l) { + dDotAvarage += CompoVert[nComp][m].vtVec * CompoVert[nComp][l].vtVec; + } + } + dDotAvarage /= (( nVertComp[nComp] * ( nVertComp[nComp] - 1)) / 2) ; + + int nNumPar = 0 ; + for ( int m = 0 ; m < nVertComp[nComp] - 1 ; ++ m) { + for ( int l = m + 1 ; l < nVertComp[nComp] ; ++ l) { + if ( AreSameVectorExact( CompoVert[nComp][m].vtVec, CompoVert[nComp][l].vtVec)) + ++ nNumPar ; + } + } + bExtConfirmed = nNumPar == 3 ; + } + else if (nVertComp[nComp] < 5) { + bExtConfirmed = false ; + } + } } } }