Предыдущая Следующая
Новая локальная система координат значительно упрощает аффинные преобразования объекта в пространстве. Например, чтобы перенести объект с левого верхнего угла экрана в нижний правый угол экрана, необходимо просто перенести его локальную точку отсчета системы координат на новое место. А представьте, если бы не было мировой матрицы и этот объект пришлось переносить по одной вершине из угла в угол телевизора... Поэтому любой объект, а точнее все вершины этого объекта проходят через мировую матрицу преобразования.
Как уже упоминалось, мировое преобразование вершин объекта может состоять из любых комбинаций вращения, трансляции и масштабирования. В математической записи вращение вершины по оси Х выглядит следующим образом:
где £1 — угол вращения в радианах.
Вращение вершины вокруг оси У выглядит так:
270 Основы программирования трехмерной графики
А вращение вокруг оси Z происходит по следующей формуле:
r cosQ sinQ О
- sinQ cosQ О
О 0 1
ч О О О
Трансляция вершины позволяет переместить вершину с координатами x, y, z в новую точку с новыми координатами xl, yl, zl. В математической записи это выглядит так:
xl = x + Tx
yl = У + Ty zl = z + Tz
Трансляция вершины в матричной записи выглядит следующим образом:
' 1 0 0 0 " 0 10 0 0 0 10'
чТх Ту Tz 1
где Tx, Ty и Tz — значения смещения по осям X, Y и Z.
Масштабировать вершину в пространстве (удалять или приближать) с координатами x, y, z в новую точку с новыми значениями xl, yl, zl можно посредством следующей записи:
xl=x x S yl=y x S. zl=z x S
В матричной записи это выражается следующим образом:
'Sx 0 0 0 Л
0 Sy 0 0
0 0 Sz 0 ' к 0 0 0 1 ,
где Sx, Sy, Sz — значения коэффициентов растяжения или сжатия по осям X, Y, Z.
Все перечисленные операции можно делать в исходном коде программы вручную, то есть вычислять приведенные записи так, как мы их только что описали. Но, естественно, так никто не делает (почти никто), потому что в XNA Framework имеется огромное количество методов, которые сделают все вышеприведенные операции за «один присест». В дальнейшем, когда мы начнем работать с объектами, вы познакомитесь с этими методами вплотную и на практике.
Матричные преобразования 271
15.5.2. Матрица вида
Матрица вида - задает местоположение камеры в пространстве, это вторая по счету матрица, на которую умножаются вершины объекта. Эта матрица способствует определению направления просмотра трехмерной сцены. Трехмерная сцена - это все то, что вы видите на экране телевизора. Это как в театре, где вы сидите в портере или на галерке и наблюдаете за действиями на сцене. Так вот, сидя в портере, у вас будет одно местоположение камеры, а сидя на галерке - уже совсем другое. Предыдущая Следующая
|