Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по КГ.doc
Скачиваний:
16
Добавлен:
12.09.2019
Размер:
17.06 Mб
Скачать

Формальный подход

Формально матрица Р0 восстанавливается из первого уравнения

применением обратной матрицы. Для произвольной квадратной матрицы М

Обратная, как известно из курса алгебры, вычисляется по формуле:

Где Aij – алгебраические дополнения компонентов mij исходной матрицы. Поскольку и detM, и Aij – это определители, то понятно, что вычисление обратной матрицы размерности 4х4 является трудоемкой вычислительной задачей.

Но, к счастью…

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

Обратная матрица для масштабирования:

Поскольку матрица поворота R является ортогональной (вспомните определение ортогональной матрицы), то обратная получается транспонированием исходной:

Согласитесь, описанные способы получения обратных матриц несравненно проще вычисления определителей!

КОМПОЗИЦИЯ НЕСКОЛЬКИХ ПРЕОБРАЗОВАНИЙ

Пример 1

Предположим, дана некая фигура (домик), и мы хотим повернуть ее на заданный угол вокруг точки, не являющейся началом координат.

«Наивное» применение матрицы R к точкам фигуры дает очевидно неправильный результат.

ПРАВИЛЬНОЕ РЕШЕНИЕ

Правильное решение состоит в последовательном выполнении трех шагов, как показано ниже.

  1. 2) 3)

Пример 2

Для самостоятельной работы предлагаются еще два примера.

Пример 3

Последовательность выполнения этих сложных преобразований предлагается расписать самостоятельно.

КОММУТАТИВНОСТЬ ПРЕОБРАЗОВАНИЙ

Рассмотрим проблему: имеет ли значение последовательность выполнения отдельных составляющих элементарных операций? Если принять для простоты, что операций две, то положительный ответ на вопрос

означает, что порядок выполнения Т1 и Т2 безразличен. На языке математики говорят, что в этом случае произведение матриц коммутативно.

В общем случае произведение матриц НЕкоммутативно. Но, если оговориться, что сомножителями матричного произведения когут быть матрицы ТОЛЬКО видов Т, S и R, то существуют четыре частных случая, когда коммутативность имеет место. Вот они:

М1

М2

Перенос Т1

Перенос Т2

Поворот R1

Поворот R2

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

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

Масштабирование при Sx=Sy

Поворот R

В этих случаях коммутативно.

Пример: отображение окна в окно Постановка задачи

Точка и охватывающее ее окно заданы координатами в пространстве задачи (в оперативной памяти компьютера). Надо отобразить окно и точку из пространства задачи в окно и точку на экране компьютера (графический порт вывода). Положение порта вывода на экране тоже задано.

Решение

Задача будет решаться путем применения к исходной системе координат таких преобразований, чтобы в их итоге исходная пошагово преобразуемая система координат совпала с системой координат графического порта вывода. В силу принципа относительности движения матрицы преобразования системы координат на каждом шаге будут являться обратными для матриц, которые могли бы применяться для соответствующих преобразований точки Р, но при неизменной системе координат.

Шаг 1. Исходное окно прижимает к началу координат нижним левым углом.

Шаг 2. Масштабируем исходное (красное) окно до размеров целевого (синего) окна.

Шаг 3. Ориентацию исходной (красной) системы координат меняем в правой на левую изменением направления вертикальной координатной оси. Это нужно потому, что целевая (экранная) система координат трдиционно является левой.

Шаг 4. Целевое (красное) окно в совмещенной системе координат совмещаем с целевым (синим) окном. Задача решена.

Применяя цепочку матриц преобразования, полученную в этих четырех шагах, к произвольной точке Р, можно найти координаты ее отображения в порте вывода. Следует дополнительно учитывать, что исходные координаты являются вещественными числами, а экранные – целыми, откуда понятно применение округления:

ИТОГИ

  1. Базовыми координатными преобразованиями являются перенос, масштабирование и поворот. Все они удобно описываются матричными уравнениями.

  2. Для придания уравнениям преобразований УНИФИЦИРОВАННОГО вида пользуются так называемыми ОДНОРОДНЫМИ координатами точек, с дополнительной условной координатой 1. Тогда все операции сводятся к умножению матриц.

  3. Неподвижной точкой всех преобразований является начало координат. Поэтому при выполнении комбинированных преобразований приходится точки поворота и центры масштабирования предварительно совмещать с началом координат.

  4. В основе матриц всех базовых преобразований лежит ЕДИНИЧНАЯ матрица. Это сильно упрощает нахождение матриц обратных преобразований, что бывает нужно при программировании операций отмены выполненных преобразований (undo, отмена действия).

6 ГЕОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ ТРЕХМЕРНЫХ ТЕЛ

ПЛАН РАЗДЕЛА

  1. Моделирование разложением пространства на элементы

  2. Конструктивная пространственная геометрия

  3. Граничное представление

Почему необходимо моделировать?

Реальный мир - бесконечно разнообразен. Мир компьютерный- ограничен. Поэтому для создания возможности обрабатывать трехмерные сцены ограниченными возможностями компьютера приходится разрабатывать специальные приемы и технологии, то есть создавать МОДЕЛИ реальных трехмерных объектов и способы манипулировать ими.

МОДЕЛИРОВАНИЕ ТРЕХМЕРНЫХ ТЕЛ РАЗЛОЖЕНИЕМ ПРОСТРАНСТВА НА ЭЛЕМЕНТЫ

ВОКСЕЛЬНОЕ ПРЕДСТАВЛЕНИЕ

Элемент картинки = PICTURE ELEMENT, используется термин Pixel.

Если по аналогии объем тела поделить на элементарные «кубики», то возникает понятие

Элемент объема = VOLUME ELEMENT, который называют Voxel

Пример воксельного представления тела.

Размерность сцены - Xmax, Ymax, Zmax .

TBody = array[1..Xmax, 1..Ymax, 1..Zmax ] of boolean;

Body1, Body2 : TBody;

Пример описания двух тел массивами инцидентности воксеов.

Body1 = {0000000000001111111111111111100};

Body2 = {0011111111000000000000000000000};

Достоинством этого метода является легкость описания теоретико-множественных операций c телами (пересечь, объединить, вычесть…).

Недостатки:

  1. Информация о поверхности тела в описании содержится неявно.

  2. Большой расход памяти.