diff --git a/Tree.cpp b/Tree.cpp index cc23a44..bfd6e10 100644 --- a/Tree.cpp +++ b/Tree.cpp @@ -727,7 +727,12 @@ Tree::BuildTree( double dLinTol, double dSideMin, double dSideMax) // se la cella è abbastanza grande da poter essere divisa ancora, calcolo l'errore di approssimazione // ( dSideMinVal è zero se entrambi i lati da splittare sono collassati in un punto, controllo dLengMinVal) bool bSplit = false ; - bool bDimOk = ( dSideMinVal / 2 >= dSideMin || ( dSideMinVal < EPS_SMALL && dLengMinVal / 2 >= dSideMin)) ; + bool bParamDimOk = false ; + if( bVert) + bParamDimOk = ( pcToSplit->GetTopRight().x - pcToSplit->GetBottomLeft().x) / 2 > 100 * EPS_PARAM ; + else + bParamDimOk = ( pcToSplit->GetTopRight().y - pcToSplit->GetBottomLeft().y) / 2 > 100 * EPS_PARAM ; + bool bDimOk = ( dSideMinVal / 2 >= dSideMin || ( dSideMinVal < EPS_SMALL && dLengMinVal / 2 >= dSideMin)) && bParamDimOk ; if ( dSideMaxVal > dSideMax) { bSplit = true ; //LOG_DBG_INFO( GetEGkLogger(), " Split by SideMax")