:right-sidebar: True Quaternion =================================================================== .. currentmodule:: gi.repository.Graphene .. versionadded:: 1.0 .. class:: Quaternion(*args, **kwargs) :no-contents-entry: :Constructors: :: Quaternion() alloc() -> Graphene.Quaternion 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() -> tuple[float, ~gi.repository.Graphene.Vec3] Converts a quaternion into an ``angle``, ``axis`` pair. .. versionadded:: 1.0 .. method:: to_angles() -> 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() -> 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