Любая точка на поверхности вашего бокса будет иметь хотя бы одну координату, равную 0,5 или -0,5, а все остальные будут -0,5 <= c <= 0,5. </p>
Итак, найдите координату с наибольшим абсолютным значением, а затем масштабируйте вектор, чтобы сделать эту координату равной +/- 0,5.
Что-то вроде этого может работать:
if (fabs(x) > fabs(y) && fabs(x) > fabs(z))
y *= 0.5 / fabs(x)
z *= 0.5 / fabs(x)
x *= 0.5 / fabs(x)
else if (fabs(y) > fabs(z))
x *= 0.5 / fabs(y)
z *= 0.5 / fabs(y)
y *= 0.5 / fabs(y)
else
x *= 0.5 / fabs(z)
y *= 0.5 / fabs(z)
z *= 0.5 / fabs(z)