EgtGeomKernel 1.9g2 :

- migliorie varie a Collision Avoidance di Tools
- piccola miglioria a Intervals.
This commit is contained in:
Dario Sassi
2018-07-19 15:53:16 +00:00
parent d099756336
commit c393ebf1b3
5 changed files with 733 additions and 203 deletions
+31
View File
@@ -140,6 +140,37 @@ Intervals::Subtract( double dMin, double dMax)
}
}
//----------------------------------------------------------------------------
void
Intervals::Intersect( double dMin, double dMax)
{
// se l'insieme è vuoto non devo fare alcunché
if ( m_vInts.empty())
return ;
// se l'insieme contiene un solo intervallo
if ( m_vInts.size() == 1) {
// verifico ordine
if ( dMin > dMax)
swap( dMin, dMax) ;
// se non si sovrappongono, il risultato è vuoto
if ( dMax < m_vInts.front().first - m_dToler || dMin > m_vInts.front().second + m_dToler) {
m_vInts.clear() ;
return ;
}
// calcolo l'intersezione
m_vInts.front().first = max( m_vInts.front().first, dMin) ;
m_vInts.front().second = min( m_vInts.front().second, dMax) ;
return ;
}
// Insieme di intervalli ausiliario ampio come il corrente
Intervals Aux ;
Aux.Set( m_vInts.front().first, m_vInts.back().second) ;
// Sottraggo Other da Aux
Aux.Subtract( dMin, dMax) ;
// Sottraggo Aux dal corrente
Subtract( Aux) ;
}
//----------------------------------------------------------------------------
void
Intervals::Add( const Intervals& Other)