docs/sphinx/reference-libobs-graphics-quat.rst
.. code:: cpp
#include <graphics/quat.h>
.. struct:: quat
Two component quaternion structure.
.. member:: float quat.x
X component
.. member:: float quat.y
Y component
.. member:: float quat.z
Z component
.. member:: float quat.w
W component
.. member:: float quat.ptr[4]
Unioned array of all components
.. function:: void quat_identity(struct quat *dst)
Sets a quaternion to {0.0f, 0.0f, 0.0f, 1.0f}.
:param dst: Destination
.. function:: void quat_set(struct quat *dst, float x, float y)
Sets the individual components of a quaternion.
:param dst: Destination :param x: X component :param y: Y component :param y: Z component :param w: W component
.. function:: void quat_copy(struct quat *dst, const struct quat *v)
Copies a quaternion
:param dst: Destination :param v: Quaternion to copy
.. function:: void quat_add(struct quat *dst, const struct quat *v1, const struct quat *v2)
Adds two quaternions
:param dst: Destination :param v1: Quaternion 1 :param v2: Quaternion 2
.. function:: void quat_sub(struct quat *dst, const struct quat *v1, const struct quat *v2)
Subtracts two quaternions
:param dst: Destination :param v1: Quaternion being subtracted from :param v2: Quaternion being subtracted
.. function:: void quat_mul(struct quat *dst, const struct quat *v1, const struct quat *v2)
Multiplies two quaternions
:param dst: Destination :param v1: Quaternion 1 :param v2: Quaternion 2
.. function:: void quat_addf(struct quat *dst, const struct quat *v, float f)
Adds a floating point to all components
:param dst: Destination :param dst: Quaternion :param f: Floating point
.. function:: void quat_subf(struct quat *dst, const struct quat *v, float f)
Subtracts a floating point from all components
:param dst: Destination :param v: Quaternion being subtracted from :param f: Floating point being subtracted
.. function:: void quat_mulf(struct quat *dst, const struct quat *v, float f)
Multiplies a floating point with all components
:param dst: Destination :param dst: Quaternion :param f: Floating point
.. function:: void quat_inv(struct quat *dst, const struct quat *v)
Inverts a quaternion
:param dst: Destination :param v: Quaternion to invert
.. function:: float quat_dot(const struct quat *v1, const struct quat *v2)
Performs a dot product between two quaternions
:param v1: Quaternion 1 :param v2: Quaternion 2 :return: Result of the dot product
.. function:: float quat_len(const struct quat *v)
Gets the length of a quaternion
:param v: Quaternion :return: The quaternion's length
.. function:: float quat_dist(const struct quat *v1, const struct quat *v2)
Gets the distance between two quaternions
:param v1: Quaternion 1 :param v2: Quaternion 2 :return: Distance between the two quaternions
.. function:: void quat_from_axisang(struct quat *dst, const struct axisang *aa)
Converts an axis angle to a quaternion
:param dst: Destination quaternion :param aa: Axis angle
.. function:: void quat_from_matrix4(struct quat *dst, const struct matrix4 *m)
Converts the rotational properties of a matrix to a quaternion
:param dst: Destination quaternion :param m: Matrix to convert
.. function:: void quat_get_dir(struct vec3 *dst, const struct quat *q)
Converts a quaternion to a directional vector
:param dst: Destination 3-component vector :param q: Quaternion
.. function:: void quat_set_look_dir(struct quat *dst, const struct vec3 *dir)
Creates a quaternion from a specific "look" direction
:param dst: Destination quaternion :param dir: 3-component vector representing the look direction
.. function:: void quat_interpolate(struct quat *dst, const struct quat *q1, const struct quat *q2, float t)
Linearly interpolates two quaternions
:param dst: Destination quaternion :param q1: Quaternion 1 :param q2: Quaternion 2 :param t: Time value (0.0f..1.0f)
.. function:: void quat_get_tangent(struct quat *dst, const struct quat *prev, const struct quat *q, const struct quat *next)
Gets a tangent value for the center of three rotational values
:param dst: Destination quaternion :param prev: Previous rotation :param q: Rotation to get tangent for :param next: Next rotation
.. function:: void quat_interpolate_cubic(struct quat *dst, const struct quat *q1, const struct quat *q2, const struct quat *m1, const struct quat *m2, float t)
Performs cubic interpolation between two quaternions
:param dst: Destination quaternion :param q1: Quaternion 1 :param q2: Quaternion 2 :param m1: Tangent 1 :param m2: Tangent 2 :param t: Time value (0.0f..1.0f)