// Retorna la cantidad de unidades que la esfera ha penetrado en la caja
float bbox_esfera(bbox bb, esfera3d esfera)
{
if ( bb.centro.x + bb.anchura2 > esfera.centro.x - esfera.radio && // +X
bb.centro.x - bb.anchura2 < esfera.centro.x + esfera.radio && // -X
bb.centro.y + bb.altura2 > esfera.centro.y - esfera.radio && // +Y
bb.centro.y - bb.altura2 < esfera.centro.y + esfera.radio && // -Y
bb.centro.z + bb.longitud2 > esfera.centro.z - esfera.radio && // +Z
bb.centro.z - bb.longitud2 < esfera.centro.z + esfera.radio ) // -Z
{
return 0.0f; // No hay colisión
}
float xgt = bb.anchura2 - esfera.centro.x + bb.centro.x;
/*
Se calcula de igual manera para las otras cinco caras, eliges la menor, o la que
quieras, y la retornas.
*/
}