EgtGeomKernel :
- estese funzionalità della classe Intervals.
This commit is contained in:
@@ -285,3 +285,67 @@ Intervals::GetPrev( double& dMin, double& dMax) const
|
||||
dMax = m_Iter->second ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Intervals::IsInside( double dP) const
|
||||
{
|
||||
for ( const auto& Interv : m_vInts) {
|
||||
if ( dP > Interv.first - m_dToler && dP < Interv.second + m_dToler)
|
||||
return true ;
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Intervals::GetPrevNearest( double dP, double& dPrev) const
|
||||
{
|
||||
// se non ci sono intervalli validi
|
||||
if ( m_vInts.empty())
|
||||
return false ;
|
||||
// se prima dell'inizio
|
||||
if ( dP < m_vInts.front().first - m_dToler)
|
||||
return false ;
|
||||
for ( int i = int( m_vInts.size()) - 1 ; i >= 0 ; -- i) {
|
||||
// se tra due intervalli validi
|
||||
if ( dP > m_vInts[i].second + m_dToler) {
|
||||
dPrev = m_vInts[i].second ;
|
||||
return true ;
|
||||
}
|
||||
// se in un intervallo valido
|
||||
else if ( dP > m_vInts[i].first - m_dToler) {
|
||||
dPrev = dP ;
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
// non trovato
|
||||
return false ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Intervals::GetNextNearest( double dP, double& dNext) const
|
||||
{
|
||||
// se non ci sono intervalli validi
|
||||
if ( m_vInts.empty())
|
||||
return false ;
|
||||
// se dopo la fine
|
||||
if ( dP > m_vInts.back().second + m_dToler)
|
||||
return false ;
|
||||
// ricerca tra e negli intervalli
|
||||
for ( int i = 0 ; i < int( m_vInts.size()) ; ++ i) {
|
||||
// se tra due intervalli validi
|
||||
if ( dP < m_vInts[i].first - m_dToler) {
|
||||
dNext = m_vInts[i].first ;
|
||||
return true ;
|
||||
}
|
||||
// se in un intervallo valido
|
||||
else if ( dP < m_vInts[i].second + m_dToler) {
|
||||
dNext = dP ;
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
// non trovato
|
||||
return false ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user