reference-libobs-graphics-quat.rst 5.2 KB
Newer Older
J
jp9000 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
Quaternion
==========

.. code:: cpp

   #include <graphics/quat.h>

.. type:: 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)