Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Геометрические преобразования.docx
Скачиваний:
5
Добавлен:
21.08.2019
Размер:
5.26 Mб
Скачать

Композиции двумерных преобразований

Но обычно при работе с графической системой объект подвергается сразу не­скольким преобразованиям. Для получения желаемого результата используют композицию преобразований, объединяя матрицы T,S,R. К точке более эффек­тивно применять одно результирующее преобразование, чем ряд преобразований последовательно.

Рассмотрим, например, поворот объекта относительно некоторой точки Р11у1).

Ранее был рассмотрен поворот относительно начала координат. Для решения этой задачи разобьем ее на три части (три элементарных преобразования) (рис. 2.5):

  1. перенос точки Р1 в начало координат - T(-x1,-y1)

  2. поворот – R(Θ)

  3. перенести точку Р1 из начала координат в исходную позицию -T(x1,y1)

Р езультирующее преобразование

Этот пример хорошо иллюстрирует, как применение однородных координат упрощает задачу.

Аналогично, если нужно отмасштабировать объект относительно точки Р11у1), а не начала координат, следует:

  1. перенести точку Р1 в начало координат - T(-x1,-y1)

  2. масштабировать S(Sx,Sy)

  3. перенести точку Р1 назад -T(-x1,-y1)

Рис. 2.5. Поворот объекта относительно точки P1

Результат имеет вид

Если нужно масштабировать, повернуть и расположить в нужном месте домик (центром поворота и масштабирования является точка P1), то необходимо выпол­нить:

  1. перенос точки P1 в начало координат — Т(-x1,-y1)

  2. масштабирование — S(Sx, Sy)

  3. поворот – R(Θ)

  4. перенос точки P1 из начала координат назад Т(х1,,y1)

В структуре данных, в которой содержится это преобразование, могут находиться и масштабный коэффициент S, угол поворота Θ и координаты (x1,y1). И тогда матрица результирующего преобразования будет иметь вид.

T(-x1,-y1)*S(Sx,Sy)*R(Θ)*T(x1,y1)

Матричное представление трехмерных преобразований

Аналогично тому, как двумерные преобразования описываются матрицами раз­мером 3x3, трехмерные могут быть представлены в виде матриц 4 х 4. И тогда трех­мерная точка Р(х, у, z) записывается в однородных координатах как P(W * х, W * y, W * z, W), где W ≠ 0. Если же W- 1, то точка представляется в виде Р(х, у, z, 1).

Перенос

Трехмерный перенос является простым расширением двумерного:

Масштабирование

Расширяется аналогичным образом:

или

Поворот

Двумерный поворот, рассмотренный ранее, является в то же время трехмерным поворотом вокруг оси Z:

Матрица поворота вокруг оси X:

М атрица поворота вокруг оси Y:

  1. Θ 1 - поворот вокруг оси Z до совмещения с плоскостью XZ.

  2. Θ2 - п оворот вокруг оси Y до совмещения с полуосью X.

Композиции трехмерных преобразований

Как и в случае двумерных преобразований, работая с трехмерными можно выполнять более сложные действия путем комбинации элементарных раций. Ниже рассмотрен пример преобразования трехмерного отрезка (рис. 2.7)

Необходимо преобразовать отрезок P1P2 из начальной позиции в конечную таким образом, чтобы точка Р1 совпала с началом координат, а отрезок P1P2 рас­полагался вдоль отрицательной полуоси Z. На длины отрезков преобразование не воздействует.

Для решения этой задачи следует выполнить три шага:

  1. перенос точки Р1 в начало координат (рис. 2.8):

2) поворот вокруг оси У до совмещения отрезка P1P2 с плоскостью YZ (рис. 2.9)

3) поворот вокруг оси X до совмещения отрезка P1P2 с отрицательной полу­осью Z (рис. 2.10).

Матрица преобразования при переносе точки P1 в начало координат имеет вид:

Применим преобразование переноса к точкам P1,P2, P3.

При повороте вокруг оси У на угол Θ (угол положительный) (см. рис. 2.9) опре­деляется:

Где

Подставляя эти выражения в матрицу поворота, находим

Поворот вокруг оси X на угол φ (угол отрицательный) (см. рис. 2.10) выража­ется:

где

Общий результат поворота после выполнения трех действий: