Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерная геометрия и графика

..pdf
Скачиваний:
10
Добавлен:
05.02.2023
Размер:
634.52 Кб
Скачать

31

2.3ВРАЩЕНИЕ ВОКРУГ КООРДИНАТНЫХ ОСЕЙ

Вспомним, что на плоскости вращение вокруг оси, проходящей через начало координат и перпендикулярной плоскости, осуществлялось матрицей

cosθ

sinθ

#

0

 

 

 

cosθ

#

0

 

 

−sinθ

 

.

 

 

 

 

 

 

 

 

 

 

0

#

 

 

 

0

1

 

Положительным направлением считается направление против часовой стрелки (если смотреть вдоль этой оси к началу координат!). В трехмерном случае вращение вокруг оси x

Y

Y

X

X Z

Z

Рисунок 2.2

1

0

0

0

 

1 0 0

0

 

 

 

 

 

 

 

 

 

0

cosQ

sin Q

0

, Q = 90D

0

0

1

0 .

 

−sin Q

cosQ

 

 

 

−1 0

 

0

0

 

0

0

0

0

0

1

 

0 0

0

1

то есть первая строка и первый столбец имеют вид [1 0 0 0]

Вокруг оси y аналогично,

32

Y

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

Z

 

 

 

 

 

cosΦ

0

−sin Φ

0

 

0

0

−1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

0

0

, Φ =

90D 0 1 0

0

,

 

 

Φ

0

cosΦ

 

 

 

0

0

 

 

sin

0

 

1

0

 

0

 

0

0

1

 

0 0 0

1

 

Вокруг оси z

Y

X

 

 

 

 

 

Z

 

 

 

 

cosθ

sinθ

0

0

 

0

1

0

0

 

 

 

 

 

 

 

 

 

 

−sinθ

cosθ

0

0

, θ = 90D

−1

0

0

0 .

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

 

0

0

1

0

 

0

0

0

1

0

0

0

1

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

33

2.4 ОТОБРАЖЕНИЕ ОТНОСИТЕЛЬНО КООРДИНАТНЫХ ПЛОСКОСТЕЙ Отображение относительно плоскости x0y меняет лишь знак z

координаты точек. Таким образом,

1

0

0

0

 

 

 

 

 

 

 

0

1

0

0

− отображение относительно x0y ;

 

 

 

−1

 

 

0

0

0

 

0

0

0

1

 

−1

0

0

0

 

 

 

 

 

 

 

 

0

1

0

0

− отображение относительно y0z .

 

 

 

 

 

 

 

0

0

1

0

 

0

0

0

1

 

2.5ПРОСТРАНСТВЕННЫЙ ПЕРЕНОС

Трехмерный линейный перенос изображения определяется выражением:

 

 

 

 

 

 

 

 

 

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

z

 

= [x y z 1]

0

1

0

0

 

x

 

h

 

 

 

 

;

 

 

 

 

 

 

 

 

 

0

0

1

0

 

 

 

 

 

 

 

 

 

 

l m n 1

 

откуда

x

y

 

z

h = [x + l

y + m

z + n

1] ,

 

то есть

 

 

y

 

z

 

 

y + m

z + n

1] ,

x

 

 

