Подобный материал:
- Новосибирский Государственный Технический Университет. Факультет автоматики и вычислительной, 1650.9kb.
- Рабочая программа для специальности: 220400 Программное обеспечение вычислительной, 133.96kb.
- Государственный Технический Университет. Факультет: Автоматики и Вычислительной Техники., 32.46kb.
- Образования Республики Молдова Колледж Микроэлектроники и Вычислительной Техники Кафедра, 113.64kb.
- Постоянное развитие и углубление профессиональных навыков в области информационных, 54.56kb.
- «Программное обеспечение вычислительной техники и автоматизированных систем», 1790.14kb.
- Задачи дисциплины: -изучение основ вычислительной техники; -изучение принципов построения, 37.44kb.
- Лекция №2 «История развития вычислительной техники», 78.1kb.
- Система контроля и анализа технических свойств интегральных элементов и устройств вычислительной, 582.84kb.
- Московский государственный инженерно-физический институт (технический университет), 947.05kb.
0.1.4 Эффективность преобразований
Суммарная матрица двумерных преобразований в однородных координатах имеет вид:
где элементы A, B, D и E, отвечающие за изменение масштаба, поворот и смещение, - объединенная матрица масштабирования и поворота, а L и M определяют суммарный сдвиг.
Вычисление преобразованных однородных координат точки P с непосредственным использованием T в выражении P ·T требует 9 операций умножения и 6 операций сложения. Но так как третья однородная координата может быть выбрана равной 1, а третий столбец T содержит единственный ненулевой элемент, равный 1, то преобразование декартовых координат может быть представлено в виде:
Xn = X ·A + Y ·D + L, Yn = X ·B + Y ·E + M, | |
что требует уже только 4 операции умножения и 4 операции сложения, что существенно меньше. Таким образом, несмотря на то, что матрицы 3×3 удобны при вычислении суммарного преобразования, выполнение фактического преобразования координат следует производить с учетом реальной структуры матрицы преобразования.
0.1.5 Трехмерные координаты
Далее при рассмотрении трехмерных преобразований, в основном, используется общепринятая в векторной алгебре правая система координат (рис. а). При этом, если смотреть со стороны положительной полуоси в центр координат, то поворот на +90
(против часовой стрелке) переводит одну положительную ось в другую (направление движения расположенного вдоль оси и поворачивающегося против часовой стрелки правого винта и положительной полуоси совпадают). В некоторых, специально оговариваемых случаях, используется левая система координат (см. рис. б). В левой системе координат положительными будут повороты по часовой стрелке, если смотреть с положительного конца полуоси. В трехмерной машинной графике более удобной является левая система координат. Тогда если, например, поверхность экрана совмещена с плоскостью XY, то большим удалениям от наблюдателя соответствую точки с большим значением Z (см. рис. б).
Рис. 0.1.1: Правая а) и левая б) системы координат
Работа с однородными трехмерными координатами и матрицами преобразования (формирование и композциция) подобна таковой для двумерного случая, поэтому здесь будут рассмотрены только матрицы преобразований сдвига, масштабирования и поворота и пример конструирования матрицы преобразования по известному его результату.
Подобно тому как в двумерном случае точка в однородных координатах представляется трехмерным вектором [ x y w ], а матрицы преобразований имеют размер 3×3, для трехмерного случая точка представляется четырехмерным вектором [ x y z w ], где w не равно 0, а матрицы преобразований имеют размер 4×4. Если w не равно 1, то декартовые координаты точки (X,Y,Z) получаются из соотношения:
[ X Y Z 1 ] = [ (x/w) (y/w) (z/w) 1 ]. | |
Преобразование в однородных координатах описывается соотношением
[ xn yn zn wn ] = [ x y z w ] ·T. | |
Матрица преобразования T в общем случае имеет вид
| |
|
|
| | . | |
Подматрица 3×3 определяет суммарные смещение, масштабирование и поворот. Подматрица-строка 1×3 - [ L M N ] задает сдвиг. Подматрица-столбец 3×1 - [ P Q R ] отвечает за преобразование в перспективе. Последний скалярный элемент - S определяет общее изменение масштаба.
В частности, матрица сдвига имеет вид:
T(Tx, Ty, Tz) = | |
|
|
| | . | |
Матрица обратного преобразования для сдвига получается путем смены знака у Tx, Ty и Tz.
Матрица масштабирования относительно центра координат имеет вид:
S(Sx, Sy, Sz) = | |
|
|
| | . | |
Матрица обратного преобразования для масштабирования формируется при замене Sx, Sy и Sz на величины, обратные к ним.
Ранее рассмотренная для двумерного случая матрица поворота (
11) является в то же время трехмерным поворотом вокруг оси Z. Так как при трехмерном повороте вокруг оси Z (поворот в плоскости XY) размеры вдоль оси Z неизменны, то все элементы третьей строки и третьего столбца равны 0, кроме диагонального, равного 1:
Rz(z) = | |
|
|
| | . | |
При повороте вокруг оси X (в плоскости YZ) размеры вдоль оси X не меняются, поэтому все элементы первой строки и первого столбца равны 0, за исключением диагонального, равного 1:
Rx(x) = | |
|
|
| | . | |
При повороте вокруг оси Y (в плоскости XZ) размеры вдоль оси Y не меняются, поэтому все элементы второй строки и второго столбца равны 0, за исключением диагонального, равного 1:
Ry(y) = | |
|
|
| | . | |
Столбцы и строки подматриц 3×3 матриц поворота Rx, Ry, Rz, аналогично двумерному случаю, представляют собой взаимно ортогональные единичные векторы. Легко убедиться, что суммарная матрица преобразования для произвольной последовательности поворотов вокруг осей X, Y и Z имеет вид:
причем столбцы (и строки) представляют собой взаимно ортогональные единичные векторы. Более того, векторы-столбцы при повороте, задаваемом матрицей, совмещаются с соответствующими осями координат. Матрица, столбцы (или строки) которой представляют собой взаимно ортогональные векторы, называется ортогональной. Для любой ортогональной матрицы М обратная матрица совпадает с транспонированной. Это обеспечивает простоту вычисления обратного преобразования для поворота. Причем не надо фактически выполнять транспонирование, а достаточно просто поменять местами индексы строк и столбцов.
Взаимная ортогональность столбцов матрицы поворота и их совмещение с осями координат при преобразовании, задаваемом матрицей, позволяет легко сконструировать матрицу преобразования, если известны его результаты.
Пример формирования матрицы преобразования (из [])
Пусть заданы три точки P
1, P
2, P
3. Найти матрицу преобразования такого, что после преобразования вектор
P1P2 будет направлен вдоль оси Z, а вектор
P1P3 будет лежать в плоскости YZ.
- Вначале надо сместить начало координат в точку P1 с помощью преобразования
- Единичный вектор, который должен лечь вдоль оси Z
Rz = [r1z r2z r3z] = P1P2 / P1P2. | |
- Здесь P1P2 - длина вектора P1P2.
- Вектор, перпендикулярный плоскости, построенной на векторах P1P2 и P1P3, должен быть направлен вдоль оси X, так как вектор P1P2 лежит вдоль оси Z, а вектор P1P3 лежит в плоскости YZ. Этот вектор задается векторным произведением
Rx = [r1x r2x r3x] = | P1P2 ×P1P3
P1P2 ·P1P3 | . | |
- Наконец, вдоль оси Y должен быть направлен вектор, перпендикулярный к векторам Rx и Rz:
Ry = [ r1y r2y r3y ] = Rz ×Rx. | |
- Искомая матрица есть
M = T(-x1,-y1,-z1) · | |
|
|
| | . | |