Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Челебаев_ответы_КГГ.doc
Скачиваний:
4
Добавлен:
25.11.2018
Размер:
714.24 Кб
Скачать

6. Трехмерные преобразования.

Однородные координаты в трехмерном случае записывают в виде или . Таким образом, любая точка пространства, кроме начала координат, может быть задана четверкой одновременно не равных нулю чисел. Матрицы преобразований в этом случае имеют размер 4х4.

Матрицы поворота.

Повороты вокруг осей абсцисс, ординат и аппликат на угол α соответственно имеют вид:

, , .

Матрицы масштабирования и переноса имеют вид:

и .

Обратите внимание, что все матрицы преобразования не вырождены.

Пример.

Выполнить поворот точки на угол α вокруг прямой L, проходящей через точку (a,b,c), параллельной вектору (l,m,n). Считаем, что вектор единичной длины.

1 шаг.

Сдвиг точки в начало координат (или начала координат в точку (a,b,c)):

.

Теперь прямая L проходит через начало координат.

2 шаг.

Совместим ось аппликат с прямой, вокруг которой нужно выполнить поворот.

1. Сначала выполним поворот вокруг оси абсцисс так, чтобы прямая лежала в плоскости z0x (или поворачиваем систему координат). Угол поворота равен углу между осью аппликат и проекцией L1 прямой на плоскость z0y.

Рис. 1. Схема определения угла первого поворота

Вектор проекции имеет направляющую (0,m,n). Тогда косинус искомого угла определяется так:

.

Матрица поворота имеет вид:

.

Если пересчитать координаты вектора, параллельно которой лежит теперь прямая, получим:

.

Нетрудно проверить, что вектор имеет единичную длину.

2. Выполним поворот вокруг оси ординат на угол.

Теперь прямая лежит на плоскости z0x.

Рис. 2. Результат поворота вокруг оси абсцисс.

Угол поворота вокруг оси ординат определяется соотношениями:

.

Матрица поворота имеет вид:

.

3 шаг.

Теперь можем выполнить поворот на угол α вокруг прямой L. Прямая совпадает с осью аппликат, поэтому матрица поворота имеет вид:

.

Все необходимые операции поворота выполнены:

.

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

4 шаг.

Выполняем обратный поворот вокруг оси ординат:

.

Здесь мы пользуемся тем, что матрица ортогональная и ее обратная совпадает с ее транспонированной.

5 шаг.

Выполняем обратный поворот вокруг оси абсцисс:

.

Здесь опять пользуемся тем, что матрица ортогональная и ее обратная совпадает с ее транспонированной.

6 шаг.

Выполняем обратный перенос.

.

Обратную матрицу вычислять не нужно. Она, как и следовало ожидать, равна:

.

Если нужно повернуть множество точек на угол α вокруг прямой L, проходящей через точку (a,b,c), параллельной вектору (l,m,n), то выгодно изначально вычислить одну матрицу преобразования

и умножить на эту матрицу все точки.

Точно также все сложные преобразования приводятся к композиции элементарных преобразований.

7. Трехмерные системы координат.

На разных этапах обработки объектов используются различные системы координат. Используются следующие основные системы координат:

  1. Координаты модели.

  2. Мировые координаты.

  3. Координаты камеры.

  4. Координаты перспективы.

  5. Экранные координаты.

Координаты модели (локальные координаты)

Объект описывают в его собственной системе координат и, только затем, переносят в реальное положение. При этом объектом может быть и часть рассматриваемого объекта. Суть описания в локальной системе координат заключается в том, что для каждого объекта локальная система наиболее удобна для описания его свойств.

Например, пусть рука робота описывается с помощью двух деталей (рис. 1).

Рис. 1. Пример локальных систем координат объектов

Каждую часть руки (объект) удобно описывать в своей локальной системе координат.

СОГЛАШЕНИЯ

Существуют соглашения ориентации:

  1. Передняя часть объекта ориентирована вдоль положительного направления оси z, а верх – вдоль положительного направления оси y.

  2. Программное обеспечение само определяет первую главную ось (вдоль наибольшей длины) и согласовывает с положительным направлением оси y, а вторую главную ось согласовывает с положительным направлением оси z.

Первый способ предпочтительнее, так как главные оси объекта не всегда имеют максимальные длины.

Существуют соглашения масштабирования. Это связано с тем, что на этапе создания объекта часто используют нормализованные размеры. Например, и мяч и астероид на этапе создания на экране могут иметь одни и те же размеры.

Левая или правая система координат. Обе системы равноправны, нельзя только путаться затем в формулах. Это касается положительного направления оси z. Чаще всего используют левую систему координат, когда положительное направление оси z внутрь экрана.

Мировые координаты

Трехмерные модели объектов размещают в единой сцене – в системе мировых координат. Координаты объекта переопределяют (не изменяя или сохраняя локальные координаты) в мировых координатах путем переноса. Для поворота или масштабирования объект сначала преобразуют в локальных координатах и, только затем, переносят в мировые координаты.

Координаты камеры

Камеру располагают обычно в левой мировой системе координат. Характеристики камеры задают следующие параметры:

1. Положение определяют координатами (cam_x, cam_y, cam_z).

