Положение пересечения трехмерного вектора и куба - PullRequest
3 голосов
/ 06 июля 2010

В данный момент у меня полное сознание.

У меня есть куб (воксель), который определяется центральной точкой, а ширина, высота и глубина равны 1. Есливектор с началом координат в центре поля (например, (-0,7, -0,7, -0,7)), как рассчитать точку, в которой вектор пересекает внешнюю часть поля?всегда выровнен по оси.Проблема в 3d.

Спасибо

1 Ответ

2 голосов
/ 06 июля 2010

Любая точка на поверхности вашего бокса будет иметь хотя бы одну координату, равную 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...