void BoundingSphere::expandBy(const BoundingBox& bb) { if (bb.valid()) { if (valid()) { BoundingBox newbb(bb); for(unsigned int c=0;c<8;++c) { Vec3 v = bb.corner(c)-_center; // get the direction vector from corner v.normalize(); // normalise it. v *= -_radius; // move the vector in the opposite direction distance radius. v += _center; // move to absolute position. newbb.expandBy(v); // add it into the new bounding box. } _center = newbb.center(); _radius = newbb.radius(); } else { _center = bb.center(); _radius = bb.radius(); } } }
void BoundingSphere::expandRadiusBy(const BoundingBox& bb) { if (bb.valid()) { if (valid()) { for(unsigned int c=0;c<8;++c) { expandRadiusBy(bb.corner(c)); } } else { _center = bb.center(); _radius = bb.radius(); } } }