2. Ориентацию задают углами поворота (вокруг оси x – тангаж – α, вокруг оси y – рыскание – β, вокруг оси z – крен – γ). Для пояснения углов поворота приняли, что камера смотрит в положительном направлении оси z, верх камеры – в положительном направлении оси y. Конечно, камера может быть ориентирована и по-другому, но смысл и название углов остаются.

3. Поле обзора камеры ограничено в горизонтальном и вертикальном направлении в пределах 60-130°.

4. Имеются ближняя и дальняя плоскости отсечения, между которым находятся видимые для камеры объекты.

5. Плоскость проекции – это математическая плоскость, на которую проецируются изображения трехмерных объектов. Естественно, для нас эта плоскость совпадает с экраном дисплея.

Камера обычно располагается не в начале мировых координат. Для проецирования объектов на плоскость проекции удобнее, если мы перенесем начало координат в центр объектива камеры. При этом нужно выполнить такой же перенос всех видимых для камеры объектов реального мира.

Точно также камера практически всегда имеет ненулевые значения углов поворота. До поворота обязательно нужно переместить начало мировых координат в центр координат камеры. После этого можно повернуть мировые координаты и все видимые объекты так, чтобы углы поворота камеры оказались нулевыми, и камера смотрит в положительном направлении оси z, верх камеры – в положительном направлении оси y. При этом наиболее часто поворот выполняют последовательно сначала вокруг оси y, затем вокруг оси x, и только потом вокруг оси z. Это подобно тому, что человек при поиске поворачивает голову сначала влево-вправо, затем вверх-вниз, и только в последнюю очередь покачивает головой от плеча к плечу. Реже выполняют повороты в последовательности zyx. Можно поступать и по-другому – выполнять поворот сначала на максимальный угол.

Этапы преобразований координат

  1. Объекты описывают в локальных координатах.

  2. Объекты размещают в мировых координатах. Описания в локальных и мировых координатах хранятся по отдельности.

  3. Мировые координаты переводят в координаты камеры (рис. 2).

  4. Удаляют скрытые объекты.

  5. Видимые объекты проецируют на плоскость проецирования (экран просмотра).

Рис. 2. Трехмерная область обзора

Плоскость проецирования

Для построения проекций наиболее важны угол обзора и расстояние просмотра (рис. 3). Для упрощения расчетов выберем угол обзора в 90°.

Рис. 3. Схема области обзора на плоскости x0z.

Рассмотрим расчет проекции (xd,yd,zd) точки (x0,y0,z0) (рис. 4).

Рис. 4. Центральная проекция точки на плоскость проекции

Вычислим значения xd и yd:

,

Очевидно, что zd=d.

Это проецирование в однородных координатах имеет следующий вид:

.

Для перехода из однородных координат в декартовы, поделим координаты на :

.

На практике используют следующие два способа при выборе значения d. Условно эти способы можно назвать «нормализованный экран» и «естественный экран» просмотра.

Способ нормализованного экрана

Если хотят упростить математические расчеты, принимают значение d=1 и, в конечном счете, получают нормализованные координаты плоскости. Другими словами, все проецируемые точки попадают в диапазон [-1,1] как по оси x, так и по оси y. Затем потребуется дополнительная проекция плоскости проекции в координаты экрана. При этом на экране также придется отображать в квадратную область, иначе будут искажения изображения по одной из координат.

Способ естественного экрана

Если хотят получить, например, экран просмотра с размерами 640*480, выбирают значение d так, чтобы поле обзора по оси x в 90° и все проекции находились в указанном диапазоне:

.

Здесь W – ширина экрана, - угол обзора камеры.

Это же значение нужно использовать и для оси y. Для этого используют значение форматного отношения γ. Для экранов размером 640*480, 800*600, 1024*768 форматное отношение равно 1.33333, для 1280*1024 и 1600*1280 - равно 1.25.

Тогда формулы расчета принимают вид:

.

Матрица преобразования имеет вид

.

Убедимся в справедливости этой формулы.

Для перехода из однородных координат в декартовы, поделим все координаты на :

.

Что и требовалось доказать.

Экранные координаты

Вычисление экранных координат зависит от способа выбора значения d.

В случае d=1 и поле обзора в 90° мы имеем квадратную плоскость проекции размером 2*2. В более общем случае, когда учитывается форматное отношение размер плоскости проекции равен 2*(2/γ). Поскольку форматное отношение уже учтено при проецировании, то его не нужно учитывать при переходе в экранные координаты.

Все преобразования нужно выполнять относительно центра экрана.

Расчетные формулы будут иметь вид:

В более компактной форме:

Здесь:

Точка (α,β) представляет собой центр экрана.

Матрица преобразования имеет вид

.

В случае произвольного угла обзора и расстояния до плоскости проекции значение d вычисляется по формуле

.

Плоскость проекции имеет размеры по оси x [-1,1] и по оси y [-1/γ, 1/γ]. Если объединить проецирование и преобразование в экранные координаты, в расчетных формулах форматное отношение сокращается. Конечная расчетная формула имеет вид

Матрица преобразования имеет вид

.

Эти расчеты не учитывают тот факт, что после проецирования на плоскость проекции из однородных координат осуществляется переход в декартовы. При расчетах вручную все кажется простым. Достаточно выполнить эти преобразования и проверить результат, чтобы убедиться в несправедливости расчетов.

Единая матрица преобразования имеет вид

Теперь умножение правильное:

.

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