Search Results for

    Show / Hide Table of Contents

    Struct Quaternion

    Represents a four dimensional mathematical quaternion. Euler angles are stored in: pitch, yaw, roll order (x, y, z).

    Assembly: FlaxEngine.dll
    File: Engine/Core/Math/Quaternion.h
    Syntax
    public struct Quaternion

    Constructors

    Quaternion()

    Empty constructor.

    Declaration
    public Quaternion() = default

    Quaternion(const float x, const float y, const float z, const float w)

    Init

    Declaration
    public Quaternion(const float x, const float y, const float z, const float w)
    Parameters
    float x

    X component value.

    float y

    Y component value.

    float z

    Z component value.

    float w

    W component value.

    Quaternion(const Float4& value)

    Init

    Declaration
    public Quaternion(const Float4& value)
    Parameters
    Float4 value

    Vector to set value.

    Fields

    Identity

    Identity quaternion (represents no rotation).

    Declaration
    public static Quaternion Identity
    Field Value
    Quaternion

    One

    Quaternion with all components equal 1.

    Declaration
    public static Quaternion One
    Field Value
    Quaternion

    Raw

    The raw value.

    Declaration
    public float Raw[4]
    Field Value
    float

    Tolerance

    Equality tolerance factor used when comparing quaternions via dot operation.

    Declaration
    public static constexpr Real Tolerance = 0.999999f
    Field Value
    constexpr Real

    W

    The W component of the quaternion.

    Declaration
    public float W
    Field Value
    float

    X

    The X component of the quaternion.

    Declaration
    public float X
    Field Value
    float

    Y

    The Y component of the quaternion.

    Declaration
    public float Y
    Field Value
    float

    Z

    The Z component of the quaternion.

    Declaration
    public float Z
    Field Value
    float

    Zero

    Quaternion with all components equal 0.

    Declaration
    public static Quaternion Zero
    Field Value
    Quaternion

    Methods

    Add(const Quaternion& left, const Quaternion& right, Quaternion& result)

    Declaration
    public static void Add(const Quaternion& left, const Quaternion& right, Quaternion& result)
    Parameters
    Quaternion left

    Quaternion right

    Quaternion result

    AngleBetween(const Quaternion& a, const Quaternion& b)

    Calculates the angle between two quaternions.

    Declaration
    public static float AngleBetween(const Quaternion& a, const Quaternion& b)
    Parameters
    Quaternion a

    First source quaternion.

    Quaternion b

    Second source quaternion.

    Returns
    float

    Returns the angle in degrees between two rotations a and b.

    Billboard(const Float3& objectPosition, const Float3& cameraPosition, const Float3& cameraUpFloat, const Float3& cameraForwardFloat, Quaternion& result)

    Declaration
    public static void Billboard(const Float3& objectPosition, const Float3& cameraPosition, const Float3& cameraUpFloat, const Float3& cameraForwardFloat, Quaternion& result)
    Parameters
    Float3 objectPosition

    Float3 cameraPosition

    Float3 cameraUpFloat

    Float3 cameraForwardFloat

    Quaternion result

    Conjugate()

    Conjugates the quaternion

    Declaration
    public void Conjugate()

    Conjugated()

    Gets the conjugated quaternion.

    Declaration
    public Quaternion Conjugated() const
    Returns
    Quaternion

    Dot(const Quaternion& left, const Quaternion& right)

    Calculates the dot product of two quaternions.

    Declaration
    public static float Dot(const Quaternion& left, const Quaternion& right)
    Parameters
    Quaternion left

    The first source quaternion.

    Quaternion right

    The second source quaternion.

    Returns
    float

    The dot product of the two quaternions.

    Euler(const Float3& euler)

    Declaration
    public static Quaternion Euler(const Float3& euler)
    Parameters
    Float3 euler

    Returns
    Quaternion

    Euler(float x, float y, float z)

    Declaration
    public static Quaternion Euler(float x, float y, float z)
    Parameters
    float x

    float y

    float z

    Returns
    Quaternion

    FindBetween(const Float3& from, const Float3& to)

    Gets the quaternion that will rotate vector from into vector to, around their plan perpendicular axis.The input vectors don't need to be normalized.

    Declaration
    public static Quaternion FindBetween(const Float3& from, const Float3& to)
    Parameters
    Float3 from

    The source vector.

    Float3 to

    The destination vector.

    Returns
    Quaternion

    The rotation.

    FindBetween(const Float3& from, const Float3& to, Quaternion& result)

    Gets the quaternion that will rotate vector from into vector to, around their plan perpendicular axis.The input vectors don't need to be normalized.

    Declaration
    public static void FindBetween(const Float3& from, const Float3& to, Quaternion& result)
    Parameters
    Float3 from

    The source vector.

    Float3 to

    The destination vector.

    Quaternion result

    The result.

    FromDirection(const Float3& direction)

    Calculates the orientation from the direction vector.

    Declaration
    public static Quaternion FromDirection(const Float3& direction)
    Parameters
    Float3 direction

    The direction vector (normalized).

    Returns
    Quaternion

    The orientation.

    GetAngle()

    Gets the angle of the quaternion.

    Declaration
    public float GetAngle() const
    Returns
    float

    GetAxis()

    Gets the axis components of the quaternion.

    Declaration
    public Float3 GetAxis() const
    Returns
    Float3

    GetEuler()

    Gets the euler angle (pitch, yaw, roll) in degrees.

    Declaration
    public Float3 GetEuler() const
    Returns
    Float3

    GetRotationFromNormal(const Vector3& normal, const Transform& reference)

    Gets rotation from a normal in relation to a transform. This function is especially useful for axis aligned faces, and with

    Physics::RayCast

    .

    Declaration
    public static Quaternion GetRotationFromNormal(const Vector3& normal, const Transform& reference)
    Parameters
    Vector3 normal

    The normal vector.

    Transform reference

    The reference transform.

    Returns
    Quaternion

    The rotation from the normal vector.

    GetRotationFromTo(const Float3& from, const Float3& to, const Float3& fallbackAxis)

    Gets the shortest arc quaternion to rotate this vector to the destination vector.

    Declaration
    public static Quaternion GetRotationFromTo(const Float3& from, const Float3& to, const Float3& fallbackAxis)
    Parameters
    Float3 from

    The source vector.

    Float3 to

    The destination vector.

    Float3 fallbackAxis

    The fallback axis.

    Returns
    Quaternion

    The rotation.

    GetRotationFromTo(const Float3& from, const Float3& to, Quaternion& result, const Float3& fallbackAxis)

    Gets the shortest arc quaternion to rotate this vector to the destination vector.

    Declaration
    public static void GetRotationFromTo(const Float3& from, const Float3& to, Quaternion& result, const Float3& fallbackAxis)
    Parameters
    Float3 from

    The source vector.

    Float3 to

    The destination vector.

    Quaternion result

    The result.

    Float3 fallbackAxis

    The fallback axis.

    Invert()

    Conjugates and renormalizes the quaternion.

    Declaration
    public void Invert()

    Invert(const Quaternion& value)

    Calculates the inverse of the specified quaternion.

    Declaration
    public static Quaternion Invert(const Quaternion& value)
    Parameters
    Quaternion value

    The quaternion whose inverse is to be calculated.

    Returns
    Quaternion

    The inverse of the specified quaternion.

    Invert(const Quaternion& value, Quaternion& result)

    Calculates the inverse of the specified quaternion.

    Declaration
    public static void Invert(const Quaternion& value, Quaternion& result)
    Parameters
    Quaternion value

    The quaternion whose inverse is to be calculated.

    Quaternion result

    When the method completes, contains the inverse of the specified quaternion.

    IsIdentity()

    Gets a value indicating whether this instance is equivalent to the identity quaternion.

    Declaration
    public bool IsIdentity() const
    Returns
    bool

    IsInfinity()

    Returns true if quaternion has one or more components equal to +/- infinity.

    Declaration
    public bool IsInfinity() const
    Returns
    bool

    IsNaN()

    Returns true if quaternion has one or more components is not a number (NaN).

    Declaration
    public bool IsNaN() const
    Returns
    bool

    IsNanOrInfinity()

    Returns true if quaternion has one or more components equal to +/- infinity or NaN.

    Declaration
    public bool IsNanOrInfinity() const
    Returns
    bool

    IsNormalized()

    Gets a value indicting whether this instance is normalized.

    Declaration
    public bool IsNormalized() const
    Returns
    bool

    Length()

    Calculates the length of the quaternion.

    Declaration
    public float Length() const
    Returns
    float

    LengthSquared()

    Calculates the squared length of the quaternion.

    Declaration
    public float LengthSquared() const
    Returns
    float

    Lerp(const Quaternion& start, const Quaternion& end, float amount)

    Declaration
    public static Quaternion Lerp(const Quaternion& start, const Quaternion& end, float amount)
    Parameters
    Quaternion start

    Quaternion end

    float amount

    Returns
    Quaternion

    Lerp(const Quaternion& start, const Quaternion& end, float amount, Quaternion& result)

    Declaration
    public static void Lerp(const Quaternion& start, const Quaternion& end, float amount, Quaternion& result)
    Parameters
    Quaternion start

    Quaternion end

    float amount

    Quaternion result

    LookAt(const Float3& eye, const Float3& target, const Float3& up, Quaternion& result)

    Declaration
    public static void LookAt(const Float3& eye, const Float3& target, const Float3& up, Quaternion& result)
    Parameters
    Float3 eye

    Float3 target

    Float3 up

    Quaternion result

    LookRotation(const Float3& forward, const Float3& up)

    Creates a rotation with the specified forward and upwards directions.

    Declaration
    public static Quaternion LookRotation(const Float3& forward, const Float3& up)
    Parameters
    Float3 forward

    The forward direction. Direction to orient towards.

    Float3 up

    Up direction. Constrains y axis orientation to a plane this vector lies on. This rule might be broken if forward and up direction are nearly parallel.

    Returns
    Quaternion

    The calculated quaternion.

    LookRotation(const Float3& forward, const Float3& up, Quaternion& result)

    Creates a rotation with the specified forward and upwards directions.

    Declaration
    public static void LookRotation(const Float3& forward, const Float3& up, Quaternion& result)
    Parameters
    Float3 forward

    The forward direction. Direction to orient towards.

    Float3 up

    The up direction. Constrains y axis orientation to a plane this vector lies on. This rule might be broken if forward and up direction are nearly parallel.

    Quaternion result

    The calculated quaternion.

    Multiply(const Quaternion& left, const Quaternion& right, Quaternion& result)

    Declaration
    public static void Multiply(const Quaternion& left, const Quaternion& right, Quaternion& result)
    Parameters
    Quaternion left

    Quaternion right

    Quaternion result

    Multiply(const Quaternion& other)

    Multiplies a quaternion by another.

    Declaration
    public void Multiply(const Quaternion& other)
    Parameters
    Quaternion other

    The other quaternion to multiply by.

    Multiply(const Quaternion& value, float scale, Quaternion& result)

    Declaration
    public static void Multiply(const Quaternion& value, float scale, Quaternion& result)
    Parameters
    Quaternion value

    float scale

    Quaternion result

    Multiply(float scale)

    Scales a quaternion by the given value.

    Declaration
    public void Multiply(float scale)
    Parameters
    float scale

    The amount by which to scale the quaternion.

    NearEqual(const Quaternion& a, const Quaternion& b)

    Determines whether the specified Quaternion structures are equal.

    Declaration
    public static bool NearEqual(const Quaternion& a, const Quaternion& b)
    Parameters
    Quaternion a

    The first Quaternion to compare.

    Quaternion b

    The second Quaternion to compare.

    Returns
    bool

    true if the specified Quaternion structures are equal; otherwise, false.

    NearEqual(const Quaternion& a, const Quaternion& b, float epsilon)

    Determines whether the specified Quaternion structures are equal.

    Declaration
    public static bool NearEqual(const Quaternion& a, const Quaternion& b, float epsilon)
    Parameters
    Quaternion a

    The first Quaternion to compare.

    Quaternion b

    The second Quaternion to compare.

    float epsilon

    The comparision threshold value.

    Returns
    bool

    true if the specified Quaternion structures are equal within the specified epsilon range; otherwise, false.

    Negate(const Quaternion& value, Quaternion& result)

    Declaration
    public static void Negate(const Quaternion& value, Quaternion& result)
    Parameters
    Quaternion value

    Quaternion result

    Normalize()

    Converts the quaternion into a unit quaternion.

    Declaration
    public void Normalize()

    operator!=(const Quaternion& other)

    Determines whether the specified Quaternion is equal to this instance.

    Declaration
    public bool operator!=(const Quaternion& other) const
    Parameters
    Quaternion other

    The Quaternion to compare with this instance.

    Returns
    bool

    true if the specified Quaternion isn't equal to this instance; otherwise, false.

    operator-(const Quaternion& b)

    Subtracts two quaternions.

    Declaration
    public Quaternion operator-(const Quaternion& b) const
    Parameters
    Quaternion b

    The quaternion to subtract.

    Returns
    Quaternion

    The difference of the two quaternions.

    operator*(const Float3& vector)

    Transforms a vector by the given rotation.

    Declaration
    public Float3 operator*(const Float3& vector) const
    Parameters
    Float3 vector

    The vector to transform.

    Returns
    Float3

    The scaled vector.

    operator*(const Quaternion& b)

    Multiplies two quaternions.

    Declaration
    public Quaternion operator*(const Quaternion& b) const
    Parameters
    Quaternion b

    The quaternion to multiply.

    Returns
    Quaternion

    The multiplied quaternion.

    operator*(float scale)

    Scales a quaternion by the given value.

    Declaration
    public Quaternion operator*(float scale) const
    Parameters
    float scale

    The amount by which to scale the quaternion.

    Returns
    Quaternion

    The scaled quaternion.

    operator*=(const Quaternion& b)

    Multiplies two quaternions.

    Declaration
    public Quaternion operator*=(const Quaternion& b)
    Parameters
    Quaternion b

    The quaternion to multiply.

    Returns
    Quaternion

    The multiplied quaternion.

    operator*=(float scale)

    Scales a quaternion by the given value.

    Declaration
    public Quaternion operator*=(float scale)
    Parameters
    float scale

    The amount by which to scale the quaternion.

    Returns
    Quaternion

    This instance.

    operator+(const Quaternion& b)

    Adds two quaternions.

    Declaration
    public Quaternion operator+(const Quaternion& b) const
    Parameters
    Quaternion b

    The quaternion to add.

    Returns
    Quaternion

    The sum of the two quaternions.

    operator+=(const Quaternion& b)

    Adds two quaternions.

    Declaration
    public Quaternion operator+=(const Quaternion& b)
    Parameters
    Quaternion b

    The quaternion to add.

    Returns
    Quaternion

    The sum of the two quaternions.

    operator-=(const Quaternion& b)

    Subtracts two quaternions.

    Declaration
    public Quaternion operator-=(const Quaternion& b)
    Parameters
    Quaternion b

    The quaternion to subtract.

    Returns
    Quaternion

    The difference of the two quaternions.

    operator==(const Quaternion& other)

    Determines whether the specified Quaternion is equal to this instance.

    Declaration
    public bool operator==(const Quaternion& other) const
    Parameters
    Quaternion other

    The Quaternion to compare with this instance.

    Returns
    bool

    true if the specified Quaternion is equal to this instance; otherwise, false.

    RotationAxis(const Float3& axis, float angle, Quaternion& result)

    Declaration
    public static void RotationAxis(const Float3& axis, float angle, Quaternion& result)
    Parameters
    Float3 axis

    float angle

    Quaternion result

    RotationCosAxis(const Float3& axis, float cos, Quaternion& result)

    Declaration
    public static void RotationCosAxis(const Float3& axis, float cos, Quaternion& result)
    Parameters
    Float3 axis

    float cos

    Quaternion result

    RotationLookAt(const Float3& forward, const Float3& up, Quaternion& result)

    Declaration
    public static void RotationLookAt(const Float3& forward, const Float3& up, Quaternion& result)
    Parameters
    Float3 forward

    Float3 up

    Quaternion result

    RotationMatrix(const Matrix& matrix)

    Declaration
    public static Quaternion RotationMatrix(const Matrix& matrix)
    Parameters
    Matrix matrix

    Returns
    Quaternion

    RotationMatrix(const Matrix& matrix, Quaternion& result)

    Declaration
    public static void RotationMatrix(const Matrix& matrix, Quaternion& result)
    Parameters
    Matrix matrix

    Quaternion result

    RotationMatrix(const Matrix3x3& matrix, Quaternion& result)

    Declaration
    public static void RotationMatrix(const Matrix3x3& matrix, Quaternion& result)
    Parameters
    Matrix3x3 matrix

    Quaternion result

    RotationYawPitchRoll(float yaw, float pitch, float roll)

    Declaration
    public static Quaternion RotationYawPitchRoll(float yaw, float pitch, float roll)
    Parameters
    float yaw

    float pitch

    float roll

    Returns
    Quaternion

    RotationYawPitchRoll(float yaw, float pitch, float roll, Quaternion& result)

    Declaration
    public static void RotationYawPitchRoll(float yaw, float pitch, float roll, Quaternion& result)
    Parameters
    float yaw

    float pitch

    float roll

    Quaternion result

    Slerp(const Quaternion& start, const Quaternion& end, float amount)

    Declaration
    public static Quaternion Slerp(const Quaternion& start, const Quaternion& end, float amount)
    Parameters
    Quaternion start

    Quaternion end

    float amount

    Returns
    Quaternion

    Slerp(const Quaternion& start, const Quaternion& end, float amount, Quaternion& result)

    Declaration
    public static void Slerp(const Quaternion& start, const Quaternion& end, float amount, Quaternion& result)
    Parameters
    Quaternion start

    Quaternion end

    float amount

    Quaternion result

    Subtract(const Quaternion& left, const Quaternion& right, Quaternion& result)

    Declaration
    public static void Subtract(const Quaternion& left, const Quaternion& right, Quaternion& result)
    Parameters
    Quaternion left

    Quaternion right

    Quaternion result

    ToString()

    Declaration
    public String ToString() const
    Returns
    String

    • Improve this Doc
    • View Source
    In This Article
    Back to top Copyright © 2012-2024 Wojciech Figat