//! Transforms Box3 by matrix, enlarging Box3 to contain result. void transform(const Matrix4<Type> & m) { // a transformed empty box is still empty if(isEmpty()) return; Vec3<Type> corners[8]; corners[0] = m_min; corners[1][0] = m_min[0]; corners[1][1] = m_max[1]; corners[1][2] = m_min[2]; corners[2][0] = m_max[0]; corners[2][1] = m_max[1]; corners[2][2] = m_min[2]; corners[3][0] = m_max[0]; corners[3][1] = m_min[1]; corners[3][2] = m_min[2]; corners[4] = m_max; corners[5][0] = m_min[0]; corners[5][1] = m_max[1]; corners[5][2] = m_max[2]; corners[6][0] = m_min[0]; corners[6][1] = m_min[1]; corners[6][2] = m_max[2]; corners[7][0] = m_max[0]; corners[7][1] = m_min[1]; corners[7][2] = m_max[2]; Box3<Type> newbox; for(int i = 0; i < 8; ++i){ m.multVecMatrix(corners[i], corners[i]); newbox.extendBy(corners[i]); } setBounds(newbox.m_min, newbox.m_max); }