Class Quat_EX

Hierarchy

  • Quat
    • Quat_EX

Constructors

  • Create a new Quat instance.

    Parameters

    • 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: number

      The quaternion's y component. Defaults to 0.

    • Optional z: number

      The quaternion's z component. Defaults to 0.

    • Optional w: number

      The quaternion's w component. Defaults to 1.

    Returns Quat_EX

Properties

w: number

The w component of the quaternion.

x: number

The x component of the quaternion.

y: number

The y component of the quaternion.

z: number

The z component of the quaternion.

IDENTITY: Quat

A constant quaternion set to [0, 0, 0, 1] (the identity).

ZERO: Quat

A constant quaternion set to [0, 0, 0, 0].

Methods

  • Returns an identical copy of the specified quaternion.

    Returns

    A quaternion containing the result of the cloning.

    Example

    var q = new pc.Quat(-0.11, -0.15, -0.46, 0.87);
    var qclone = q.clone();

    console.log("The result of the cloning is: " + q.toString());

    Returns Quat_EX

  • Returns Quat

  • Copies the contents of a source quaternion to a destination quaternion.

    Returns

    Self for chaining.

    Example

    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"));

    Parameters

    • rhs: Quat

      The quaternion to be copied.

    Returns Quat

  • Reports whether two quaternions are equal.

    Returns

    True if the quaternions are equal and false otherwise.

    Example

    var a = new pc.Quat();
    var b = new pc.Quat();
    console.log("The two quaternions are " + (a.equals(b) ? "equal" : "different"));

    Parameters

    • rhs: Quat

      The quaternion to be compared against.

    Returns boolean

  • 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.

    Returns

    Angle, in degrees, of the rotation.

    Example

    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());

    Parameters

    • axis: Vec3

      The 3-dimensional vector to receive the axis of rotation.

    Returns number

  • Converts the supplied quaternion to Euler angles.

    Returns

    The 3-dimensional vector holding the Euler angles that correspond to the supplied quaternion.

    Parameters

    • Optional eulers: Vec3

      The 3-dimensional vector to receive the Euler angles.

    Returns Vec3

  • Generates the inverse of the specified quaternion.

    Returns

    Self for chaining.

    Example

    // Create a quaternion rotated 180 degrees around the y-axis
    var rot = new pc.Quat().setFromEulerAngles(0, 180, 0);

    // Invert in place
    rot.invert();

    Returns Quat

  • Returns the magnitude of the specified quaternion.

    Returns

    The magnitude of the specified quaternion.

    Example

    var q = new pc.Quat(0, 0, 0, 5);
    var len = q.length();
    // Outputs 5
    console.log("The length of the quaternion is: " + len);

    Returns number

  • Returns the magnitude squared of the specified quaternion.

    Returns

    The magnitude of the specified quaternion.

    Example

    var q = new pc.Quat(3, 4, 0);
    var lenSq = q.lengthSq();
    // Outputs 25
    console.log("The length squared of the quaternion is: " + lenSq);

    Returns number

  • Returns the result of multiplying the specified quaternions together.

    Returns

    Self for chaining.

    Example

    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());

    Parameters

    • rhs: Quat

      The quaternion used as the second multiplicand of the operation.

    Returns Quat

  • Returns the result of multiplying the specified quaternions together.

    Returns

    Self for chaining.

    Example

    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());

    Parameters

    • lhs: Quat

      The quaternion used as the first multiplicand of the operation.

    • rhs: Quat

      The quaternion used as the second multiplicand of the operation.

    Returns Quat

  • Returns the specified quaternion converted in place to a unit quaternion.

    Returns

    The result of the normalization.

    Example

    var v = new pc.Quat(0, 0, 0, 5);

    v.normalize();

    // Outputs 0, 0, 0, 1
    console.log("The result of the vector normalization is: " + v.toString());

    Returns Quat

  • Sets the specified quaternion to the supplied numerical values.

    Returns

    Self for chaining.

    Example

    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());

    Parameters

    • x: number

      The x component of the quaternion.

    • y: number

      The y component of the quaternion.

    • z: number

      The z component of the quaternion.

    • w: number

      The w component of the quaternion.

    Returns Quat

  • Sets a quaternion from an angular rotation around an axis.

    Returns

    Self for chaining.

    Example

    var q = new pc.Quat();
    q.setFromAxisAngle(pc.Vec3.UP, 90);

    Parameters

    • axis: Vec3

      World space axis around which to rotate.

    • angle: number

      Angle to rotate around the given axis in degrees.

    Returns Quat

  • Sets a quaternion from Euler angles specified in XYZ order.

    Returns

    Self for chaining.

    Example

    // 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);

    Parameters

    • ex: number | Vec3

      Angle to rotate around X axis in degrees. If ex is a Vec3, the three angles will be read from it instead.

    • Optional ey: number

      Angle to rotate around Y axis in degrees.

    • Optional ez: number

      Angle to rotate around Z axis in degrees.

    Returns Quat

  • 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.

    Returns

    Self for chaining.

    Example

    // 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);

    Parameters

    • m: Mat4

      The 4x4 matrix to convert.

    Returns Quat

  • 根据朝向关系设置rotation

    Returns

    朝向rotation

    Parameters

    • position: Vec3

      起点

    • target: Vec3

      目标点

    • Optional up: Vec3

      上方向

    Returns Quat

  • Performs a spherical interpolation between two quaternions. The result of the interpolation is written to the quaternion calling the function.

    Returns

    Self for chaining.

    Example

    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

    Parameters

    • lhs: Quat

      The quaternion to interpolate from.

    • rhs: Quat

      The quaternion to interpolate to.

    • alpha: number

      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.

    Returns Quat

  • Converts the quaternion to string form.

    Returns

    The quaternion in string form.

    Example

    var v = new pc.Quat(0, 0, 0, 1);
    // Outputs [0, 0, 0, 1]
    console.log(v.toString());

    Returns string

  • Transforms a 3-dimensional vector by the specified quaternion.

    Returns

    The input vector v transformed by the current instance.

    Example

    // 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);

    Parameters

    • vec: Vec3

      The 3-dimensional vector to be transformed.

    • Optional res: Vec3

      An optional 3-dimensional vector to receive the result of the transformation.

    Returns Vec3