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 identity matrix.

Свойства

.elements : Array

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

Методы

.clone() → Matrix3

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

.copy(m : Matrix3) → this

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

.determinant() → Float

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

.equals(m : Matrix3) → Boolean

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

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

Извлекает basis этой матрицы в три предоставленных осевых вектора. Если эта матрица является: 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

array — массив для чтения элементов из него.
offset — (необязательный) индекс первого элемента в массиве. По умолчанию равен 0.

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

.invert() → this

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

.getNormalMatrix(m : Matrix4) → this

m - Matrix4

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

.identity() → this

Сбрасывает эту матрицу в матрицу идентичности 3x3: 1, 0, 0 0, 1, 0 0, 0, 1

.multiply(m : Matrix3) → this

Умножает эту матрицу на m.

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

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

.multiplyScalar(s : Float) → this

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

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

n11 — значение, которое нужно поместить в строку 1, столбец 1.
n12 — значение, которое нужно поместить в строку 1, столбец 2.
...
...
n32 — значение, которое нужно поместить в строку 3, столбец 2.
n33 — значение, которое нужно поместить в строку 3, столбец 3.

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

.premultiply(m : Matrix3) → this

Предварительно умножает эту матрицу на m.

.setFromMatrix4(m : Matrix4) → this

Установите эту матрицу в верхнюю матрицу 3x3 матрицы4 m.

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

tx — смещение x
ty — смещение y
sx — повтор x
sy — повтор y
rotation — вращение (в радианах)
cx — центр x вращения
cy — центр y вращения

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

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

array — (необязательный) массив для хранения результирующего вектора. Если не указан, будет создан новый массив.
offset — (необязательно) смещение в массиве, на которое следует поместить результат.

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

.transpose() → this

Transposes эту матрицу на место.

.transposeIntoArray(array : Array) → this

array - массив для хранения результирующего вектора.

Transposes эту матрицу в заданный массив и возвращает себя без изменений.

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

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