Введем понятие векторов единичной длины для каждой оси - i,j,k : для оси x - это вектор i=(1,0,0), и т.д.
Вычисление длины вектора необходимо , например , для phong shading и vertex normal calculation .
Задачка : Возьмем вектор a = (1,1,1). Вычислим единичный вектор , который к тому же параллелен к a.
Кстати ! Когда угол = 90 градусов , то (cos90 = 0 -> a dot b = 0)!
Скалярное произведение пригодится при phong illuminating и много где еще .
Задачка : Вычислить угол между двумя векторами
a+b и a-b, где a = (3,1) и b =
(1,-7).
a's component parallel to b = (a dot b)*b.
Другие свойства векторного умножения :
Мы добрались до определителя матрицы - (кстати , с этого места когда-то
начинался мой курс математики в политехе ) .
= ( Ay*Bz-By*Az , Az*Bx-Bz*Ax , Ax*By-Bx*Ay )
Векторное умножение полезно при нахождении нормалей .
Задачка : Найти площадь параллелограмма , определенного векторами : (1,-1,2) и (2,3,-1).
Решение :
= (-5,5,5).
Задачка : Найти такую константу a , чтобы 3 вектора (1,-1,2), (1,3,-1), (a,-4,1) оказались в одной плоскости .
Специально организованная таблица действительных или комплексных чисел
зовется матрицей:
Элемент матрицы обозначается как a(y,x) , где 1-й индекс есть номер строки и второй - номер столбца .
Матрица из 1-й строки
a = [ a(1) a(2) .. a(n) ]
Матрицы с одинаковым числом строк и столбцов суть квадратные матрицы .
Если все элементы матрицы=0 , кроме диагональных , то это диагональная
матрица :
Матрица называется ортогональной , если вектора , образованные из строк или столбцов , взаимно перпендикулярны и имеют единичную длину .
Матрица B, определенная вот так
A*B = I <=> B = A^(-1),называется инверсной матрицей для A.
Это напоминает скалярное векторное умножение . Сначала 1-я строчка 1-й таблицы умножается скалярно на 1-й столбец 2-й таблицы , затем на 2-й стобец , и т.д.
! При перемножении матриц есть существенное ограничение : Если первая матрица имеет размерность p * q, вторая должна иметь размерность q * r, причем p и r могут быть различны , а q - нет ! Результирующая матрица будет иметь размерность p * r .
Полезно при object transformations.
1.2.2.3.1 Умножение на вектор
Рассмотрим вектор :
Xi+Yj+Zk = [ X Y Z ].Умножим его на матрицу :
C(nxp) = AT,где C(j,k) = A(k,j).
Транспонирование необходимо при вращении вокруг произвольного вектора
Транспонирование ортогональной матрицы есть инверсия и используется при
оптимизации