Quaternion ========== .. code:: cpp #include .. 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)