void rOctree<T>::QueryItemsWithRay(const ray_type& r , result_type& result) { result.clear(); if (! m_root || !rIntersection::RayIntersectsAlignedBox(r , m_root->m_volume)) return; AddNodeItemsToResultSet( m_root,result); QueryItemsWithRayRec(r , result, m_root); }
void rOctree<T>::QueryItemsWithBox(const box_type& b , result_type& result) { result.clear(); if (! m_root || ! m_root->m_volume.IntersectsBox(b)) return; AddNodeItemsToResultSet( m_root,result); QueryItemsWithBoxRec(b , result , m_root); }
void rOctree<T>::QueryItemsWithSphere(const sphere_type& s, result_type& result) { result.clear(); if (! m_root || ! rIntersection::AlignedBoxIntersectsSphere(m_root->m_volume , s)) return; AddNodeItemsToResultSet( m_root,result); QueryItemsWithSpehereRec(s , result , m_root); }
void rOctree<T>::QueryItemsWithPoint(const point_type& p , result_type& result) { result.clear(); if (! m_root || ! m_root->m_volume.ContainsPoint(p)) return; AddNodeItemsToResultSet( m_root,result); QueryItemsWithPointRec(p , result, m_root); }