Пример #1
0
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] ;
	}
}
Пример #2
0
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 ;
}
Пример #3
0
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] ;
		}
	}
}