Вот общее решение для прямоугольника, который может быть даже не прямым углом, т.е. общий параллелепипед.
Хитрость в том, чтобы найти преобразование, которое превращает ваш ящик в единичный куб. Если затем вы бросите свой вектор, который хотите проверить с помощью этого преобразования, вам просто нужно проверить, что все X, Y и Z лежат между нулем и единицей.
Рассматривайте угловую точку на вашем ящике как источник. Давайте назовем это K. Теперь построим ваши три главные оси P Q R как векторы, которые проходят вдоль трех ребер, которые касаются этой точки.
Теперь любая точка в трехмерном пространстве может быть представлена как K + aP + bQ + cR . Кроме того, существует только один (a, b, c) , который удовлетворяет.
Если вы можете определить (a, b, c) , вам просто нужно проверить, что каждое из них находится в диапазоне от 0 до 1.
Если кто-то интересуется математикой, дайте мне звонок!