close

Вход

Забыли?

вход по аккаунту

?

Линейная алгебра для компьютерной графики

код для вставкиСкачать
Дано изложение элементов линейной алгебры, ориенированное на использование в компьютерной графике.
МАТЕМАТИЧЕСКИЕ ОСНОВЫ
КОМПЬЮТЕРНОЙ ГРАФИКИ.ЭЛЕМЕНТЫ
ВЫЧИСЛИТЕЛЬНОЙ ГЕОМЕТРИИ
Усов В.В.
Мы предполагаем,что читатель знаком с элементами линейной алгебры и аналитической
геометрии.Цель данной главы привести необходимые понятия в форме,удобной для дальнейшего
изложения основ компьютерной графики и вычислительной геометрии.
1 Евклидово пространство
E
n
Арифметическое пространство
R
n
определяется как множество упорядоченных действительных
чисел
R
n
= f(x
1
;x
2
;:::;x
n
):x
1
2 R;x
2
2 R;:::;x
3
2 Rg.В пространстве
R
n
операции сложения и
умножения на скаляр задаются следующим образом:если
X 2 R
n
,
Y 2 R
n
(элементы пространства
R
n
называются векторами)
X = (x
1
;x
2
;:::;x
n
),
Y = (y
1
;y
2
;:::;y
n
),
® 2 R,то
X +Y = (x
1
+y
1
;x
2
+y
2
;:::;x
n
+y
n
) и ®X = (®x
1
;®x
2
;:::;®x
n
):
Если в пространстве
R
n
определена длина вектора по формуле
jXj =
v
u
u
t
n
X
i=1
x
2
i
;
то пространство
R
n
называется евклидовыми обозначается
E
n
.Расстояние
½ в
E
n
между векторами
(точками)
X;Y определяется как
½(X;Y ) = jX ¡Y j:
С евклидовой длиной канонически связано скалярное произведение векторов
X;Y,которое
обозначается
(X;Y ) и определяется формулой
(X;Y ) =
n
X
i=1
x
i
y
i
:
Очевидно,что
jXj =
p
(X;Y ).Легко проверить,что скалярное произведение
(X;Y ) обладает
свойствами:
1.
(X;Y ) = (Y;X)
2.
(®X +¯Y;Z) = ®(X;Z) +¯(Y;Z)
3.
(X;X) ¸ 0 и
(X;X) = 0 тогда и только тогда,когда
X = (0;0;:::;0) = 0
1.1 Неравенство Коши-Буняковского
Для любых
X;Y из
E
n
справедливо неравенство
j(X;Y ) · jXjjY jj;
(1)
которое обращается в равенство лишь при
X = ®Y,для некоторого
® 2 R.Действительно,для
любых
¸ 2 R при
X 6= 0,
Y 6= 0
(X ¡¸Y;X ¡¸Y ) ¸ 0;
и неравенство превращается в равенство,если
X ¡¸Y = 0.Поскольку
(X ¡¸Y;X ¡¸Y ) = (X;X) +¸
2
(Y;Y ) ¡2¸(X;Y ) ¸ 0;
1
то квадратное уравнение
¸
2
(Y;Y ) ¡2¸(X;Y ) +(X;X) = 0
может иметь самое большее один вещественный корень
® (если
X = ®Y ).Решая его,получаем
¸
1;2
=
(X;Y ) §
p
(X;Y )
2
¡(X;X)(Y;Y )
(Y;Y )
:
Следовательно,выражение,стоящее под знаком радикала,меньше или равно нулю.Это
эквивалентно неравенству (1).
1.2 Угол между векторами
Из неравенства Коши-Буняковского следует,что при
X 6= 0,
Y 6= 0
¡1 ·
(X;Y )
jXjjY j
· 1:
Определим угол
6
(X;Y ) между ненулевыми векторами
X;Y формулой
6
(X;Y ) = arccos
µ
(X;Y )
jXjjY j
¶
:
Ясно,что значение угла лежит в промежутке
[0;¼] и угол
6
(X;Y ) = ¼=2,если
(X;Y ) = 0.Векторы,
угол между которыми равен
¼=2,называются ортогональными.
1.3 Определитель Грамма.Длина,площадь,объем
Пусть
X
1
;X
2
;:::;X
m
система из
m векторов пространства
E
n
,
m · n.Определителем Грамма
системы векторов
X
1
;X
2
;:::;X
m
называется определитель
GR(X
1
;X
2
;:::;X
m
) = det
0
B
B
@
(X
1
;X
1
)
(X
1
;X
2
)
:::
(X
1
;X
m
)
(X
2
;X
1
)
(X
2
;X
2
)
:::
(X
2
;X
m
)
:::
:::
:::
:::
(X
m
;X
1
)
(X
m
;X
2
)
:::
(X
m
;X
m
)
1
C
C
A
Из свойств определителя вытекает фундаментальное свойство определителя Грамма.Определитель
Грамма не изменяется,если к одному из векторов системы добавить линейную комбинацию
остальных,т.е.
GR(X
1
;X
2
;:::;X
s
;:::;X
m
) = GR
0
@
X
1
;X
2
;:::;X
s
+
X
i6=s
®
i
X
i
;:::;X
m
1
A
:
Используя это,можно легко установить,что при
m= 1
GR(X) = fквадрат длины вектораXg;
при
m= 2
GR(X;Y ) = fквадрат площади параллелограмма со сторонамиX;Y g;
при
m= 3
GR(X;Y;Z) = fквадрат объема параллелепипеда со сторонамиX;Y;Zg:
Например,легко видеть,что
h
2
=
GR(X;Y;Z)
GR(X;Y )
формула,определяющая квадрат высоты параллелограмма
¦(X;Y;Z) со сторонами
X;Y;Z,
опущенной на его основание
¦(X;Y ).
2
1.4 Процесс ортогонализации Грамма-Шмидта
Пусть
X
1
;X
2
;:::;X
m
система из
m линейно независимых векторов пространства
E
n
,
m · n.
Из этой системы может быть получена система попарно ортогональных векторов
Y
1
;Y
2
;:::;Y
m
следующим образом.Полагаем
Y
1
= X
1
.Предположим,что векторы
Y
1
;Y
2
;:::;Y
s
уже построены.
Построим
Y
s+1
.Положим
Y
s+1
= X
s+1
¡
s
X
i=1
¸
i
Y
i
;
и числа
¸
i
найдем из условий ортогональности
(Y
s+1
;Y
k
) = 0 для
k = 1;2;:::;s.Подставляя
найденные значения
¸
i
получаем
Y
s+1
= X
s+1
¡
s
X
i=1
(X
s+1
;Y
i
)
(Y
i
Y
i
)
Y
i
:
Отметим здесь,что для всех
k = 1;2;:::;m
GR(X
1
;X
2
;:::;X
k
) = GR(Y
1
;Y
2
;:::;Y
k
) и поскольку
при
i 6= j
(Y
i
;Y
j
) = 0,то
GR(Y
1
;Y
2
;:::;Y
k
) = jY
1
j
2
jY
2
j
2
;:::;jY
k
j
2
.Итак мы установили,что для
линейно независимых векторов
X
1
;X
2
;:::;X
m
GR(X
1
;X
2
;:::;X
k
) > 0 и попутно получили способ
вычисления определителя
GR(X
1
;X
2
;:::;X
k
).
1.5 Векторное произведение
Векторным произведением упорядоченной системы
X
1
;X
2
;:::;X
n¡1
из
n ¡ 1 векторов в
E
n
называется вектор
Z,значение которого совпадает со значением следующего определителя
n-ого
порядка
det
0
B
B
@
e
1
e
2
:::
e
n
(X
1
;e
1
)
(X
1
;e
2
)
:::
(X
1
;e
n
)
:::
:::
:::
:::
(X
n¡1
;e
1
)
(X
n¡1
;e
2
)
:::
(X
n¡1
;e
n
)
1
C
C
A
;
где
e
1
;e
2
;:::;e
n
векторы,образующие правый единичный базис (не обязательно ортонорми-
рованный!) пространства,т.е.такие векторы,что если
e
1
= (e
11
;e
12
;:::;e
1n
);e
2
= (e
21
;e
22
;:::;e
2n
);:::;e
1
= (e
n1
;e
n2
;:::;e
nn
);
то
det
0
B
B
@
e
11
e
12
:::
e
1n
e
21
e
22
:::
e
2n
:::
:::
:::
:::
e
n1
e
n2
:::
e
nn
1
C
C
A
= 1:
Легко устанавливается,что данное определение не зависит от выбора правого единичного базиса
e
1
;e
2
;:::;e
n
.В следующей теореме приведем свойства характеризующие векторное произведение.
Теорема 1
Пусть
Z = X
1
£X
2
£:::£X
n¡1
).Тогда
1.
(Z;X
k
) = 0 для
k = 0;1;:::;n ¡1
2.
det
0
B
B
@
(Z;e
1
)
(Z;e
2
)
:::
(Z;e
n
)
(X
1
;e
1
)
(X
1
;e
2
)
:::
(X
1
;e
n
)
:::
:::
:::
:::
(X
n¡1
;e
1
)
(X
n¡1
;e
2
)
:::
(X
n¡1
;e
n
)
1
C
C
A
> 0;
3.
(Z;Z) = GR(X
1
;X
2
;:::;X
n¡1
)
1.Действительно,умножая скалярно
Z на
X
i
получаем определитель с двумя одинаковыми
строками.
2.Достаточно заметить,что данный определитель есть
(Z;Z).
3.Пусть
e
1
;e
2
;:::;e
n
3
- ортонормированный базис и
A =
0
B
B
@
(Z;e
1
)
(Z;e
2
)
:::
(Z;e
n
)
(X
1
;e
1
)
(X
1
;e
2
)
:::
(X
1
;e
n
))
:::
:::
:::
:::
(X
n¡1
;e
1
)
(X
n¡1
;e
2
)
:::
(X
n¡1
;e
n
)
1
C
C
A
Тогда
A¢ A
T
=
0
B
B
@
(Z;Z)
0
:::
0
0
(X
1
;X
1
)
:::
(X
1
;X
n¡1
))
:::
:::
:::
:::
0
(X
n¡1
;X
1
)
:::
(X
n¡1
;X
n¡1
)
1
C
C
A
Следовательно,
det(A¢ A
T
) = (Z;Z) ¢ GR(X
1
;X
2
;:::;X
n¡1
)
.Но
det(A) = (Z;Z) поэтому
(Z;Z)
2
= (Z;Z) ¢ GR(X
1
;X
2
;:::;X
n¡1
) и
(Z;Z) = GR(X
1
;X
2
;:::;X
n¡1
):
Отметим,что система векторов
Z;X
1
;X
2
;:::;X
n¡1
образует правый базис пространства
E
n
.При
вычислениях векторного произведения обычно в качестве базиса
e
1
;e
2
;:::;e
n
берут канонический
базис
e
1
= (1;0;:::;0);e
2
= (0;1;:::;0);:::;e
n
= (0;0;:::;1):
2 Геометрия плоскости
2.1 Декартова система координат
Введем на плоскости декартову систему координат.Для этого отметим точку
O и проведем через
неё две взаимно перпендикулярные направленные прямые
OX и
OY координатные оси.Обычно
ось
OX располагается горизонтально и направлена слева направо,а ось
OY вертикально и
направлена снизу вверх.На осях
OX и
OY от точки
O отложим равные по длине и направленные
вдоль осей отрезки
E
x
= [O;A],
E
y
= [O;B].Тройку,состоящую из точки
O и двух векторов
E
x
,
E
y
,назовем координатным репером и обозначим так:
R
W
= (O;E
x
;E
y
).Пусть теперь
M произвольная точка плоскости.Вектор
OM можно однозначно представить в виде суммы
OM = x £E
x
+y £E
y
:
Поставим в соответствие точке
M упорядоченную пару чисел
(x;y) координаты точки
M
относительно координатного репера
R
W
.Отметим здесь,что точка
O имеет координаты
(0;0),
точка
A имеет координаты
(1;0),а
B (0;1).Обратно,каждой упорядоченной паре
A чисел
(a;b)
можно однозначно сопоставить точку на плоскости,полагая что
OA = a £E
x
+b £E
y
:
Пусть
f
R
W
(M) координаты точки
M относительно координатного репера
R
W
.Ясно,что
f
R
W
взаимно однозначное отображение плоскости на евклидово пространство
E
2
.Из теоремы Пифагора
получаем,что длина вектора
OM может быть вычислена по формуле
jOMj =
q
x
2
jE
x
j
2
+y
2
jE
y
j
2
:
Следовательно,если длины векторов
E
x
и
E
y
равны
1,то
f
R
W
является изометрией,т.е.взаимно
однозначным отображением плоскости на евклидово пространство
E
2
,сохраняющим расстояние
между точками.
2.2 Мировая и локальная системы координат.Связь мировых и
локальных координат
Фиксируем координатный репер
R
W
= (O;E
1
;E
2
).Координаты точки
X относительно репера
R
W
будем называть мировыми,и обозначать
[X]
W
.Пусть
R
L
некоторый координатный репер,
который мы назовем текущим или локальным.Координаты точки относительно этого репера будем
4
называть локальными,и обозначать
[X]
L
.Наша цель выписать преобразования связывающие
координаты
[X]
W
и
[X]
L
.Имеем
OX = OO
0
+O
0
X:
Пусть
[X]
L
= (x
0
1
;x
0
2
);[X]
W
= (x
1
;x
2
):
Тогда
O
0
X = x
0
1
E
0
1
+x
0
2
E
0
2
:
Следовательно,
OX = OO
0
+x
0
1
E
0
1
+x
0
2
E
0
2
:
Поэтому
[OX]
W
= [OO
0
]
W
+x
0
1
[E
0
1
]
W
+x
0
2
[E
0
2
]
W
:
Иначе
[X]
W
= [O
0
]
W
+x
0
1
[E
0
1
]
W
+x
0
2
[E
0
2
]
W
:
(2)
Пусть
[E
0
1
]
W
= (E
0
11
;E
0
12
);[E
0
2
]
W
= (E
0
21
;E
0
22
);[O
0
]
W
= (O
0
1
;O
0
2
):
Поставим координатному реперу
R
L
= (O
0
;E
0
1
;E
0
2
) в соответствие матрицу
[R
L
]
W
=
2
4
E
0
11
E
0
12
0
E
0
21
E
0
22
0
O
0
1
O
0
2
1
3
5
Положим также
[X]
00
W
= ([X]
W
;1) = (x
1
;x
2
;1);[X]
00
L
= ([X]
L
;1) = (x
0
1
;x
0
2
;1):
Тогда соотношение (2) можно записать в матричном виде
[X]
00
W
= [X]
00
L
± [R
L
]
W
:
(3)
Умножая соотношение (3) справа на соответствующую обратную матрицу,получаем
[X]
00
L
= [X]
00
W
± [R
L
]
¡1
w
:
2.3 Аффинные преобразования на плоскости
2.3.1 Матрица аффинного преобразования
Общее невырожденное аффинное преобразование
T плоскости в локальном репере
R
L
= (O
0
;E
0
1
;E
0
2
)
может быть задано матрицей
[T]
L
=
2
4
a
11
a
12
0
a
21
a
22
0
b
1
b
2
1
3
5
где
a
11
a
22
¡a
12
a
21
6= 0.При этом координаты точки
T(X) в координатном репере
R
L
= (O
0
;E
0
1
;E
0
2
)
вычисляются так:
[T(X)]
00
L
= [X]
00
L
± [T]
L
:
Установим теперь связь между матрицами аффинного преобразования
T в мировых и локальных
координатах.Для координат точки
T(X) в мировой и локальной системах координат имеем
[T(X)]
00
L
= [X]
00
L
± [T]
L
;[T(X)]
00
W
= [X]
00
W
± [T]
W
:
Поскольку
[X]
00
L
= [X]
00
W
± [R
L
]
¡1
W
;[T(X)]
00
W
= [T(X)]
00
L
± [R
L
]
W
;
то получим
[T(X)]
00
W
= [X]
00
W
± [R
L
]
¡1
W
± [T]
L
± [R
L
]
W
:
Следовательно,
[T]
W
= [R
L
]
¡1
W
± [T]
L
± [R
L
]
W
:
Наша цель построить матрицы для основных аффинных преобразований плоскости.
5
2.3.2 Вращение вокруг базисной точки
O
0
координатного репера
R
L
= (O
0
;E
0
1
;E
0
2
) на
угол
'
Пусть
R(') вращение вокруг базисной точки
O
0
координатного репера
R
L
= (O
0
;E
0
1
;E
0
2
) на угол
'.Рассмотрим точку
X на плоскости.Пусть
jO
0
Xj = a и
µ угол между векторами
O
0
X и
E
0
1
.
Тогда имеем
[X]
00
L
= (acos µ;asinµ) = (x;y;1);
[R(')(X)]
00
L
= (acos(µ +');asin(µ +');1) = (x
0
;y
0
;1):
Поскольку
cos(µ +') = cos µ cos'¡sinµ sin';
sin(µ +') = sinµ cos'+cos µ sin';
то получаем
x
0
= xcos'¡y sin';
y
0
= xsin'+y cos':
Следовательно,
(x
0
;y
0
;1) = (x;y;1) ±
2
4
cos'
sin'
0
¡sin'
cos'
0
0
0
1
3
5
Итак,мы получили
[R(')]
L
=
2
4
cos'
sin'
0
¡sin'
cos'
0
0
0
1
3
5
2.3.3 Параллельный перенос
Пусть
T(a) сдвиг точек плоскости на вектор
a.Если
[a]
L
= (a
1
;a
2
),
[X]
00
L
= (x;y;1),то
[T(a)(X)]
00
L
= (x +a
1
;y +a
2
;1):
Следовательно,
[T(a)]
L
=
2
4
1
0
0
0
1
0
a
1
a
2
1
3
5
2.3.4 Вращение вокруг произвольной точки
a на угол
'
Пусть
R(a;') вращение вокруг точки
a.Легко видеть,матрица этого преобразования,записанная
в локальном репере
R
L
= (O
0
;E
0
1
;E
0
2
),может быть получена как произведение
[R(A;')]
L
= [T(a)]
¡1
L
± [R(')]
L
± [T(a)]
L
:
Перемножая соответствующие матрицы,получаем
[R(a;')]
L
=
2
4
cos'
sin'
0
¡sin'
cos'
0
a
1
(1 ¡cos') +a
2
sin'
¡a
1
sin'+a
2
(1 ¡cos')
1
3
5
2.3.5 Отражение относительно прямой
L,проходящей через две заданные точки
A;B
Пусть
R
f
отражение относительно прямой
L,проходящей через две заданные точки
A;B,
e =
B¡A
jB¡Aj
единичный натравляющий вектор прямой
L.Тогда вектор
(X ¡A) можно разложить
на две составляющие
X ¡A = [((X ¡A);e) ± e] +[(X ¡A) ¡((X ¡A);e) ± e]:
Легко видеть,что вектор
R
f
(X) ¡A можно представить в виде
R
f
(X) ¡A = [((X ¡A);e) ± e] ¡[(X ¡A) ¡((X ¡A);e) ± e]:
6
Следовательно,
R
f
(X) = 2 ± A¡X +2 ± [((X ¡A);e) ± e]:
(4)
Пусть
R
L
= (O
0
;E
0
1
;E
0
2
) ортонормированный координатный репер,
[R
f
(X)]
l
= (X
1
;X
2
);[X]
L
= (x
1
:x
2
);
[A]
L
= (a
1
;a
2
);[e]
L
= (e
1
;e
2
):
Переходя к координатам относительно репера
R
L
= (O
0
;E
0
1
;E
0
2
) из (4) получаем
X
1
=
¡
2 e
2
1
¡1
¢
x
1
+2e
1
e
2
x
2
+
¡
2 a
1
¡2e
1
e
2
a
2
¡2e
2
1
a
1
¢
;
X
2
=
¡
2 e
2
1
¡1
¢
x
1
+2e
2
e
2
x
2
+
¡
2 a
1
¡2e
1
e
2
a
2
¡2e
2
2
a
1
¢
:
Следовательно,
[R
f
]
L
=
2
4
2 e
2
1
¡1
2e
1
e
2
0
2 e
1
e
2
2e
2
2
¡1
0
2 a
1
¡2 e
1
e
2
a
2
¡2 e
2
1
a
1
2 a
2
¡2e
1
e
2
a
1
¡2 e
2
2
a
2
1
3
5
2.3.6 Гомотетия относительно произвольной точки
A
На рисунке фигура
F
0
получена из фигуры
F с помощью отображения подобия
G(A;®) с
неподвижной точкой
A и коэффициентом подобия
® = 2.Если точка
A совпадает с базисной точкой
O
0
локального репера
R
L
= (O
0
;E
0
1
;E
0
2
),а коэффициент подобия равен
®,то,очевидно,
[G(O
0
;®)]
L
=
2
4
®
0
0
0
®
0
0
0
1
3
5
Если точка
A произвольна,то,легко видеть,что
[G(A;®)]
L
= [T(A)]
¡1
L
± [G(O
0
;®)]
L
± [T(A)]
L
(5)
Пусть
[A]
L
= (a
1
;a
2
):Тогда из (5) получаем
[G(A;®)]
L
==
2
4
®
0
0
0
®
0
(1 ¡®)a
1
(1 ¡®)a
2
1
3
5
2.3.7 Неравномерное растяжение пространства с неподвижной точкой
A вдоль
координатных осей локального репера
Если точка
A совпадает с базисной точкой
O
0
локального репера
R
L
= (O
0
;E
0
1
;E
0
2
),а коэффициенты
растяжения вдоль осей равны
® и
¯,то матрица соответствующего растяжения определяется
равенством
[G(O
0
;®;¯)]
L
=
2
4
®
0
0
0
¯
0
0
0
1
3
5
Если точка
A произвольна то,легко видеть,что
[G(A;®;¯)]
L
= [T(A)]
¡1
L
± [G(O
0
;®;¯)]
L
± [T(A)]
L
(6)
Пусть
[A]
L
= (a
1
;a
2
).Тогда из (6) получаем
[G(A;®;¯)]
L
=
2
4
®
0
0
0
¯
0
(1 ¡®)a
1
(1 ¡¯)a
2
1
3
5
7
2.3.8 Неравномерное растяжение пространства с неподвижной точкой
A вдоль пары
ортогональных осей
Пусть задана точка
A и единичный вектор
e
1
.Требуется построить матрицу преобразования
G
в локальной ортонормированной системе координат
R
L
= (O
0
;E
0
1
;E
0
2
),которое оставляет точку
A неподвижной и растягивает плоскость вдоль направления
e
1
c коэффициентом
®,а вдоль
направления
e
2
,ортогонального
e
1
, c коэффициентом
¯.
Пусть
[A]
L
= (a
1
;b
1
),
[e
1
]
L
= (e
11
;e
12
).Тогда
[e
2
]
L
= (¡e
12
;e
11
).Локальный репер
R
N
=
(A;e
1
;e
2
) в базисе
R
L
= (O
0
;E
0
1
;E
0
2
) имеет матрицу
[R
N
]
L
=
2
4
e
11
e
12
0
¡e
12
e
11
0
a
1
a
2
1
3
5
Преобразование
G в координатном репере
R
N
= (A;e
1
;e
2
) имеет матрицу
[G]
N
=
2
4
®
0
0
0
¯
0
0
0
1
3
5
Из формулы,устанавливающей связь между матрицами аффинного преобразования
T в мировых
и локальных координатах
[T]
W
= [R
L
]
¡1
W
± [T]
L
± [R
L
]
W
;
заменяя
T на
G,
L на
N и
W на
L,получаем
[G]
L
= [R
N
]
¡1
L
± [G]
N
± [R
N
]
L
:
Произведя соответствующие вычисления,находим матрицу
[G]
L
[G]
L
=
2
4
® +¢e
2
11
¢e
11
e
12
0
¢e
11
e
12
¯ ¡¢e
2
11
0
B
1
B
2
1
3
5
где
¢ = ¯ ¡®;
B
1
= (1 ¡®)a
1
¡¢a
1
e
2
11
¡¢a
2
e
11
e
12
;
B
2
= (1 ¡¯)a
2
+¢a
1
e
2
11
¡¢a
1
e
11
e
12
:
3 Геометрия Евклидова пространства
E
3
3.1 Аффинные преобразования пространства
E
3
3.1.1 Матрица аффинного преобразования
Общее аффинное преобразование
T пространства в локальном репере
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) может
быть задано матрицей
[T]
L
=
2
6
6
4
a
11
a
12
a
13
0
a
21
a
22
a
23
0
a
31
a
32
a
33
0
b
1
b
2
b
3
1
3
7
7
5
при этом координаты точки
T(X) в координатном репере
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) вычисляются
следующим образом
[T(X)]
00
L
= [X]
00
L
± [T]
L
:
Связь между матрицами аффинного преобразования
T в мировых и локальных координатах
выражается соотношением
[T]
W
= [R
L
]
¡1
W
± [T]
L
± [R
L
]
W
:
8
3.1.2 Параллельный перенос
Матрица параллельного переноса на вектор
a,если
[a]
L
= (a
1
;a
2
;a
3
),выглядит так
[T(a)]
L
=
2
6
6
4
1
0
0
0
0
1
0
0
0
0
1
0
a
1
a
2
a
3
1
3
7
7
5
3.1.3 Вращение вокруг осей координатного репера
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) на угол
'
Пусть
R
z
(') вращение оси
Z-координатного репера
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) на угол
'.При этом
вращении
Z-координата точки остается неизменной,вращается лишь проекция точки на плоскость
OXY,и поворот происходит для положительных
'против часовой стрелки.Следовательно,
[R
z
(µ)]
L
=
2
6
6
4
cos µ
sinµ
0
0
¡sinµ
cos µ
0
0
0
0
1
0
0
0
0
1
3
7
7
5
Аналогично получаем матрицу вращения вокруг осей
OX на угол
':
[R
x
(')]
L
=
2
6
6
4
1
0
0
0
0
cos'
sin'
0
0
¡sin'
cos'
0
0
0
0
1
3
7
7
5
и матрицу вращения вокруг осей
OY на угол
Ã:
[R
y
(Ã)]
L
=
2
6
6
4
cos Ã
0
¡sinÃ
0
0
1
0
0
sinÃ
0
cos Ã
0
0
0
0
1
3
7
7
5
3.1.4 Вращение вокруг оси с направляющим единичным вектором
n,проходящей
через произвольную точку
a на угол
'
Предположим сначала,что точка
a совпадает с началом координат локального репера
R
L
.
Рассмотрим произвольную точку представленную в репере
R
L
вектором
X.Разложим вектор
X на
две составляющих
X = [X ¡(X;n)n] +(X;n)n:
При вращении вторая составляющая остается неизменной,а чтобы поучить выражение для первой
после вращения,достаточно повернуть на угол
'вектор
[X ¡(X;n)n] в плоскости,натянутой на
векторы
E
1
= [X ¡ (X;n)n] и
E
2
= n £ E
1
= n £ X.Отметим,что векторы
E
1
и
E
2
имеют
одинаковые длины,и ортогональные векторы
(E
1
;E
2
;n) образуют правую тройку.Следовательно,
вектор
Rot(n;')(E
1
),полученный вращением вектора
E
1
вокруг оси с направляющим единичным
вектором
n,выражается так:
Rot(n;')(E
1
) = E
1
cos'+E
2
sin'.Поэтому
Rot(n;')(X) = [X ¡(X;n)n] cos'+(n £X) sin'+(X;n)n
(7)
Пусть
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) ортонормированный координатный репер,
[Rot(n;')(X)]
L
= (x
0
;y
0
;z
0
);
[X]
L
= (x;y;z);
[A]
L
= (a;b;c);[n]
L
= (®;¯;°):
Переходя к координатам относительно репера
R
L
из (7) получаем
x
0
=
£¡
1 ¡®
2
¢
cos'+®
2
¤
x +[(1 ¡cos')®¯ ¡° sin']y +[(1 ¡cos')®° +¯ sin']z;
y
0
= [(1 ¡cos')®¯ +° sin']x +
£¡
1 ¡¯
2
¢
cos'+¯
2
¤
y +[(1 ¡cos')¯° ¡®sin']z;
9
z
0
= [(1 ¡cos')®° ¡¯ sin']x +[(1 ¡cos')¯° +®sin']y +
£¡
1 ¡°
2
¢
cos'+°
2
¤
z:
Следовательно,
[Rot(n;')]
L
=
2
6
6
4
¡
1 ¡®
2
¢
cos'+®
2
(1 ¡cos')®¯ +° sin'
(1 ¡cos')®° ¡¯ sin'
0
(1 ¡cos')®¯ +° sin'
¡
1 ¡¯
2
¢
cos'+¯
2
(1 ¡cos')¯° ¡®sin'
0
(1 ¡cos')®° +¯ sin'
(1 ¡cos')¯° ¡®sin'
¡
1 ¡°
2
¢
cos'+°
2
0
0
0
0
1
3
7
7
5
Матрица
[Rot(A;n;')]
L
получается в результате произведения
[Rot(A;n;')]
L
= [T(¡A)]
L
± [Rot(n;')]
L
± [T(A)]
L
:
3.1.5 Отражение относительно плоскости
L,которая проходит через точку
A и имеет
единичную нормаль
n
Пусть
R
f
искомое отражение.Тогда вектор
(X ¡A) можно разложить на две составляющие
X ¡A = [((X ¡A);n) ± n] +[(X ¡A) ¡((X ¡A);n) ± n]:
Легко видеть,что вектор
R
f
(X) ¡A можно представить в виде
R
f
(X) ¡A = ¡[((X ¡A);n) ± n] +[(X ¡A) ¡((X ¡A);n) ± n]:
Следовательно,
R
f
(X) = X ¡2 ± [((X ¡A);n) ± n]:
(8)
Пусть
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) ортонормированный координатный репер,
[R
f
(X)]
L
= (x
0
;y
0
;z
0
);
[X]
L
= (x;y;z);[A]
L
= (a;b;c);[n]
L
= (®;¯;°):
Переходя к координатам относительно репера
R
L
,из (8) получаем
x
0
=
¡
1 ¡2®
2
¢
x ¡2®¯y ¡2®°z +2®(®a +¯b +°c)
y
0
= 2®¯x +
¡
1 ¡2¯
2
¢
y ¡2¯°z +2¯(®a +¯b +°c)
z
0
= ¡2®°x ¡2¯°y +
¡
1 ¡2°
2
¢
z +2°(®a +¯b +°c)
Следовательно,
[R
f
]
L
=
2
6
6
4
¡
1 ¡2®
2
¢
¡2®¯
¡2®°
0
¡2®¯
¡
1 ¡2¯
2
¢
¡2¯°
0
¡2®°
¡2¯°
¡
1 ¡2¯
2
¢
0
2®¢
2¯¢
2°¢
1
3
7
7
5
где
¢ = (®a +¯b +°c).
3.1.6 Гомотетия относительно произвольной точки
A
Пусть
[A]
L
= (a;b;c).Тогда
[G(A;®)]
L
=
3.1.7 Неравномерное растяжение пространства с неподвижной точкой
A вдоль
координатных осей локального репера
Пусть
[A]
L
= (a
1
;a
2
;a
3
),а коэффициенты растяжения вдоль осей равны
®,
¯ и
°.Тогда матрица
соответствующего растяжения определяется равенством
[G(A;®;¯;°)]
L
=
10
3.1.8 Ортогональное проектирование на плоскость
L,имеющую единичную нормаль
n и проходящую через точку
A
Вектор
(X ¡A) можно разложить на две составляющие
X ¡A = [((X ¡A);n) ± n] +[(X ¡A) ¡((X ¡A);n) ± n]:
Пусть
Pr искомое проектирование.Легко видеть,что вектор
Pr(X) ¡ A можно представить в
виде
Pr(X) ¡A = [(X ¡A) ¡((X ¡A);n) ± n]:
Следовательно,
Pr(X) = X ¡[((X ¡A);n) ± n]:
(9)
Пусть
R
L
= (O
0
;E
0
1
;E
0
2
;E
0
3
) ортонормированный координатный репер,
[Pr(X)]
L
= (x
0
;y
0
;z
0
);
[X]
L
= (x;y;z);[A]
L
= (a;b;c);[n]
L
= (®;¯;°):
Переходя к координатам относительно репера
R
L
,из (9) получаем
x
0
=
¡
1 +®
2
¢
x +®¯y +®°z ¡®(®a +¯b +°c)
y
0
= ®¯x +
¡
1 +¯
2
¢
y +¯°z ¡¯(®a +¯b +°c)
z
0
= ®°x +¯°y +
¡
1 +°
2
¢
z ¡°(®a +¯b +°c)
Следовательно,
[Pr]
L
=
2
6
6
4
¡
1 +®
2
¢
®¯
®°
0
®¯
¡
1 +¯
2
¢
¯°
0
®°
¯°
¡
1 +°
2
¢
0
¡®¢
¡¯¢
¡°¢
1
3
7
7
5
где
¢ = (®a +¯b +°c).
3.1.9 Проектирование вдоль направления
E на плоскость
L,имеющую единичную
нормаль
n и проходящую через точку
A
Обозначим через
Pr(X) проекцию точки
X на плоскость
L вдоль заданного направления
E.Тогда
имеем
(Pr(X) ¡A;N) = 0.Но точка
Pr(X представима в виде
Pr(X) = X +Et
(10)
для некоторого
t.Следовательно,
((X ¡A) +Et;N) = 0:
Из этого равенства находим
t
t = ¡((X ¡A;n)=(E;n)):
Подставляя найденное
t в равенство (10),получаем
Pr(X) = X ¡E((X ¡A;n)=(E;n)):
Пусть
[Pr(X)]
L
= (x
0
;y
0
;z
0
);
[X]
L
= (x;y;z);[A]
L
= (a;b;c);[n]
L
= (®;¯;°);[E
L
] = (n;m;l)
Переходя к координатам относительно репера
R
L
,из (10) получаем
x
0
=
¡
1 +®
2
¢
x +®¯y +®°z ¡®(®a +¯b +°c)
y
0
= ®¯x +
¡
1 +¯
2
¢
y +¯°z ¡¯(®a +¯b +°c)
z
0
= ®°x +¯°y +
¡
1 +°
2
¢
z ¡°(®a +¯b +°c)
Следовательно,
[Pr]
L
=
2
6
6
4
¡
1 +®
2
¢
®¯
®°
0
®¯
¡
1 +¯
2
¢
¯°
0
®°
¯°
¡
1 +°
2
¢
0
¡®¢
¡¯¢
¡°¢
1
3
7
7
5
где
¢ = (®a +¯b +°c).
11
3.1.10 Проектирование из точки
B на плоскость
L,имеющую единичную нормаль
N
и проходящую через точку
A
Вектор
E = (X ¡ B) задает направление проектирования.Обозначим
Pr(X) результат
проектирования точки
X на плоскость.Тогда имеем
(Pr(X) ¡ A;N) = 0.Но точка
Pr(X)
представима в виде
Pr(X) = X +(X ¡B) ± t
(11)
для некоторого
t.Следовательно,
((X ¡A) +(X ¡B)t;N) = 0:
Из этого равенства находим
t:
t = ¡(X ¡A;N)=(X ¡B;N):
Подставляя найденное
t в равенство (11),получаем
Pr(X) = X ¡(X ¡B) ± (X ¡A;N)=(X ¡B;N):
(12)
В правой части равенства (12) стоит нелинейное выражение,причем оно не имеет смысла,если
(X ¡B;N) = 0.Пусть
(X ¡B;N) 6= 0.Тогда
[Pr(X)]
00
= (x
0
;y
0
;z
0
;1),для некоторых
x
0
;y
0
z
0
.Если
умножим обе части равенства (12) на
(X ¡B;N),тогда расширенные координаты вектора
Pr(X)
превратятся в его однородные координаты
(¹x;¹y;¹z;w),где
w = (X¡B;N).При
w 6= 0 от однородных
координат нетрудно перейти к расширенным
(x
0
;y
0
;z
0
;1) =
³
¹x
w
;
¹y
w
;
¹z
w
;1
´
;
но самое замечательное состоит в том,что матрица,задающая искомое проектирование в
однородных координатах матрица с постоянными (не зависящими от
X) коэффициентами!
Действительно,
X ± (X ¡B;N) ¡(X ¡B) ± (X ¡A;N) =
= X ± (X;N) ¡X ± (B;N) ¡X ± (X;N) +X ± X(A;N) +B ± (X;N) ¡B ± (A;N) =
= ¡X ± (B;N) +X ± (A;N) +B ± (X;N) ¡B ± (A;N)
Следовательно,
Pr(X) ± (X ¡B;N) = ¡X ± (B;N) +X ± (A;N) +B ± (X;N) ¡B ± (A;N):
Из соотношений
(¹x;¹y;¹z) = [¡X ± (B;N) +X ± (A;N) +B ± (X;N) ¡B ± (A;N)]
и
w = (X ¡B;N) получаем матрицу проектирования
[Pr(A;N;B)]:
2
6
6
4
®a +¯(b ¡m+°(c ¡l))
®m
®l
®
¯n
®(a ¡n) +¯b +°(c ¡l)
¯l
¯
°n
°m
®(a ¡n) +¯(b ¡m) +°c
°
¡n(®a +¯b +°c)
¡m(®a +¯b +°c)
¡l(®a +¯b +°c)
¡®n ¡¯m¡°l
3
7
7
5
где
[A]
L
= (a;b;c),
[N]
L
= (®;¯;°),
[B]
L
= (n;m;l).Мы получили,что если
[X]
L
= (x;y;z),то
однородные координаты
(¹x;¹y;¹z;w) проекции точки
X на плоскость вычисляются в виде
(¹x;¹y;¹z;w) = (x;y;z;1)[Pr(A;N;B)]:
3.2 Ортогональный репер пространства
E
3
3.2.1 Нормальные координаты репера
Пусть
R
W
= (0;e
1
;e
2
;e
3
) координатный репер некоторой
ориентированной системы координат,которую в дальнейшем
будем называть мировой.Оси,проходящие через точку
O в
направлении векторов
e
1
;e
2
;e
3
,назовем осями
OX,
OY и
OZ
соответственно.Пусть
',
Ã,
µ углы вращения вокруг осей
12
OX,
OY и
OZ соответственно.Причем направления вращений
согласованытак,как показано на рисунке.В этом случае матрица
вращения вокруг оси
OX на угол
'имеет вид:
Rot(OX) =
2
4
1
0
0
0
cos'
sin'
0
¡sin'
cos'
3
5
Матрицы вращения вокруг осей
OY и
OZ соответственно выглядят следующим образом:
Rot(OY ) =
2
4
cos Ã
0
¡sinÃ
0
1
0
sinÃ
0
cos Ã
3
5
Rot(OZ) =
2
4
cos µ
sinµ
0
¡sinµ
cos µ
0
0
0
1
3
5
Пусть
Rot = Rot(OX)¢ Rot(OY )¢ Rot(OZ) преобразование пространства,полученное в результате
последовательного применения трех вращений
Rot(OX),
Rot(OY ) и
Rot(OZ).Матрица такого
преобразования имеет вид:
Rot =
2
4
cos Ãcos µ
cos Ãsinµ
¡sinÃ
sin'sinÃcos µ ¡cos'sinµ
sin'sinÃsinµ +cos'cos µ
sin'cos Ã
cos'sinÃcos µ +sin'sinµ
cos'sinÃsinµ ¡sin'cos µ
cos'cos Ã
3
5
Отметим,что рассмотренное преобразование может быть задано в виде вращения пространства
вокруг некоторой оси
E,проходящей через точку
O,на некоторый угол
® (в дальнейшем будут
приведены формулы,позволяющие вычислять ось
E и угол
®).
Пусть
e
1
= (®
11
;®
12
;®
13
);e
2
= (®
21
;®
22
;®
23
);e
3
= (®
31
;®
32
;®
33
)
строки матрицы
Rot,
O = (x;y;z).Рассмотрим матрицу вида
[R
L
]
W
=
2
6
6
4
®
11
®
12
®
13
0
®
21
®
22
®
23
0
®
31
®
32
®
33
0
x
y
z
1
3
7
7
5
Эту матрицу будем рассматривать,как матрицу репера
R
L
= (O;e
1
;e
2
;e
3
),где векторы
O;e
1
;e
2
;e
3
определяются своими координатами в базисе
R
W
.Шестерку чисел
(x;y;z;';Ã;µ) будем называть
нормальными координатами этого репера.Отметим,что если
[A]
L
= (a;b;c) координаты точки
A в базисе
R
L
,то мировые координаты
[A]
W
точки
A могут быть вычислены по формуле:
[A]
W
= [A]
L
¢ Rot +(x;y;z):
Если же
[
~
A]
L
= (a;b;c;1) однородные координаты точки
A в базисе
R
L
,а
[
~
A]
L
= (¹a;
¹
b;¹c;1) однородные координаты точки
A в базисе
R
W
,то
[
~
A]
W
= [
~
A]
L
[R
L
]
W
:
3.2.2 Вычисление нормальных координат ортогонального репера
Пусть матрица
[R
L
]
W
ортогонального репера задана линейным массивом
m:
[R
L
]
W
=
2
6
6
4
m[0]
m[1]
m[2]
m[3]
m[4]
m[4]
m[5]
m[7]
m[8]
m[9]
m[10]
m[11]
m[12]
m[13]
m[14]
m[15]
3
7
7
5
В этом случае нормальные координаты ортогонального репера
R
L
вычисляются следующим
образом:
x = m[12];y = m[13];z = m[14];
sinà = ¡m[2];cos à =
p
m[0]
2
+m[1]
2
;sin'=
m[6]
cos Ã
;
cos'=
m[10]
cos Ã
;cos µ =
m[0]
cos Ã
;sinµ =
m[1]
cos Ã
;
µ = atan(sinµ;cos µ);'= atan(sin';cos');Ã = atan(sinÃ;cos Ã):
13
3.2.3 Вращение ортогонального репера вокруг собственных осей
Пусть
P точка,тесно связанная с локальным репером
R
L
.Тогда ее однородные координаты
[
~
R]
L
= (p
1
;p
2
;p
3
) в базисе
R
L
не изменятся.Рассмотрим,например,поворот репера вокруг оси
OZ
на угол
'.Пусть
R
0
L
= (0;e
0
1
;e
0
2
;e
0
3
) репер,полученный из репера
R
L
= (O;e
1
;e
2
;e
3
) после такого
поворота.Имеем:
e
0
1
= e
1
cos'+e
2
sin';e
0
2
= ¡e
1
sin'+e
2
cos';e
0
3
= e
3
:
Следовательно,
P = p
1
e
0
1
+p
2
e
0
2
+p
3
e
0
3
+[0]
W
=
p
1
(e
1
cos'+e
2
sin') +p
2
(¡e
1
sin'+e
2
cos') +p
3
e
3
+[0]
W
=
(p
1
cos'¡p
2
sin')e
1
+(p
1
sin'+p
2
cos')e
2
+p
3
e
3
+[0]
W
:
(13)
Представляя (13) в матричной форме,получаем:
[P]
W
= [p
1
p
2
p
3
]
2
4
cos'
sin'
0
¡sin'
cos'
0
0
0
1
3
5
2
4
®
11
®
12
®
13
®
21
®
22
®
23
®
31
®
32
®
33
3
5
+[0]
W
:
Но
[P]
W
= [P]
L
[Rot
L
0
]
W
+[0]
W
.Следовательно,
[Rot
L
0
]
W
=
2
4
cos'
sin'
0
¡sin'
cos'
0
0
0
1
3
5
[Rot
L
]
W
:
Итак,мыполучили,что матрица ортогонального репера
Rot
OZ
(R
L
),полученного вращением репера
R
L
вокруг его собственной оси
OZ на угол
',получается из матрицы
[R
L
]
W
умножением слева на
матрицу
[Rot
OZ
].
[Rot
OZ
(R
L
)]
W
=
2
6
6
4
cos'
sin'
0
0
¡sin'
cos'
0
0
0
0
1
0
0
0
0
1
3
7
7
5
2
6
6
4
®
11
®
12
®
13
0
®
21
®
22
®
23
0
®
31
®
32
®
33
0
x
y
z
1
3
7
7
5
Аналогичные вращения получаем для матриц реперов
Rot
OX
(R
L
),
Rot
OY
(R
L
):
[Rot
OX
(R
L
)]
W
=
2
6
6
4
1
0
0
0
0
cos'
sin'
0
0
¡sin'
cos'
0
0
0
0
1
3
7
7
5
2
6
6
4
®
11
®
12
®
13
0
®
21
®
22
®
23
0
®
31
®
32
®
33
0
x
y
z
1
3
7
7
5
[Rot
OY
(R
L
)]
W
=
2
6
6
4
cos'
0
¡sin'
0
0
1
0
0
sin'
0
cos'
0
0
0
0
1
3
7
7
5
2
6
6
4
®
11
®
12
®
13
0
®
21
®
22
®
23
0
®
31
®
32
®
33
0
x
y
z
1
3
7
7
5
3.2.4 Параллельный перенос ортогонального репера вдоль собственных осей
Пусть
[R
L
]
W
=
2
6
6
4
®
11
®
12
®
13
0
®
21
®
22
®
23
0
®
31
®
32
®
33
0
x
y
z
1
3
7
7
5
матрица репера
R
L
= (0;e
1
;e
2
;e
3
) в базисе
R
W
.Обозначим через
dV вектор смещения репера
R
L
,выраженный через смещения
(d®;d¯;d°) вдоль осей
OX,
OY,
OZ,т.е.:
dV = e
1
d® +e
2
d¯ +e
3
d°:
Полученный в результате такого смещения репер:
R
L
0
= (O
0
;e
1
;e
2
;e
3
),где
O
0
= O + dV,имеет
матрицу
[R
L
0
]
W
,которая представляется в виде произведения:
[R
L
0
]
W
=
2
6
6
4
1
0
0
0
0
1
0
0
0
0
1
0
d®
d¯
d°
1
3
7
7
5
2
6
6
4
®
11
®
12
®
13
0
®
21
®
22
®
23
0
®
31
®
32
®
33
0
x
y
z
1
3
7
7
5
14
3.2.5 Выражения для оси поворота и соответствующего угла поворота для вращения
Rot,заданного своей матрицей
[Rot]
W
Если ось вращения задается вектором
n:
[n]
W
= (®;¯;°),а угол вращения равен
',то,как мы
знаем:
[Rot(n;')]
L
=
2
6
6
4
¡
1 ¡®
2
¢
cos'+®
2
(1 ¡cos')®¯ +° sin'
(1 ¡cos')®° ¡¯ sin'
0
(1 ¡cos')®¯ +° sin'
¡
1 ¡¯
2
¢
cos'+¯
2
(1 ¡cos')¯° ¡®sin'
0
(1 ¡cos')®° +¯ sin'
(1 ¡cos')¯° ¡®sin'
¡
1 ¡°
2
¢
cos'+°
2
0
0
0
0
1
3
7
7
5
Выражаем
[n]
W
и
'через координаты
[Rot]
W
=
2
6
6
4
m[0]
m[1]
m[2]
m[3]
m[4]
m[4]
m[5]
m[7]
m[8]
m[9]
m[10]
m[11]
m[12]
m[13]
m[14]
m[15]
3
7
7
5
и получаем выражения для угла вращения
Á и оси вращения
[»]
W
= (»[0];»[1];»[2]):
cos Á =
m[0] +m[5] +m[10] ¡1
2
;sin2Á =
p
2(1 ¡cos Á
2
);Á = acos(cos Á);
»[0] =
m[6] ¡m[9]
sin2Á
;»[1] =
m[8] ¡m[2]
sin2Á
;»[2] =
m[1] ¡m[4]
sin2Á
:
15
Автор
vv-usov
Документ
Категория
Методические пособия
Просмотров
402
Размер файла
344 Кб
Теги
поворот, проектирование, растяжение, компьютерная графика
1/--страниц
Пожаловаться на содержимое документа