Matrix3

Класс, определяющий матрицу 3x3.

Пример

const m = new Matrix3();

Замечание о порядке следования строк и столбцов

Метод set() принимает аргументы в порядке row-major, а внутренне они хранятся в массиве elements в порядке колонок.

Это означает, что вызов:

m.set(11, 12, 13, 21, 22, 23, 31, 32, 33);

приведет к созданию массива elements, содержащего:

m.elements = [11, 21, 31, 12, 22, 32, 13, 23, 33];

и внутри все вычисления выполняются с использованием упорядочивания по столбцам. Однако, поскольку фактический порядок не имеет математического значения, а большинство людей привыкли думать о матрицах в порядке возрастания строк, в документации Verge3D матрицы показаны в порядке возрастания строк. Просто имейте в виду, что если вы читаете исходный код, вам придется изучить transpose любых матриц, описанных здесь, чтобы понять смысл вычислений.

Конструктор

Matrix3()

Создает и инициализирует матрицу Matrix3 в единичную матрицу 3x3.

Свойства

.elements : Array

Список column-major значений матрицы.

Методы

.clone() → Matrix3

Создает новую матрицу Matrix3 и с элементами, идентичными данной матрице.

.copy(m : Matrix3) → this

Копирует элементы матрицы m в данную матрицу.

.determinant() → Float

Вычисляет и возвращает определитель данной матрицы.

.equals(m : Matrix3) → Boolean

Возвращает true, если эта матрица и m равны.

.extractBasis(xAxis : Vector3, yAxis : Vector3, zAxis : Vector3) → this

Извлекает базис текущей матрицы в три предоставленных осевых вектора. Если текущая матрица является:

a, b, c, d, e, f, g, h, i

то для xAxis, yAxis, zAxis будут установлены значения:

xAxis = (a, d, g) yAxis = (b, e, h) zAxis = (c, f, i)

.fromArray(array : Array, offset : Integer) → this

Устанавливает элементы этой матрицы на основе массива в формате column-major.

.invert() → this

Инвертирует текущую матрицу, используя аналитический метод.

Вы не можете инвертировать матрицу с детерминантом, равным нулю. Если вы попытаетесь это сделать, метод выдаст нулевую матрицу.

.getNormalMatrix(m : Matrix4) → this

mMatrix4.

Устанавливает левую верхнюю часть 3x3 текущей матрицы как нормальную матрицу на основе переданной матрицы. Нормальная матрица является инвертированным транспонированием матрицы m.

.identity() → this

Сбрасывает текущую матрицу в единичную 3x3:

1, 0, 0 0, 1, 0 0, 0, 1

.makeRotation(theta : Float) → this

theta — угол поворота в радианах. Положительные значения вращают против часовой стрелки.

Устанавливает 2Д-поворот в текущей матрице на theta радиан. Результирующая матрица будет иметь вид:

cos(θ) -sin(θ) 0 sin(θ) cos(θ) 0 0 0 1

.makeScale(x : Float, y : Float) → this

Устанавливает 2Д-масштабирование в текущей матрице:

x, 0, 0, 0, y, 0, 0, 0, 1

.makeTranslation(x : Float, y : Float) → this

Устанавливает 2Д-перемещение в текущей матрице:

1, 0, x, 0, 1, y, 0, 0, 1

.multiply(m : Matrix3) → this

Умножает текущую матрицу на m справа.

.multiplyMatrices(a : Matrix3, b : Matrix3) → this

Устанавливает текущую матрицу в a x b.

.multiplyScalar(s : Float) → this

Умножает каждый компонент матрицы на скалярное значение s.

.rotate(theta : Float) → this

Поворачивает матрицу на указанный угол в радианах.

.scale(sx : Float, sy : Float) → this

Масштабирует матрицу на указанные значения.

.set(n11 : Float, n12 : Float, n13 : Float, n21 : Float, n22 : Float, n23 : Float, n31 : Float, n32 : Float, n33 : Float) → this

Устанавливает матрицу 3x3 с использованием указанной последовательности row-major значений.

.premultiply(m : Matrix3) → this

Умножает текущую матрицу на m слева.

.setFromMatrix4(m : Matrix4) → this

Устанавливает текущую матрицу в верхнюю левую 3x3 часть матрицы m.

.setUvTransform(tx : Float, ty : Float, sx : Float, sy : Float, rotation : Float, cx : Float, cy : Float) → this

Устанавливает матрицу трансформации UV из смещения, повтора, вращения и центра.

.toArray(array : Array, offset : Integer) → Array

Записывает элементы данной матрицы в массив в формате column-major.

.translate(tx : Float, ty : Float) → this

Перемещает матрицу на указанные скалярные значения.

.transpose() → this

Транспонирует текущую матрицу.

.transposeIntoArray(array : Array) → this

array — массив для хранения результирующей матрицы.

Транспонирует текущую матрицу в заданный массив и возвращает её без изменений.

Исходный файл

О том как получить исходный код этого модуля читайте тут.