- •Изображение трехмерных объектов
- •Проекции
- •Композиция 3d преобразований
- •Уравнения плоских кривых
- •Параметрические уравнения прямых и кривых
- •Специальные методы трехмерного интерактивного графического моделирования
- •Методы интерактивного графического взаимодействия
- •Устройства ввода
- •Методы моделирования логических устройств
- •Технические средства мг. Устройства вывода изображения
Композиция 3d преобразований
Объединением элементарных 3D преобразований можно получить сложные пре-образования,
выполняемые над объектами в моделируемой сцене. Пример сложного преобразования рассмотрим
на практической задаче.
Задача:
Преобразовать отрезки [P1P2] и [P1P3] из начальной позиции в конечную. P1 в начало координат,
P1P2 вдоль оси Z, P1P3 в плоскости YOZ, где ось Y положительна. На длины
отрезков преобразования не влияют.
Этапы решения:
1. Перенос точки P1 в начало координат.
2. Поворот вокруг оси Y до совмещения P1P2 c плоскостью YOZ.
3. Поворот вокруг оси X до совмещения P1P2 c отрицательным Z.
4. Поворот вокруг оси Z до совмещения P1P3 c плоскостью YOZ.
Шаг 1.
Перенос P1 в 0
Применение переноса к P1, P2, P3 дает следующие результаты:
Шаг 2.
Поворот вокруг оcи Y. Поворот на положительный угол 0 для которого:
Подставим эти выражения в матрицу Ry(0), тогда
Как и ожидалось x-компонента P2''=0.
Шаг 3.
Поворот вокруг оси X. Рисунок после второго шага.
Шаг 4.
Рисунок после шага 3.
Матричное представление 3D преобразований
По аналогии с 2D преобразованиями, которые описываются матрицами 3x3, 3D преобразования
могут быть представлены в виде матриц 4x4. И тогда трехмерная точка (X, Y, Z) записывается в
однородных координатах как (W*X, W*Y, W*Z, W), где W=/0. Если W=/1 для получения декартовых
координат точки (X, Y, Z) первые три ко-ординаты делятся на W. Две точки H1 и H2 в пространстве
однородных координат описывают одну и ту же точку 3D пространства только в том случае, если
H1=cH2 для любой константы с=/0 Система координат правосторонняя. Перевод каждой
положительной полуоси в другую, осуществляется против часовой стрелки.
В машинной графике, часто удобнее использоваться левосторонней системой ко-ординат.
Это позволяет легко интерпретировать тот шаг, что точки с большим Z нахо-дятся дальше
от наблюдателя.
Отметим, что в левосторонней системе координат положительными поворотами будут
повороты, выполняемые по часовой стрелке.
Трехмерный перенос
Трехмерный перенос является простым расширением двумерного:
Масштабирование
Поворот
Двумерный поворот, описанный ранее, является в тоже время трехмерным пово-ротом вокруг
оси Z. В 3D поворот относительно Z описывается следующим образом:
Это легко проверить: в результате поворота на 90гр. вектора [1 0 0 1], являющегося единичным
вектором оси X, должен получиться единичный вектор оси Y [0 1 0 1]. Вычисляя произведение
получаем предсказанный результат. Матрица поворота вокруг оси X имеет вид
Матрица поворота вокруг оси Y записывается в виде
Симметрия относительно оси проходящей через начало координат
В матричном виде преобразование симметрии записывается
Если ось симметрии наклонена к оси ОX под углом алфа, угол положительный
при вращении против часовой стрелке, то 0(тетта)=2алфа
Согласно этому симметрия относительно осей ОX и ОY осуществляется матрицами
Симметрия относительно осей Y = X, Y = -X осуществляется матрицами
Симметрия относительно оси, не проходящей через начало координат
Пусть ось симметрии наклонена к оси ОX под углом алфа и пересекает ее в точке X = m.
Тогда преобразование выполняется как последовательность преобразований :
1. Сдвиг оси симметрии параллельно себе в начало координат.
2. Симметрия относительно оси проходящей через начало координат.
3. Возврат оси в исходное положение.
Результирующее преобразование имеет вид:
где 0(тетта)=2алфа
Однородные координаты и композиция матричных преобразований
В матричном виде преобразования записываются таким образом:
Можно отметить, что перенос, к сожалению, реализуется сложением, а поворот и
масштабирование с помощью умножения. Желательно представлять все три преобразования
таким образом, чтобы их можно было легко объединять.
Если мы выразим точки в однородных координатах, то все три преобразования можно
реализовать с помощью умножения.
В однородных координатах точка P(X,Y) записывается как P(w*X,w*Y,w), для любого
масштабного множителя w=/ 0, при этом, если для точки задано представление в однородных
координатах P(X,Y,w), то можно найти ее двумерные декартовы координаты как X=X/w; Y=Y/w
Мы будем рассматривать случай, когда w =1, поэтому операции деления не требуется.
Точки теперь описываются тремя элементарными вектор-строками. Поэтому матрицы
преобразований, на которые умножаются вектор точки, должны иметь размерность3х3.
Уравнение переноса будет иметь вид:
где
Перенос аддитивен:
Уравнение масштабирования в матричной форме записывается:
Масштабирование мультипликативно:
Уравнение поворота:
Поворот аддитивен.
Вращения вокруг произвольного центра
Осуществляется поворот вокруг точки с координатами X = m, Y = n на
угол 0(тетта) против часовой стрелки.
Преобразования выполняется как последовательность трех преобразований :
1. Сдвиг центра вращения в начало координат.
2. Поворот на угол 0 вокруг начала координат.
3. Сдвиг центра вращения в исходное положение.
Матрицы аффинных преобразований не зависят от преобразуемых точек.
Результирующее преобразование записывается в виде:
Преобразования на плоскости
Точки на плоскости XOY можно перенести в новые позиции путем добавления к
координатам этих точек констант переноса. Для каждой точки P(X,Y), которая
перемещается параллельно оси X на Dx и параллельно Y на Dy, можно записать уравнения
X'= X + Dx ; Y'= Y + Dy , Dx=4, Dy=5.
Вышеприведенные положения точек можно записать через вектор строки: P=[X; Y] P'=[X'; Y']
T=[Dx; Dy] . Уравнение можно переписать в векторной форме: [X', Y']=[X, Y]+[Dx, Dy],
или кратко P'=P+T, где Т- матрица переноса.
Поворот
где R- матрица поворота.
Положительными считаются углы, измеренные против часовой стрелки. В случае отрицательных
углов можно воспользоваться тождеством для модификации уравнений:
Уравнения (*) легко получаются из примера:
Масштабирование
Объекты можно промасштабировать, т.е. растянуть в к раз вдоль оси X и к вдоль оси Y,
олучив в результате новые точки, где Kx , Ky - коэффициенты масштабирования вдоль осей.
Различают однородные (Kx = Ky ), и неоднородные: (Kx =/ Ky ) масштабирования.
Преобразование
определяет матрицу масштабирования
Запишем
Величина вектора. Единичный вектор
Декартовы компоненты вектора
Для заданной прямоугольной системы координат можно ввести единичные векторы, идущие вдоль
положительной полуоси X,Y,Z и, как правило, обозначающиеся i, j, k. Вне зависимости от
комбинации перемещений результирующий вектор a не изменится: a= a1+a2+a3.
Уравнение прямой линии
Явное уравнение прямой линии имеет вид Y=mX+с, где m - тангенс угла наклона;
c - точка пересечения с осью Y.
Это явное уравнение для Y позволяет вычислить Y при любом значении Х. Однако у этого
уравнения есть один недостаток: с его помощью нельзя описать вертикальные прямые,
например X=1. Если прямая проходит через две заданные точки (Х1;Y1) и (Х2;Y2), то явное
уравне-ние можно переписать:
или записать (X2 - X1)(Y - Y1)=(Y2 - Y1)(X - X1). Здесь уравнение прямой имеет неявный вид.
Это неявная форма задания прямой дает возможность описывать вертикальные пря-мые: если
X2=X1, а Y2=/Y1, то мы получаем уравнение вертикальной прямой X=X1.
В общем виде уравнение прямой записывается: aX+bY+c=0.
aX+bY+c=0 - уравнение вертикальной прямой, если b=0.
