| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- .. default-domain:: C
- quaternions
- ===========
- Header: cglm/quat.h
- **Important:** *cglm* stores quaternion as [w, x, y, z] in memory, don't
- forget that when changing quaternion items manually. For instance *quat[3]*
- is *quat.z* and *quat[0*] is *quat.w*. This may change in the future if *cglm*
- will got enough request to do that. Probably it will not be changed in near
- future
- There are some TODOs for quaternions check TODO list to see them.
- Also **versor** is identity quaternion so the type may change to **vec4** or
- something else. This will not affect existing functions for your engine because
- *versor* is alias of *vec4*
- Table of contents (click to go):
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Macros:
- 1. GLM_QUAT_IDENTITY_INIT
- #. GLM_QUAT_IDENTITY
- Functions:
- 1. :c:func:`glm_quat_identity`
- #. :c:func:`glm_quat`
- #. :c:func:`glm_quatv`
- #. :c:func:`glm_quat_norm`
- #. :c:func:`glm_quat_normalize`
- #. :c:func:`glm_quat_dot`
- #. :c:func:`glm_quat_mulv`
- #. :c:func:`glm_quat_mat4`
- #. :c:func:`glm_quat_slerp`
- Functions documentation
- ~~~~~~~~~~~~~~~~~~~~~~~
- .. c:function:: void glm_quat_identity(versor q)
- | makes given quat to identity
- Parameters:
- | *[in, out]* **q** quaternion
- .. c:function:: void glm_quat(versor q, float angle, float x, float y, float z)
- | creates NEW quaternion with individual axis components
- Parameters:
- | *[out]* **q** quaternion
- | *[in]* **angle** angle (radians)
- | *[in]* **x** axis.x
- | *[in]* **y** axis.y
- | *[in]* **z** axis.z
- .. c:function:: void glm_quatv(versor q, float angle, vec3 v)
- | creates NEW quaternion with axis vector
- Parameters:
- | *[out]* **q** quaternion
- | *[in]* **angle** angle (radians)
- | *[in]* **v** axis
- .. c:function:: float glm_quat_norm(versor q)
- | returns norm (magnitude) of quaternion
- Parameters:
- | *[in]* **a** quaternion
- Returns:
- norm (magnitude)
- .. c:function:: void glm_quat_normalize(versor q)
- | normalize quaternion
- Parameters:
- | *[in, out]* **q** quaternion
- .. c:function:: float glm_quat_dot(versor q, versor r)
- dot product of two quaternion
- Parameters:
- | *[in]* **q1** quaternion 1
- | *[in]* **q2** quaternion 2
- Returns:
- dot product
- .. c:function:: void glm_quat_mulv(versor q1, versor q2, versor dest)
- | multiplies two quaternion and stores result in dest
- Parameters:
- | *[in]* **q1** quaternion 1
- | *[in]* **q2** quaternion 2
- | *[out]* **dest** result quaternion
- .. c:function:: void glm_quat_mat4(versor q, mat4 dest)
- | convert quaternion to mat4
- Parameters:
- | *[in]* **q** quaternion
- | *[out]* **dest** result matrix
- .. c:function:: void glm_quat_slerp(versor q, versor r, float t, versor dest)
- | interpolates between two quaternions
- | using spherical linear interpolation (SLERP)
- Parameters:
- | *[in]* **q** from
- | *[in]* **r** to
- | *[in]* **t** amout
- | *[out]* **dest** result quaternion
|