Матрица 4x4 QML Базовый тип
Тип matrix4x4 представляет собой матрицу с 4 строками и 4 столбцами
Тип matrix4x4 имеет шестнадцать значений, каждый из которых доступен через свойства m11 до m44 в QML (в порядке строк/столбцов). Значения этого типа могут быть составлены с помощью функции Qt.matrix4x4(). Каждое свойство в matrix4x4 хранится как вещественное число (однократной точности на ARM, двойной точности на x86).
Тип matrix4x4 имеет следующие идемпотентные функции, которые могут быть вызваны в QML:
| Подпись функции | Описание | Пример |
|---|---|---|
| matrix4x4 times(matrix4x4 other) | Возвращает результат умножения матрицы this matrix4x4 на матрицу other matrix4x4 |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); var c = a.times(b); console.log(c.toString()); // QMatrix4x4(120, 130, 140, 150, 280, 306, 332, 358, 440, 482, //524, 566, 600, 658, 716, 774) |
| vector4d times(vector4d vector) | Возвращает результат преобразования вектора vector согласно матрице this matrix4x4, с применением матрицы до вектора |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector4d(5,6,7,8); var c = a.times(b); console.log(c.toString()); // QVector4D(70, 174, 278, 382) |
| vector3d times(vector3d vector) | Возвращает результат преобразования вектора vector согласно матрице this matrix4x4, с применением матрицы до вектора |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector3d(5,6,7); var c = a.times(b); console.log(c.toString()); // QVector3D(0.155556, 0.437037, 0.718518) |
| matrix4x4 times(real factor) | Возвращает результат умножения матрицы this matrix4x4 на скаляр factor
|
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = 4.48; var c = a.times(b); console.log(c.toString()); // QMatrix4x4(4.48, 8.96, 13.44, 17.92, 22.4, 26.88, 31.36, 35.84, // 40.32, 44.8, 49.28, 53.76, 58.24, 62.72, 67.2, 71.68) |
| matrix4x4 plus(matrix4x4 other) | Возвращает результат сложения матрицы this matrix4x4 с матрицей other matrix4x4 |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); var c = a.plus(b); console.log(c.toString()); // QMatrix4x4(6, 8, 10, 12, 14, 16, 18, 20, 22, // 24, 26, 28, 30, 32, 34, 36) |
| matrix4x4 minus(matrix4x4 other) | Возвращает результат вычитания матрицы other matrix4x4 из матрицы this matrix4x4 |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.matrix4x4(5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); var c = a.minus(b); console.log(c.toString()); // QMatrix4x4(-4, -4, -4, -4, -4, -4, -4, -4, -4, // -4, -4, -4, -4, -4, -4, -4) |
| vector4d row(int which) | Возвращает строку вектора4d в this, заданную значением which. Примечание: индекс which является нуль-базовым доступом к матрице. |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector4d(a.m21, a.m22, a.m23, a.m24); var c = a.row(2); // zero based access! so not equal to b console.log(b.toString() + " " + c.toString()); // QVector4D(5, 6, 7, 8) QVector4D(9, 10, 11, 12) |
| vector4d column(int which) | Возвращает столбец вектора4d в this, заданный значением which. Примечание: индекс which является нуль-базовым доступом к матрице. |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var b = Qt.vector4d(a.m12, a.m22, a.m32, a.m42); var c = a.column(2); // zero based access! so not equal to b console.log(b.toString() + " " + c.toString()); // QVector4D(2, 6, 10, 14) QVector4D(3, 7, 11, 15) |
| real determinant() | Возвращает определитель матрицы this matrix4x4 |
var a = Qt.matrix4x4(1,0,0,0,0,2,0,0,0,0,3,0,100,200,300,1); var b = a.determinant(); console.log(b); // 6 |
| matrix4x4 inverted() | Возвращает обратную матрицу this matrix4x4, если она существует, в противном случае — единичную матрицу. |
var a = Qt.matrix4x4(1,0,0,0,0,2,0,0,0,0,3,0,100,200,300,1); var b = a.inverted(); console.log(b.toString()); // QMatrix4x4(1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0.333333, 0, -100, // -100, -100, 1) |
| matrix4x4 transposed() | Возвращает транспонированную матрицу this matrix4x4 |
var a = Qt.matrix4x4(1,0,0,0,0,2,0,0,0,0,3,0,100,200,300,1); var b = a.transposed(); console.log(b.toString()); // QMatrix4x4(1, 0, 0, 100, 0, 2, 0, 200, 0, 0, 3, 300, 0, 0, 0, 1) |
| bool fuzzyEquals(matrix4x4 other, real epsilon) | Возвращает true, если матрица this matrix4x4 приблизительно равна матрице other matrix4x4. Приближение будет истинным, если каждое свойство this находится в пределах epsilon от соответствующего свойства other. Обратите внимание, что epsilon — необязательный аргумент, по умолчанию epsilon равно 0.00001. |
var a = Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
var b = Qt.matrix4x4(1.0001,2.0001,3.0002,4.0003,5.0001,6.0002,
7.0002,8.0004, 9.0001,10.0003,
11.0003,12.0004,13.0001,
14.0002,15.0003,16.0004);
var c = a.fuzzyEquals(b); // default epsilon
var d = a.fuzzyEquals(b, 0.005); // supplied epsilon
console.log(c + " " + d); // false true |
Этот базовый тип предоставляется импортом QtQuick.
См. также QML Базовые типы.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-matrix4x4.html