В этом разделе будет собрана информация, с которой необходимо ознакомиться для более полного понимания рассуждений и обоснований на других страницах сайта.
Выпустим луч, проходящий через точку наблюдателя \(p_0(x_s, y_s, z_s)\) ( \( s \) - spectator) и середину пикселя \(p'(x', y', z')\) экранной плоскости. Тогда координаты произвольной точки \(p(x, y, z)\), лежащей на этом луче можно вычислить по формуле:
Зададим вектор \( \vec{\Delta} = p' - p_0\) и запишем равносильное тождество в виде системы для каждой координаты точки \(p(x, y, z)\):
Будем задавать куб, произвольно расположенный в пространстве, задав координаты его центра, половину длины стороны, и углов поворота нормалей, сонаправленных с координатными осями, вокруг них.
Наша задача - получить такую матрицу преобразования, чтобы после её воздействия центр куба совместился с началом координат, а векторы нормалей к граням стали коллинеарны координатным осям.
Следует отметить, что ориентация куба в пространстве однозначно определяется его центром и углами поворота нормалей, причём достаточно задать только три попарно ортогональных вектора, поэтому в дальнейшем мы будем говорить именно о повороте нормалей.
Пусть углы поворота нормалей вокруг осей \(Ox, Oy, Oz\) равны \(\alpha, \beta, \gamma\) соответственно. Выведем матрицу преобразования к частному случаю расположения куба - \( M_1 \). Для этого переместим центр куба в начало координат, а затем будем поворачивать его нормали на углы \(-\alpha, -\beta, -\gamma\) вокург осей \(Ox, Oy, Oz\) соответственно. Тогда можно записать матрицу \( M_1 \) в следующем виде:
Отметим, что мы работаем с однородными координатами, поэтому не будем явно прописывать последний (состоящий из нулей и одной единицы на главной диагонали) столбец в матрицах при записи формул.
Аналогичным образом получим и матрицу для обратного преобразования \(M_2\), которая понадобится для преобразования нормалей к граням:
Теперь, для получения точки пересечения луча \( p \) и куба, нужно сделать следующее: