bool LLBBox::IntersectIn( const LLBBox &other ) const { if( !GetValid() || !other.GetValid() ) return false; if((m_maxlat <= other.m_maxlat) || (m_minlat >= other.m_minlat)) return false; double minlon = m_minlon, maxlon = m_maxlon; if(m_maxlon < other.m_minlon) minlon += 360, maxlon += 360; else if(m_minlon > other.m_maxlon) minlon -= 360, maxlon -= 360; return (other.m_minlon > minlon) && (other.m_maxlon < maxlon); }
bool LLBBox::IntersectOutGetBias( const LLBBox &other, double bias ) const { // allow -180 to 180 or 0 to 360 if( !GetValid() || !other.GetValid() ) return true; if((m_maxlat < other.m_minlat) || (m_minlat > other.m_maxlat)) return true; if(m_maxlon < other.m_minlon) bias = 360; else if(m_minlon > other.m_maxlon) bias = -360; else bias = 0; return (m_minlon + bias > other.m_maxlon) || (m_maxlon + bias < other.m_minlon); }