Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KG / КГ_2глава.doc
Скачиваний:
137
Добавлен:
26.05.2014
Размер:
553.98 Кб
Скачать

3. Повороты.

• Поворот вокруг оси х на угол φ (рис. 2.4):

• Поворот вокруг оси у на угол ψ (рис. 2.5):

• Поворот вокруг оси z на угол γ

(рис. 2.6):

2.2. Преобразование объектов

Преобразование объектов можно описать так. Пусть любая точка, которая принадлежит определенному объекту, имеет координаты 1, к2 ..., кn)

в n-мерной системе координат. Тогда преобразование объекта можно опреде­лить как изменение положения точек объекта. Новое положение точки про­странства отвечает новым значениям координат(m1, m2, ..., mn).

Соотношение между старыми и новыми координатами для всех точек объек­та (m1, m2, ..., mn)

= F1, к2 ..., кn) и будет определять преобразование объ­екта, где F— функция преобразования.

Классифицировать преобразования объектов можно согласно типу функции преобразования и типу системы координат.

Например, преобразование объектов на плоскости можно определить так:

В трехмерном пространстве:

Рассмотрим отдельные типы преобразований объектов.

Аффинные преобразования объектов на плоскости

Аффинные преобразования объектов на плоскости описываются так:

где А, В, ..., F — константы; х, у— координаты до преобразования; X, Yновые координаты точек объектов.

Рассмотрим частные случаи аффинного преобразования.

1. Сдвиг (рис. 2.7).

В матричной форме:

Обратное преобразование позволяет рассчитать старые координаты точек объектов по известным новым координатам:

2. Растяжение-сжатие (рис. 2.8).

Необходимо отметить, что это, вероятно, не очень удачное название, так как для некоторых типов объектов размеры и форма не изменяются — на­пример, для точечных объектов. По-другому это преобразование можно назвать масштабированием.

В матричной форме:

Обратное преобразование:

3. Поворот вокруг центра координат (0, 0) (рис. 2.9).

Формулы для обратного преобразования можно получить, если предста­вить себе поворот точки с координатами (X, Y) на угол (-α):

Трехмерное аффинное преобразование объектов

Приведем в виде формулы:

где А, В,..., N —константы.

Рассмотрим частные случаи трехмерного аффинного преобразования объектов, |

1. Сдвиг на dx, dy, dz.

2. Растяжение-сжатие на кх, ку, кz:

3. Повороты.

• Поворот вокруг оси х на угол φ (рис. 2.10):

• Поворот вокруг оси у на угол ψ (рис. 2.11):

• Поворот вокруг оси z на угол γ (рис. 2.12):

Формулы для обратных преобразований не приведены, но их несложно полу­чить по аналогии с преобразованиями, которые рассмотрены выше.

2.3. Связь преобразований объектов с преобразованиями координат

Когда пользователь графической системы видит на экране перемещающийся объект, то, как вы считаете, что на самом деле происходит — перемещаются объекты или система координат в обратном направлении? Например, если в кино вы видите объекты, вращающиеся на экране по часовой стрелке, то мо­жет в действительности это камера поворачивается против часовой стрелки?

Преобразование объектов и преобразование систем координат тесно связаны между собой. Движение объектов можно рассматривать как движение в об­ратном направлении соответствующей системы координат.

Такая относительность для объектов отображения и систем координат дает разработчикам компьютерных систем дополнительные возможности для моделирования и визуализации пространственных объектов. С каждым объект том можно связывать как собственную локальную систему координат, так и единую для нескольких объектов. Это можно использовать, например, для моделирования подвижных объектов.

Обычно, того же самого эффекта можно добиться, если использовать различные подходы. Однако в одних случаях удобнее использовать преобразование координат, а в других — преобразование объектов. Не последнюю роль иг­рает сложность обоснования какого-то способа, его понятность.

Рассмотрим пример комбинированного подхода. Пусть нам нужно получить функцию расчета координат (X У) для поворота вокруг центра с координата­ми оо) (рис. 2.13).

Выше мы рассмотрели поворот относительно центра координат (0, 0). Для решения нашей задачи введем новую систему координат (х',0',у') с центром в точке 0, у0):

Для такой системы поворот точек происходит вокруг ее центра:

(Преобразуем координаты (X', У') в (X,Y) сдвигом системы координат в точку (0,0):

Если объединить формулы преобразований, то получим результат:

Решение этой задачи можно было бы осуществить и в матричной форме:

Рассмотрим второй пример. Нашей задачей будет вывод формул параметри­ческого описания поверхности тора. Изобразим тор следующим образом (рис. 2.14).

Для произвольной точки Р, лежащей на поверхности тора, требуется выра­зить координаты (х, у, z) через константы, описывающие размеры фигуры, а также через некоторые параметры. Для поверхности в трехмерном простран­стве необходимо использовать два параметра. В качестве таковых выберем угловые величины: φ (широта) и ω (долгота).

Непосредственное определение координат точки Р представляется сложным, поэтому искомые координаты будем искать несколькими шагами преобразо­ваний. Рассмотрим окружность, лежащую в плоскости zOy, центр этой ок­ружности совпадает с центром координат. Координаты точки Р" с широтой у составляют

где r — малый радиус тора.

Теперь перенесем окружность на расстояние R (большой радиус тора) по оси у в той же плоскости zOy. Получим точку Р'. Ее координаты:

Окружность, которой принадлежит точка Р', является геометрическим ме­стом точек тора с нулевой долготой ω. Если точку Р' повернуть на угол ω, то получим искомую точку Р поверхности тора с координатами

Подставляя значения (x′, у′, z′) получим искомые формулы

Эту задачу можно было бы решить, используя преобразование координат. Подобный случай мы рассмотрим ниже (пример studex8 в разделе програм­мирования). Однако, как представляется, более ясным здесь выглядит ис­пользование операций перемещения точки (из положения Р" в Р′, а за­тем в Р).

Соседние файлы в папке KG