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.