EgtGeomKernel.rc 1.6i2 :
- possibilità di impostare tolleranza sul costruttore di Intervals - corretto errore su operatori booleani di Region con tratti piccoli su oggetti grandi - estesi operatori booleani di regioni anche a regioni su piani paralleli.
This commit is contained in:
+6
-6
@@ -52,7 +52,7 @@ Intervals::Add( double dMin, double dMax)
|
||||
auto iIter = m_lInts.begin() ;
|
||||
while ( iIter != m_lInts.end()) {
|
||||
// se interseca l'intervallo corrente
|
||||
if ( dMin < iIter->second + EPS_SMALL && dMax > iIter->first - EPS_SMALL) {
|
||||
if ( dMin < iIter->second + m_dToler && dMax > iIter->first - m_dToler) {
|
||||
// se ha già interessato un intervallo precedente
|
||||
if ( iInsert != m_lInts.end()) {
|
||||
// aggiorno il massimo dell'intervallo già interessato
|
||||
@@ -73,7 +73,7 @@ Intervals::Add( double dMin, double dMax)
|
||||
}
|
||||
}
|
||||
// se il nuovo intervallo finisce prima
|
||||
else if ( dMax <= iIter->first - EPS_SMALL) {
|
||||
else if ( dMax <= iIter->first - m_dToler) {
|
||||
// se non già inserito, lo faccio ora
|
||||
if ( iInsert == m_lInts.end())
|
||||
iInsert = m_lInts.emplace( iIter, dMin, dMax) ;
|
||||
@@ -81,7 +81,7 @@ Intervals::Add( double dMin, double dMax)
|
||||
break ;
|
||||
}
|
||||
// se il nuovo intervallo inizia dopo
|
||||
else if ( dMin > iIter->second + EPS_SMALL)
|
||||
else if ( dMin > iIter->second + m_dToler)
|
||||
// passo al successivo
|
||||
++ iIter ;
|
||||
}
|
||||
@@ -104,19 +104,19 @@ Intervals::Subtract( double dMin, double dMax)
|
||||
// se interseca l'intervallo corrente
|
||||
if ( dMin < iIter->second && dMax > iIter->first) {
|
||||
// se devo limitarlo inferiormente
|
||||
if ( dMin < ( iIter->first + EPS_SMALL) && dMax < ( iIter->second - EPS_SMALL)) {
|
||||
if ( dMin < ( iIter->first + m_dToler) && dMax < ( iIter->second - m_dToler)) {
|
||||
iIter->first = dMax ;
|
||||
// passo al successivo
|
||||
++ iIter ;
|
||||
}
|
||||
// se devo limitarlo superiormente
|
||||
else if ( dMin > ( iIter->first + EPS_SMALL) && dMax > ( iIter->second - EPS_SMALL)) {
|
||||
else if ( dMin > ( iIter->first + m_dToler) && dMax > ( iIter->second - m_dToler)) {
|
||||
iIter->second = dMin ;
|
||||
// passo al successivo
|
||||
++ iIter ;
|
||||
}
|
||||
// se devo dividerlo in due parti
|
||||
else if ( dMin > ( iIter->first + EPS_SMALL) && dMax < ( iIter->second - EPS_SMALL)) {
|
||||
else if ( dMin > ( iIter->first + m_dToler) && dMax < ( iIter->second - m_dToler)) {
|
||||
// inserisco il nuovo intervallo che corrisponde alla parte inferiore
|
||||
iIter = m_lInts.emplace( iIter, iIter->first, dMin) ;
|
||||
// modifico l'intervallo successivo
|
||||
|
||||
Reference in New Issue
Block a user