void BoundingBox<VEC>::fusion(const BoundingBox<VEC>& bb) { assert(m_initialized || !"Bounding box not initialized"); VEC bbmin = bb.min() ; VEC bbmax = bb.max() ; for(unsigned int i = 0; i < bbmin.dimension(); ++i) { if(bbmin[i] < m_pMin[i]) m_pMin[i] = bbmin[i] ; if(bbmax[i] > m_pMax[i]) m_pMax[i] = bbmax[i] ; } }
bool BoundingBox<VEC>::intersects(const BoundingBox<VEC>& bb) { assert(m_initialized || !"Bounding box not initialized"); VEC bbmin = bb.min() ; VEC bbmax = bb.max() ; for(unsigned int i = 0; i < bbmin.dimension(); ++i) { if(m_pMax[i] < bbmin[i]) return false ; if(m_pMin[i] > bbmax[i]) return false ; } return true ; }
void BoundingBox<VEC>::addPoint(const VEC& p) { if(!m_initialized) { m_pMin = p ; m_pMax = p ; m_initialized = true ; } else { for(unsigned int i = 0; i < p.dimension(); ++i) { if(p[i] < m_pMin[i]) m_pMin[i] = p[i] ; if(p[i] > m_pMax[i]) m_pMax[i] = p[i] ; } } }