Matrix

Класс: GLMatrix

Matrix (матрица) - структура данных, математический объект в виде таблицы чисел. Размер матрицы Phantom3D - 4х4 (4 строк, 4 столбцов = 16 ячеек). В памяти матрица хранится в виде одномерного массива из 16 значений для кажой ячейки. Ниже приведена схема нумерации ячеек:



Матрицы используются главным образом для хранения трансформации объектов. Одна и та же матрица может содержать данные о позиции, повороте и масштабе объекта. При умножении двух матриц получается матрица, сочетающая в себе трансформацию обеих. При этом имеет значение порядок умножения: если A и B - матрицы, то A*B!=B*A.
Подробнее о использовании матриц читайте
здесь.

MatrixCreate

real = MatrixCreate( );
Создает новую матрицу и возвращает ее id.

MatrixSetValue

real = MatrixSetValue( matrix,ind,value as real );
Изменяет значение ячейки матрицы.
matrix - id матрицы
ind - номер ячейки
value - новое значение.

MatrixSetHomogeneous

real = MatrixSetHomogeneous( matrix as real );
Делает матрицу единичной. Единичная матрица изображена на рисунке выше.
matrix - id матрицы.

MatrixSetPosition

real = MatrixSetPosition( matrix,x,y,z as real );
Изменяет значения ячеек 12, 13 и 14, отвечающих за смещение.
matrix - id матрицы
x,y,z - координаты смещения по трем осям.

MatrixSetScaling

real = MatrixSetScaling( matrix,x,y,z as real );
Изменяет значения ячеек 0, 5 и 10, отвечающих за масштабирование.
matrix - id матрицы
x,y,z - координаты масштабирования по трем осям.

MatrixSetRotationX

real = MatrixSetRotationX( matrix,angle as real );
Изменяет значения ячеек, отвечающих за поворот по оси X. Ячейка 5 получает значение cos(angle), ячейка 6 - -sin(angle), ячейка 9 - sin(angle), ячейка 10 - cos(angle), где angle - угол поворота в градусах.
matrix - id матрицы
angle - угол поворота.

MatrixSetRotationY

real = MatrixSetRotationY( matrix,angle as real );
Изменяет значения ячеек, отвечающих за поворот по оси Y. Ячейка 0 получает значение cos(angle), ячейка 2 - sin(angle), ячейка 9 - -sin(angle), ячейка 10 - cos(angle), где angle - угол поворота в градусах.
matrix - id матрицы
angle - угол поворота.

MatrixSetRotationZ

real = MatrixSetRotationZ( matrix,angle as real );
Изменяет значения ячеек, отвечающих за поворот по оси Z. Ячейка 0 получает значение cos(angle), ячейка 1 - -sin(angle), ячейка 4 - -sin(angle), ячейка 5 - cos(angle), где angle - угол поворота в градусах.
matrix - id матрицы
angle - угол поворота.

MatrixMultiply

real = MatrixMultiply( matrix1,matrix2 as real );
Умножает матрицу 1 на матрицу 2 и результат записывает в матрицу 1.
matrix1 - id матрицы 1
matrix2 - id матрицы 2.