Optional
x: number | number[]The quaternion's x component. Defaults to 0. If x is an array of length 4, the array will be used to populate all components.
Optional
y: numberThe quaternion's y component. Defaults to 0.
Optional
z: numberThe quaternion's z component. Defaults to 0.
Optional
w: numberThe quaternion's w component. Defaults to 1.
The w component of the quaternion.
The x component of the quaternion.
The y component of the quaternion.
The z component of the quaternion.
Static
Readonly
IDENTITYA constant quaternion set to [0, 0, 0, 1] (the identity).
Static
Readonly
ZEROA constant quaternion set to [0, 0, 0, 0].
Copies the contents of a source quaternion to a destination quaternion.
Self for chaining.
var src = new pc.Quat();
var dst = new pc.Quat();
dst.copy(src, src);
console.log("The two quaternions are " + (src.equals(dst) ? "equal" : "different"));
The quaternion to be copied.
Reports whether two quaternions are equal.
True if the quaternions are equal and false otherwise.
var a = new pc.Quat();
var b = new pc.Quat();
console.log("The two quaternions are " + (a.equals(b) ? "equal" : "different"));
The quaternion to be compared against.
Gets the rotation axis and angle for a given quaternion. If a quaternion is created with
setFromAxisAngle
, this method will return the same values as provided in the original
parameter list OR functionally equivalent values.
Angle, in degrees, of the rotation.
var q = new pc.Quat();
q.setFromAxisAngle(new pc.Vec3(0, 1, 0), 90);
var v = new pc.Vec3();
var angle = q.getAxisAngle(v);
// Outputs 90
console.log(angle);
// Outputs [0, 1, 0]
console.log(v.toString());
The 3-dimensional vector to receive the axis of rotation.
Returns the result of multiplying the specified quaternions together.
Self for chaining.
var a = new pc.Quat().setFromEulerAngles(0, 30, 0);
var b = new pc.Quat().setFromEulerAngles(0, 60, 0);
// a becomes a 90 degree rotation around the Y axis
// In other words, a = a * b
a.mul(b);
console.log("The result of the multiplication is: " + a.toString());
The quaternion used as the second multiplicand of the operation.
Returns the result of multiplying the specified quaternions together.
Self for chaining.
var a = new pc.Quat().setFromEulerAngles(0, 30, 0);
var b = new pc.Quat().setFromEulerAngles(0, 60, 0);
var r = new pc.Quat();
// r is set to a 90 degree rotation around the Y axis
// In other words, r = a * b
r.mul2(a, b);
console.log("The result of the multiplication is: " + r.toString());
The quaternion used as the first multiplicand of the operation.
The quaternion used as the second multiplicand of the operation.
Sets the specified quaternion to the supplied numerical values.
Self for chaining.
var q = new pc.Quat();
q.set(1, 0, 0, 0);
// Outputs 1, 0, 0, 0
console.log("The result of the vector set is: " + q.toString());
The x component of the quaternion.
The y component of the quaternion.
The z component of the quaternion.
The w component of the quaternion.
Sets a quaternion from an angular rotation around an axis.
Self for chaining.
var q = new pc.Quat();
q.setFromAxisAngle(pc.Vec3.UP, 90);
World space axis around which to rotate.
Angle to rotate around the given axis in degrees.
Sets a quaternion from Euler angles specified in XYZ order.
Self for chaining.
// Create a quaternion from 3 euler angles
var q = new pc.Quat();
q.setFromEulerAngles(45, 90, 180);
// Create the same quaternion from a vector containing the same 3 euler angles
var v = new pc.Vec3(45, 90, 180);
var r = new pc.Quat();
r.setFromEulerAngles(v);
Angle to rotate around X axis in degrees. If ex is a Vec3, the three angles will be read from it instead.
Optional
ey: numberAngle to rotate around Y axis in degrees.
Optional
ez: numberAngle to rotate around Z axis in degrees.
Converts the specified 4x4 matrix to a quaternion. Note that since a quaternion is purely a representation for orientation, only the translational part of the matrix is lost.
Self for chaining.
// Create a 4x4 rotation matrix of 180 degrees around the y-axis
var rot = new pc.Mat4().setFromAxisAngle(pc.Vec3.UP, 180);
// Convert to a quaternion
var q = new pc.Quat().setFromMat4(rot);
The 4x4 matrix to convert.
Performs a spherical interpolation between two quaternions. The result of the interpolation is written to the quaternion calling the function.
Self for chaining.
var q1 = new pc.Quat(-0.11, -0.15, -0.46, 0.87);
var q2 = new pc.Quat(-0.21, -0.21, -0.67, 0.68);
var result;
result = new pc.Quat().slerp(q1, q2, 0); // Return q1
result = new pc.Quat().slerp(q1, q2, 0.5); // Return the midpoint interpolant
result = new pc.Quat().slerp(q1, q2, 1); // Return q2
The quaternion to interpolate from.
The quaternion to interpolate to.
The value controlling the interpolation in relation to the two input quaternions. The value is in the range 0 to 1, 0 generating q1, 1 generating q2 and anything in between generating a spherical interpolation between the two.
Transforms a 3-dimensional vector by the specified quaternion.
The input vector v transformed by the current instance.
// Create a 3-dimensional vector
var v = new pc.Vec3(1, 2, 3);
// Create a 4x4 rotation matrix
var q = new pc.Quat().setFromEulerAngles(10, 20, 30);
var tv = q.transformVector(v);
The 3-dimensional vector to be transformed.
Optional
res: Vec3An optional 3-dimensional vector to receive the result of the transformation.
Create a new Quat instance.