1 = [x + l

2.6ТРЕХМЕРНОЕ ВРАЩЕНИЕ ВОКРУГ ПРОИЗВОЛЬНОЙ ОСИ

В двумерном случае вращение вокруг произвольной оси осуществлялось путем композиции преобразований:

переноса начала координат в точку пересечения оси вращения с плоскостью xy ;

вращения вокруг оси;

переноса начала координат в исходное состояние.

34

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

Втрехмерном случае ставится задача вращения вокруг произвольной оси

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

– переноса начала координат в исходное состояние.

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

Втрехмерном случае ставится задача вращения вокруг произвольной оси

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

При этом, однако, ось, проходящая через начало координат, может иметь произвольное направление.

Итак, если ось, вокруг которой выполняется вращение, проходит через

точку

A = [l m

 

n] ,

то

матрица

преобразования однородных координат

определяется как

 

 

 

 

 

 

 

 

1

0

0

0

 

1 0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

R

0 1

0

0

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

0

 

0 0

1

0

 

l m n 1

 

l m n 1

 

Определим элементы матрицы вращения R .

2.7 НЕКОТОРЫЕ СВЕДЕНИЯ ИЗ МАТЕМАТИКИ Направление произвольной оси, проходящей через начало координат,

удобно определять через так называемые направляющие косинусы. Единичный вектор направления задается как

n = n1i + n2 j + n3k,

где n1 = cosα , n2 = cos β , n3 = cosγ

или в векторной форме

35

n = [n1 n2 n3 ];

 

n

 

=1 .

 

 

 

 

 

 

 

 

 

 

j

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β

 

 

 

 

 

 

 

 

α

 

 

 

 

 

 

 

 

 

 

 

 

 

 

γ

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 2.3

 

 

 

Скалярное произведение вектора n на произвольный вектор P

определяется как

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pn =

 

P

 

 

 

 

 

 

 

n

 

cosΩ =

 

P

 

cosΩ (это число).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если P = [x

y

 

z], то

 

 

 

 

 

 

 

Pn = [x y z]

n1

 

 

 

 

 

 

 

 

 

 

 

n

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n3

 

 

 

 

 

 

 

 

Векторное произведение в системе координат (i, j,k ) задается как

 

 

 

 

 

 

 

 

 

 

 

 

 

i

j

 

k

 

 

 

 

 

 

 

 

nP = det

n

n

 

n

 

 

= i(n z n y) + j(n x n z) + k(n y n x) .

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

3

2

3

3

1

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

z

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

nP = [x y z]

 

0

 

 

 

n3

n2

 

 

 

 

 

n

0

n

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n2

 

0

 

 

 

 

При этом справедливо выражение

 

 

 

 

 

 

nP

 

=

 

n

 

 

 

 

 

 

P

 

sin Ω =

 

P

 

sin Ω .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

36

Направление nP перпендикулярно плоскости n0P . Теперь вернемся к получению элементов матрицы вращения R .

Y,Y*

 

 

j

 

n

 

 

 

Q

 

 

Θ

 

 

S

 

Φ

P

P*

 

 

i

X,X*

k

 

 

Z,Z*

 

 

Рисунок 2.4

 

На рисунке 2.4 точка P преобразуется к точке P путем вращения вокруг оси n . Здесь

0P = 0P ; PQ = P Q ;

PQ 0P; P Q 0Q ; P S PQ .

Для получения элементов матрицы R необходимо координаты точки P выразить через координаты точки P , угол поворота θ –и направление оси вращения n .

Из рисунка видно

0Q +QP = P (или Q +QP = P ),

(3.7.1)

QP = QS + SP ,

(3.7.2)

0Q +QP = 0P (или Q +QP = P ) ,

(3.7.3)

Из (3.7.3) следует QP = P Q .

Далее

QS = QP cosθ = QP cosθ = P Q cosθ .

Поскольку направление QS и QP совпадают, то

37

 

QS = (P Q)cosθ .

 

Отсюда, объединяя (3.7.1) и (3.7.2), получим:

 

P = Q + (P Q)cosθ + SP .

(3.7.4)

Длина вектора SP

SP = QP sinθ = QP sinθ = P Q sinθ .

Направление вектора SP перпендикулярно плоскости Q0P , то есть

параллельно вектору nP .

Единичный вектор в этом направлении определяется соотношением

u =

 

 

nP

 

 

=

 

 

 

 

 

nP

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nP

 

 

 

P

 

 

sin Φ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SP =

 

 

 

 

nP

 

 

 

 

 

P Q

 

 

sinθ .

 

 

 

 

 

 

 

 

 

 

 

P

 

sin Φ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

; следовательно, SP = (nP)sinθ .

При этом

 

 

 

P

 

sin Φ =

 

QP

 

=

 

P Q

 

 

 

 

 

 

 

 

 

Перепишем (3.7.4):

 

P = Q + (P Q)Pcosθ + (nP)sinθ .

(3.7.5)

Величина Q определяется

 

Q

 

=

 

P

 

cosΦ;

 

 

 

 

 

 

Направление Q совпадает с n .

 

Так как

 

P

 

cosθ = Pn, то Q = (Pn)n

 

 

 

 

Тогда перепишем (3.7.5)

 

P = (Pn)n + P cosθ (Pn)ncosθ + (nP)sinθ =

(3.7.6)

= (Pn)n(1cosθ) + P cosθ + (nP)sinθ.

 

Таким образом, мы выразили координаты точки P

через координаты

точки P , угол Q и вектор n .

Запишем этот результат в матричной форме;

38

P = [x y z]

n1

 

[n

n

 

 

 

 

2

 

1

 

 

 

 

 

 

 

 

n3

 

 

+[x y z]

 

0

 

n3

n

 

 

0

 

 

3

 

 

 

 

 

 

 

n1

 

n2

 

n2

n2 n1

0

n3 ](1− cosθ) + [x y z]cosθ +

sinθ.

С использованием однородных координат и произведя некоторые преобразования

 

 

n2

n n n n

0

 

1 0 0

0

 

 

 

1

 

1 22

1 3

 

 

 

 

 

 

 

 

n1n2

n2

n2n3

0

(1− cosθ) + 0 1

0

0 cosθ +

 

n n n n

n2

0

 

0 0 1

0

 

 

 

1 3

2 3

3

 

 

 

 

 

 

 

P = [x y z 1]

 

0

 

0

0 1

 

 

0 0 0

1

 

 

0

n3

n2

 

 

 

 

 

.

 

 

0

 

 

 

 

 

 

 

n3

0

n1

0

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

+

n

0

0 sinθ

 

 

 

 

 

 

 

2

1

0

 

 

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

Выражение в скобках как раз и позволяет получить требуемую матрицу

вращения R:

 

n12

+ (1− n12 )cosθ

 

 

(1− cosθ) − n3 sinθ

R = n1n2

n n

(1

− cosθ) + n sinθ

 

1 3

 

2

 

 

 

0

n1n2 (1− cosθ) + n3 sinθ

n1n3 (1− cosθ) − n2 sinθ

0

 

n2 + (1− n2 )cosθ

n n (1− cosθ) + n sinθ

0

 

2

2

2

3

1

.

n n (1− cosθ) − n sinθ

 

n2 + (1− n2 )cosθ

0

2

3

1

 

3

3

 

 

 

 

 

0

 

 

0

1

В качестве примера рассмотрим вращение на угол Q вокруг оси z . При

этом n1 = 0,n2 = 0,n3 =1

cosθ

sinθ

0

0

 

 

 

 

 

 

 

R = −sinθ

cosθ

0

0

,

 

 

 

 

 

 

 

0

0

1

0

 

 

0

0

0

1

 

то есть результат, который уже был получен ранее.

39

2.8 АФФИННАЯ И ПЕРСПЕКТИВНАЯ ГЕОМЕТРИЯ Аффинная геометрия сохраняет параллельность линий и соотношения

между параллельными линиями. Аффинное преобразование является комбинацией линейных преобразований, сопровождаемых переносом изображения. Для аффинного преобразования последний столбец матрицы

4 ×4 должен быть равным [0 0 0 1]T . Композиция аффинных

преобразований также является аффинным преобразованием.

Вперспективной геометрии не сохраняется параллельность. Перспективное преобразование имеет место в том случае, когда последний столбец матрицы 4 ×4 не нулевой. Перспективными изображениями часто пользуются художники и архитекторы, так как эти изображения позволяют получить картину, близкую к реальности. Однако из-за сложности построения их редко используют конструкторы. Используя однородные координаты и матрицу преобразования 4 ×4 одинаково легко можно получать как аффинные, так и перспективные изображения.

Аффинное или перспективное преобразование в сочетании с построением проекции на некоторую плоскость образуют соответствующую (аффинную или перспективную) проекцию.

Вобщем случае проекции преобразуют точки, заданные в системе координат размерностью n , в точки системы координат размерностью m < n . В машинной графике рассматривают проекции точек трехмерного пространства в двухмерное (рисунок 2.5). Проекция трехмерного объекта (совокупности точек) строится при помощи прямых проецирующих лучей, которые называются проекторами, выходящими из центра проекции. Эти прямые проходят через каждую точку объекта; проекцией являются совокупность точек пересечения проекторов с проекционной плоскостью. При этом всегда проекцией отрезка является отрезок, поэтому достаточно спроецировать лишь граничные точки.

40

Отметим, что мы определили класс плоских проекций, то есть проекций на плоскость. Существуют еще проекции на криволинейную поверхность, но их мы рассматривать не будем.

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

 

 

 

A

 

A’

 

отрезок

 

 

 

центр

 

 

 

проекции

 

B’

B

 

 

 

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

A

A’

центр проекции в бесконечности

B’

B

Рисунок 2.5

Параллельная проекция является аффинной, а центральная – перспективной (по виду преобразования).

2.8.1 Аксонометрические проекции Аксонометрическая проекция получается с помощью преобразования,

определитель которого равен нулю. После выполнения преобразования осуществляется параллельное проецирование.

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