quaternion QML Value Type
A quaternion type has scalar, x, y, and z attributes. More...
Detailed Description
A quaternion
type has scalar
, x
, y
and z
attributes.
To create a quaternion
value, specify it as a "scalar,x,y,z" string, or define the components individually, or compose it with the Qt.quaternion() function.
The quaternion type has the following idempotent functions which can be invoked in QML:
Function Signature | Description | Example |
---|---|---|
real dotProduct(quaternion other) | Returns the scalar real result of the dot product of this quaternion with the other quaternion | 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) | Returns the quaternion result of multiplying this quaternion with the other quaternion, which corresponds to applying both of the rotations | 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) | Returns the vector3d result of rotating the vector with this quaternion | 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) | Returns the quaternion result of multiplying this quaternion with the scalar 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) | Returns the quaternion result of the addition of this quaternion with the other quaternion | 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) | Returns the quaternion result of the subtraction of other quaternion from this quaternion | 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() | Returns the normalized unit form of this quaternion | 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() | Returns the inverse of this quaternion | 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() | Returns the conjugate of this quaternion | var a = Qt.quaternion(1,2,3,4); var b = a.conjugated() console.log(b.toString()); // QQuaternion(1, -2, -3, -4) |
real length() | Returns the scalar real value of the length of this quaternion | var a = Qt.quaternion(1,2,3,4); var b = a.length(); console.log(b.toString()); // 5.477225575051661 |
vector3d toEulerAngles() | Returns the vector3d Euler angles (in degrees) that corresponds to this quaternion | 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() | Returns the vector4d result of converting this quaternion to a 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) | Returns true if this quaternion is approximately equal to the other quaternion. The approximation will be true if each attribute of this is within epsilon of other . Note that epsilon is an optional argument, the default epsilon is 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 |
Properties of type quaternion
have Qt.quaternion(1, 0, 0, 0)
as their default value.
This value type is provided by the QtQuick import.
See also QML Value Types.