netlib.narod.ru | < Назад | Оглавление | Далее > |
Самой первой задачей является преобразование точки на экране в координатную систему окна проекции. Матрица преобразования порта просмотра выглядит так:
Применение данного преобразования к точке окна проекции p = (px, py, pz) дает точку экрана s = (sx, sy):
Обратите внимание, что после преобразования порта просмотра координата Z точки не сохраняется как часть двухмерного изображения, а переносится в буфер глубины.
В нашей ситуации нам известна точка экрана s, а мы должны найти точку p. Решая приведенные уравнения мы получаем:
Предполагая, что значения X и Y для порта просмотра равны 0, как обычно и бывает, мы можем упростить формулы и получим:
По определению окно проекции совпадает с плоскостью z = 1; поэтому pz = 1.
Но это еще не все. Матрица проекции масштабирует точки окна проекции, чтобы имитировать различные углы поля зрения. Чтобы получить параметры точки до масштабирования, мы должны инвертировать операцию масштабирования. Для матрицы проекции P коэффициенты масштабирования точки по осям X и Y это элементы P00 и P11, так что мы получаем формулы:
netlib.narod.ru | < Назад | Оглавление | Далее > |