:right-sidebar: True Quaternion =================================================================== .. currentmodule:: gi.repository.Graphene .. versionadded:: 1.0 .. class:: Quaternion(*args, **kwargs) :no-contents-entry: A quaternion. The contents of the :obj:`~gi.repository.Graphene.Quaternion` structure are private and should never be accessed directly. Constructors ------------ .. rst-class:: interim-class .. class:: Quaternion :no-index: .. classmethod:: alloc() -> ~gi.repository.Graphene.Quaternion Allocates a new :obj:`~gi.repository.Graphene.Quaternion`\. The contents of the returned value are undefined. .. versionadded:: 1.0 Methods ------- .. rst-class:: interim-class .. class:: Quaternion :no-index: .. method:: add(b: ~gi.repository.Graphene.Quaternion) -> ~gi.repository.Graphene.Quaternion Adds two :obj:`~gi.repository.Graphene.Quaternion` ``a`` and ``b``\. .. versionadded:: 1.10 :param b: a :obj:`~gi.repository.Graphene.Quaternion` .. method:: dot(b: ~gi.repository.Graphene.Quaternion) -> float Computes the dot product of two :obj:`~gi.repository.Graphene.Quaternion`\. .. versionadded:: 1.0 :param b: a :obj:`~gi.repository.Graphene.Quaternion` .. method:: equal(b: ~gi.repository.Graphene.Quaternion) -> bool Checks whether the given quaternions are equal. .. versionadded:: 1.0 :param b: a :obj:`~gi.repository.Graphene.Quaternion` .. method:: free() -> None Releases the resources allocated by :func:`~gi.repository.Graphene.Quaternion.alloc`. .. versionadded:: 1.0 .. method:: init(x: float, y: float, z: float, w: float) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using the given four values. .. versionadded:: 1.0 :param x: the first component of the quaternion :param y: the second component of the quaternion :param z: the third component of the quaternion :param w: the fourth component of the quaternion .. method:: init_from_angle_vec3(angle: float, axis: ~gi.repository.Graphene.Vec3) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using an ``angle`` on a specific ``axis``\. .. versionadded:: 1.0 :param angle: the rotation on a given axis, in degrees :param axis: the axis of rotation, expressed as a vector .. method:: init_from_angles(deg_x: float, deg_y: float, deg_z: float) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using the values of the `Euler angles `__ on each axis. See also: :func:`~gi.repository.Graphene.Quaternion.init_from_euler` .. versionadded:: 1.0 :param deg_x: rotation angle on the X axis (yaw), in degrees :param deg_y: rotation angle on the Y axis (pitch), in degrees :param deg_z: rotation angle on the Z axis (roll), in degrees .. method:: init_from_euler(e: ~gi.repository.Graphene.Euler) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using the given :obj:`~gi.repository.Graphene.Euler`\. .. versionadded:: 1.2 :param e: a :obj:`~gi.repository.Graphene.Euler` .. method:: init_from_matrix(m: ~gi.repository.Graphene.Matrix) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using the rotation components of a transformation matrix. .. versionadded:: 1.0 :param m: a :obj:`~gi.repository.Graphene.Matrix` .. method:: init_from_quaternion(src: ~gi.repository.Graphene.Quaternion) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` with the values from ``src``\. .. versionadded:: 1.0 :param src: a :obj:`~gi.repository.Graphene.Quaternion` .. method:: init_from_radians(rad_x: float, rad_y: float, rad_z: float) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using the values of the `Euler angles `__ on each axis. See also: :func:`~gi.repository.Graphene.Quaternion.init_from_euler` .. versionadded:: 1.0 :param rad_x: rotation angle on the X axis (yaw), in radians :param rad_y: rotation angle on the Y axis (pitch), in radians :param rad_z: rotation angle on the Z axis (roll), in radians .. method:: init_from_vec4(src: ~gi.repository.Graphene.Vec4) -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` with the values from ``src``\. .. versionadded:: 1.0 :param src: a :obj:`~gi.repository.Graphene.Vec4` .. method:: init_identity() -> ~gi.repository.Graphene.Quaternion Initializes a :obj:`~gi.repository.Graphene.Quaternion` using the identity transformation. .. versionadded:: 1.0 .. method:: invert() -> ~gi.repository.Graphene.Quaternion Inverts a :obj:`~gi.repository.Graphene.Quaternion`\, and returns the conjugate quaternion of ``q``\. .. versionadded:: 1.0 .. method:: multiply(b: ~gi.repository.Graphene.Quaternion) -> ~gi.repository.Graphene.Quaternion Multiplies two :obj:`~gi.repository.Graphene.Quaternion` ``a`` and ``b``\. .. versionadded:: 1.10 :param b: a :obj:`~gi.repository.Graphene.Quaternion` .. method:: normalize() -> ~gi.repository.Graphene.Quaternion Normalizes a :obj:`~gi.repository.Graphene.Quaternion`\. .. versionadded:: 1.0 .. method:: scale(factor: float) -> ~gi.repository.Graphene.Quaternion Scales all the elements of a :obj:`~gi.repository.Graphene.Quaternion` ``q`` using the given scalar factor. .. versionadded:: 1.10 :param factor: a scaling factor .. method:: slerp(b: ~gi.repository.Graphene.Quaternion, factor: float) -> ~gi.repository.Graphene.Quaternion Interpolates between the two given quaternions using a spherical linear interpolation, or `SLERP `__\, using the given interpolation ``factor``\. .. versionadded:: 1.0 :param b: a :obj:`~gi.repository.Graphene.Quaternion` :param factor: the linear interpolation factor .. method:: to_angle_vec3() -> ~typing.Tuple[float, ~gi.repository.Graphene.Vec3] Converts a quaternion into an ``angle``\, ``axis`` pair. .. versionadded:: 1.0 .. method:: to_angles() -> ~typing.Tuple[float, float, float] Converts a :obj:`~gi.repository.Graphene.Quaternion` to its corresponding rotations on the `Euler angles `__ on each axis. .. versionadded:: 1.2 .. method:: to_matrix() -> ~gi.repository.Graphene.Matrix Converts a quaternion into a transformation matrix expressing the rotation defined by the :obj:`~gi.repository.Graphene.Quaternion`\. .. versionadded:: 1.0 .. method:: to_radians() -> ~typing.Tuple[float, float, float] Converts a :obj:`~gi.repository.Graphene.Quaternion` to its corresponding rotations on the `Euler angles `__ on each axis. .. versionadded:: 1.2 .. method:: to_vec4() -> ~gi.repository.Graphene.Vec4 Copies the components of a :obj:`~gi.repository.Graphene.Quaternion` into a :obj:`~gi.repository.Graphene.Vec4`\. .. versionadded:: 1.0 Fields ------ .. rst-class:: interim-class .. class:: Quaternion :no-index: .. attribute:: w .. attribute:: x .. attribute:: y .. attribute:: z