Spec-Zone.ru › Qt

Матрица 4x4 QML Базовый тип

Тип matrix4x4 имеет шестнадцать значений, каждый из которых доступен через свойства m11 до m44 в QML (в порядке строк/столбцов). Значения этого типа могут быть составлены с помощью функции Qt.matrix4x4(). Каждое свойство в матрице 4x4 хранится как вещественное число (однократная точность на ARM, двойная точность на x86).

Тип matrix4x4 имеет следующие идемпотентные функции, которые можно вызывать в QML:

Функция Описание Пример
translate(vector3d vector) Умножает this матрицу 4x4 на другую, которая перемещает координаты на компоненты vector
var m = Qt.matrix4x4();
m.translate(Qt.vector3d(1,2,3));
console.log(m.toString());
// QMatrix4x4(1, 0, 0, 1, 0, 1, 0, 2, 0, 0, 1, 3, 0, 0, 0, 1)
rotate(real angle, vector3d axis) Умножает this матрицу 4x4 на другую, которая вращает координаты на angle градусов вокруг axis
var m = Qt.matrix4x4();
m.rotate(180,vector3d(1,0,0));
console.log(m.toString());
// QMatrix4x4(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)
scale(real factor) Умножает this матрицу 4x4 на другую, которая масштабирует координаты на заданный factor
var m = Qt.matrix4x4();
m.scale(2);
console.log(m.toString());
// QMatrix4x4(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)
scale(real x, real y, real z) Умножает this матрицу 4x4 на другую, которая масштабирует координаты на компоненты x, y, и z
var m = Qt.matrix4x4();
m.scale(1,2,3);
console.log(m.toString());
// QMatrix4x4(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1)
scale(vector3d vector) Умножает this матрицу 4x4 на другую, которая масштабирует координаты на компоненты vector
var m = Qt.matrix4x4();
m.scale(Qt.vector3d(1,2,3));
console.log(m.toString());
// QMatrix4x4(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1)
lookAt(vector3d eye, vector3d center, vector3d up) Умножает this матрицу 4x4 на матрицу просмотра, полученную из точки eye. Вектор center указывает центр вида, на который смотрит eye. Вектор up указывает, какое направление следует считать вверх относительно eye.
var m = Qt.matrix4x4();
m.lookAt(Qt.vector3d(1,2,3),Qt.vector3d(1,2,0),Qt.vector3d(0,1,0));
console.log(m.toString());
// QMatrix4x4(1, 0, 0, -1, 0, 1, 0, -2, 0, 0, 1, -3, 0, 0, 0, 1)
matrix4x4 times(matrix4x4 other) Возвращает результат умножения this матрицы 4x4 на other матрицу 4x4
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 матрицей 4x4, применив матрицу перед вектором
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 матрицей 4x4, применив матрицу перед вектором
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 матрицы 4x4 на скаляр 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 матрицы 4x4 с other матрицей 4x4
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 матрицы 4x4 из this матрицы 4x4
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) Возвращает строку vector4d this указанную which. Примечание: индексация which начинается с 0.
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) Возвращает столбец vector4d this указанный which. Примечание: индексация which начинается с 0.
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 матрицы 4x4
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 матрицу 4x4, если она существует, иначе — единичную матрицу.
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 матрицу 4x4
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 матрица 4x4 приблизительно равна other матрице 4x4. Приближение будет истинным, если каждое свойство 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/qt-6.2/qml-matrix4x4.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API