Введение в программирование трехмерных игр с DX9



Преобразование из экранного пространства в окно проекции


Самой первой задачей является преобразование точки на экране в координатную систему окна проекции. Матрица преобразования порта просмотра выглядит так:


формула 28

Применение данного преобразования к точке окна проекции p = (px, py, pz) дает точку экрана s = (sx, sy):


формула 29

Обратите внимание, что после преобразования порта просмотра координата Z точки не сохраняется как часть двухмерного изображения, а переносится в буфер глубины.

В нашей ситуации нам известна точка экрана s, а мы должны найти точку p. Решая приведенные уравнения мы получаем:


формула 30

Предполагая, что значения X и Y для порта просмотра равны 0, как обычно и бывает, мы можем упростить формулы и получим:


формула 31

По определению окно проекции совпадает с плоскостью z = 1; поэтому pz = 1.

Но это еще не все. Матрица проекции масштабирует точки окна проекции, чтобы имитировать различные углы поля зрения. Чтобы получить параметры точки до масштабирования, мы должны инвертировать операцию масштабирования. Для матрицы проекции P коэффициенты масштабирования точки по осям X и Y это элементы P00 и P11, так что мы получаем формулы:


формула 32





Содержание  Назад  Вперед