vector3d QML 值类型

具有 x、y 和 z 属性的值。有关更多信息,请参阅这里...

详细描述

vector3d 类型指的是具有 xyz 属性的值。

默认情况下,vector3d 类型具有零向量。其中 xyz 均被设置为 0

要创建一个 vector3d 值,请指定它为 "x,y,z" 字符串

Rotation { angle: 60; axis: "0,1,0" }

使用Qt.vector3d() 函数

Rotation { angle: 60; axis: Qt.vector3d(0, 1, 0) }

或者作为分离的 xyz 成分量

Rotation { angle: 60; axis.x: 0; axis.y: 1; axis.z: 0 }

vector3d 值的每个属性都作为单精度浮点数(float)内部存储。

与 C++ 集成时,请注意,从 C++ 传入 QML 的任何 QVector3D 值都会自动转换为 vector3d 值,反之亦然。

vector3d 类型具有以下幂等函数,可以在 QML 中调用

函数签名描述示例
vector3d crossProduct(vector3d other)返回此 vector3d 与 other vector3d 的叉积的 vector3d 结果
var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.crossProduct(b);
console.log(c.toString()); // QVector3D(-3, 6, -3)
real dotProduct(vector3d other)返回此 vector3d 与 other vector3d 的点积的标量实数结果
var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.dotProduct(b);
console.log(c); // 32
vector3d times(matrix4x4 matrix)返回使用 4x4 matrix 变换的此 vector3d 的 vector3d 结果,变换应用于向量的后面
var a = Qt.vector3d(1,2,3);
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());
// QVector3D(0.774194, 0.849462, 0.924731)
vector3d times(vector3d other)返回此 vector3d 与 other vector3d 的乘积的 vector3d 结果
var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.times(b);
console.log(c.toString()); // QVector3D(4, 10, 18)
vector3d times(real factor)返回此 vector3d 与标量 factor 的乘积的 vector3d 结果
var a = Qt.vector3d(1,2,3);
var b = 4.48;
var c = a.times(b);
console.log(c.toString()); // QVector3D(4.48, 8.96, 13.44)
vector3d plus(vector3d other)返回此 vector3d 与 other vector3d 的加法结果的 vector3d
var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.plus(b);
console.log(c.toString()); // QVector3D(5, 7, 9)
vector3d minus(vector3d other)返回从 this vector3d 减去 other vector3d 的 vector3d 结果
var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.minus(b);
console.log(c.toString()); // QVector3D(-3, -3, -3)
vector3d normalized()返回此向量的归一化形式
var a = Qt.vector3d(1,2,3);
var b = a.normalized();
console.log(b.toString());
// QVector3D(0.267261, 0.534522, 0.801784)
real length()返回此 vector3d 长度的标量实数值
var a = Qt.vector3d(1,2,3);
var b = a.length();
console.log(b.toString()); // 3.7416573867739413
vector2d toVector2d()返回将此 vector3d 转换为 vector2d 的 vector2d 结果
var a = Qt.vector3d(1,2,3);
var b = a.toVector2d();
console.log(b.toString()); // QVector2D(1, 2)
vector4d toVector4d()返回将此 vector3d 转换为 vector4d 的 vector4d 结果
var a = Qt.vector3d(1,2,3);
var b = a.toVector4d();
console.log(b.toString()); // QVector4D(1, 2, 3, 0)
bool fuzzyEquals(vector3d other, real epsilon)如果此 vector3d 约等于 other 矢量,则返回 true。如果 this 的每个属性都在 epsilon 以内,则近似为真。epsilon 是可选参数,默认值为 0.00001。
var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(1.0001, 1.9998, 2.0001);
var c = a.fuzzyEquals(b);        // default epsilon
var d = a.fuzzyEquals(b, 0.005); // supplied epsilon
console.log(c + " " + d); // false true

此值类型由 QtQuick 导入提供。

另请参阅 QML 值类型

© 2024 The Qt Company Ltd。此处包含的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权的。Qt 和其相应标志是 The Qt Company Ltd. 在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。