EgtGeomKernel 1.9g2 :
- migliorie varie a Collision Avoidance di Tools - piccola miglioria a Intervals.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user