四元数 QML 值类型

四元数类型具有标量、x、y 和 z 属性。 更多...

详细描述

四元数类型具有 scalarxyz 属性。

要创建四元数,请指定为 "标量,x,y,z" 字符串,或单独定义各个分量,或使用 Qt.quaternion() 函数组合。

四元数类型具有以下在 QML 中可以调用的幂等函数

函数签名说明示例
real dotProduct(quaternion other)返回 this 四元数与 other 四元数的点积的标量 real 结果
var a = Qt.quaternion(1,2,3,4);
var b = Qt.quaternion(5,6,7,8);
var c = a.dotProduct(b);
console.log(c); // 70
quaternion times(quaternion other)返回 this 四元数与 other 四元数相乘的结果四元数,这对应于应用两个旋转
var a = Qt.quaternion(1 / Math.sqrt(2), 1 / Math.sqrt(2), 0, 0);
var b = Qt.quaternion(1 / Math.sqrt(2), 0, 1 / Math.sqrt(2), 0);
var c = b.times(a);
console.log(c.toString()); // QQuaternion(0.5, 0.5, 0.5, -0.5)
vector3d times(vector3d vector)返回以 this 四元数旋转 vector 的 vector3d 结果
var a = Qt.quaternion(0.5,0.5,0.5,-0.5);
var b = Qt.vector3d(4,5,6);
var c = a.times(b);
console.log(c.toString()); // QVector3D(5, -6, -4)
quaternion times(real factor)返回 this 四元数与标量 factor 相乘的结果四元数
var a = Qt.quaternion(1,2,3,4);
var b = 4.48;
var c = a.times(b);
console.log(c.toString()); // QQuaternion(4.48, 8.96, 13.44, 17.92)
quaternion plus(quaternion other)返回 this 四元数与 other 四元数相加的结果四元数
var a = Qt.quaternion(1,2,3,4);
var b = Qt.quaternion(5,6,7,8);
var c = a.plus(b);
console.log(c.toString()); // QQuaternion(6, 8, 10, 12)
quaternion minus(quaternion other)返回 other 四元数从 this 四元数中减去的结果四元数
var a = Qt.quaternion(1,2,3,4);
var b = Qt.quaternion(5,6,7,8);
var c = a.minus(b);
console.log(c.toString()); // QQuaternion(-4, -4, -4, -4)
quaternion normalized()返回 this 四元数的归一化单位形式
var a = Qt.quaternion(1,2,3,4);
var b = a.normalized();
console.log(b.toString()); // QQuaternion(0.182574, 0.365148, 0.547723, 0.730297)
quaternion inverted()返回 this 四元数的逆
var a = Qt.quaternion(0.5,0.5,0.5,-0.5);
var b = a.inverted();
console.log(b.toString()); // QQuaternion(0.5, -0.5, -0.5, 0.5)
quaternion conjugated()返回 this 四元数的共轭
var a = Qt.quaternion(1,2,3,4);
var b = a.conjugated()
console.log(b.toString()); // QQuaternion(1, -2, -3, -4)
real length()返回 this 四元数的长度标量实值
var a = Qt.quaternion(1,2,3,4);
var b = a.length();
console.log(b.toString()); // 5.477225575051661
vector3d toEulerAngles()返回 this 四元数对应的三维欧拉角 vector3d(以度为单位)
var a = Qt.quaternion(0.933012,0.25,-0.25,0.066987);
var b = a.toEulerAngles();
console.log(b.toString()); // QVector3D(30, -30, -4.28846e-05)
vector4d toVector4d()返回将 this 四元数转换为 vector4d 的结果
var a = Qt.quaternion(1,2,3,4);
var b = a.toVector4d();
console.log(b.toString()); // QVector4D(2, 3, 4, 1)
bool fuzzyEquals(quaternion other, real epsilon)如果 this 四元数大约等于 other 四元数,则返回 true。如果 this 的每个属性都在 epsilon 内,则近似为真。注意,epsilon 是可选参数,默认 epsilon 为 0.00001。
var a = Qt.quaternion(1,2,3,4);
var b = Qt.quaternion(1.0001, 1.9998, 2.0001, 3.9999);
var c = a.fuzzyEquals(b);        // default epsilon
var d = a.fuzzyEquals(b, 0.005); // supplied epsilon
console.log(c + " " + d); // false true

类型为 quaternion 的属性默认值为 Qt.quaternion(1, 0, 0, 0)

此值类型由 QtQuick 导入提供。

另请参阅QML 值类型

© 2024 Qt公司有限公司。本文档中包含的贡献为各自所有者的版权。本提供的文档根据自由软件基金会发布的自由文档许可证版本1.3的条款进行许可。Qt及其相关标志是芬兰及其它/国家的Qt公司注册商标。其他所有商标均为其各自所有者的财产。