matrix4x4 QML Value Type

matrix4x4 型は、4 行 4 列の行列です。詳細...

詳細な説明

matrix4x4 型は 16 個の値を持ち、それぞれ QML のプロパティm11 からm44 からアクセスできます(行/列の順)。この型の値は、Qt.matrix4x4() 関数で合成することができます。matrix4x4 の各属性は実数(ARM では単精度、x86 では倍精度)として格納されます。

matrix4x4 型のプロパティのデフォルトは単位行列で、その対角エントリはm11m22m33m44 のすべて1 であり、その他の構成要素はすべて0 です。

行列 4x4 型には QML で呼び出すことのできる以下のようなべき等関数があります:

関数のシグネチャ説明
translate(vector3d vector)this 行列 4x4 に、座標をベクトル 3d の成分で変換する別の行列を乗じます。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,Qt.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)
rotate(四元数)this 行列 4x4 を、指定されたquaternion に従って座標を回転させる別の行列で乗算します。quaternion は正規化されているものとします。
var m = Qt.matrix4x4();
m.rotate(Qt.quaternion(0.5,0.5,0.5,-0.5));
console.log(m.toString());
// QMatrix4x4(0, 1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 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 matrix4x4 に、eye の点から得られるビューイング行列を乗じます。center vector3d は、eye が見ている視界の中心を示す。up vector3d は,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 の matrix4x4 とother の matrix4x4 を掛け合わせた 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)vectorthis の matrix4x4 に従って変換した結果を、行列を適用した事前ベクトルで vector4d した結果を返します。
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)vectorthis の matrix4x4 に従って変換した vector3d の結果を、行列を適用した事前ベクトルで返します。
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 にスカラーを乗じた 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 を加算した 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)this 行列 4x4 からother 行列 4x4 を減算した行列 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)which で指定されたthis の vector4d 行を返します。注意: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)which で指定されたthis の vector4d 列を返します.注意: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 の行列式を返します。
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
行列 4x4 の逆行列を返します.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)
rect mapRect(rect)与えられた矩形を,この行列で定義される座標系に写します.rotation または shearing が指定されている場合、この関数は外接矩形を返します。この関数は Qt 6.5 で導入されました。
var a = Qt.matrix4x4(2,0,0,0,0,2,0,0,0,0,1,0,0,0,0,1);
var b = a.mapRect(Qt.rect(10, 20, 30, 40));
console.log(b.toString());
// Qt.rect(20, 40, 60, 80)
点 map(point)指定された点を、この行列で定義された座標系にマップします。この関数は Qt 6.5 で導入されました。
var a = Qt.matrix4x4(2,0,0,0,0,2,0,0,0,0,1,0,0,0,0,1);
var b = a.map(10, 20);
console.log(b.toString());
// Qt.point(20, 40)
bool fuzzyEquals(matrix4x4 other, real epsilon)this matrix4x4 がother matrix4x4 とほぼ等しい場合に真を返します。this の各属性がother の各属性のepsilon 以内にある場合,近似は真になります.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 Value Typesも参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。