ВВЕДЕНИЕ
1.1. Предположения и соглашения
Предполагается, что читатель имеет какие-то основные сведения о компьютерной
графике. Предполагается, что объект, состоящий из треугольных граней с
наложенными на них текстурами, есть достаточно реалистичная и относительно
простая модель. Также предполагается, что этот самый читатель способен
воспринимать тот менторский тон, в котором, видимо, будет выдержана большая
часть этого FAQ.
Рекомендуется наличие у читателя неких базовых познаний в стереометрии
и линейной алгебре, а также программировании. Например, довольно сильно
рекомендуется умение нарисовать одноцветный 2D треугольник.
Соглашения - следующие. Система 3D координат используется такая:
Здесь буквами x, y, z обозначены положительные направления осей Ox, Oy и Oz
соответственно. Также предполагается, что камера неподвижна и находится в
точке (*) с координатами (0,0,-dist), ось зрения камеры направлена по оси Oz,
а именно в точку (0,0,0) (т.е. camera target = (0,0,0)), ось Ox с точки
зрения камеры направлена слева направо, ось Oy - снизу вверх, ось Oz - вглубь
экрана. Размер экрана - xSize на ySize пикселов.
Проецирование на плоскость экрана в этом случае будет осуществляться по
формулам
sx = xSize/2+x*dist/(z+dist),
sy = ySize/2-y*dist/(z+dist).
Здесь и далее используются обозначения:
sx, sy | координаты проекции точки на экране |
x, y, z | 3D координаты точки, |
dist | расстояние от камеры (она находится в точке (0,0,-dist)) до начала координат, |
u, v | координаты в текстуре (u - по горизонтали, v - по вертикали). |