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


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

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


2.2. Преобразование объектов
Преобразование объектов можно описать так. Пусть любая точка, которая принадлежит определенному объекту, имеет координаты (к1, к2 ..., кn)
в n-мерной системе координат. Тогда преобразование объекта можно определить как изменение положения точек объекта. Новое положение точки пространства отвечает новым значениям координат(m1, m2, ..., mn).
Соотношение между старыми и новыми координатами для всех точек объекта (m1, m2, ..., mn)
= F(к1, к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 в разделе программирования). Однако, как представляется, более ясным здесь выглядит использование операций перемещения точки (из положения Р" в Р′, а затем в Р).
