affine-common.rst 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. .. default-domain:: C
  2. 3D Affine Transforms (common)
  3. ================================================================================
  4. Common transfrom functions.
  5. Table of contents (click to go):
  6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7. Functions:
  8. 1. :c:func:`glm_translate_make`
  9. #. :c:func:`glm_scale_to`
  10. #. :c:func:`glm_scale_make`
  11. #. :c:func:`glm_scale`
  12. #. :c:func:`glm_scale_uni`
  13. #. :c:func:`glm_rotate_make`
  14. #. :c:func:`glm_rotate_atm`
  15. #. :c:func:`glm_decompose_scalev`
  16. #. :c:func:`glm_uniscaled`
  17. #. :c:func:`glm_decompose_rs`
  18. #. :c:func:`glm_decompose`
  19. Functions documentation
  20. ~~~~~~~~~~~~~~~~~~~~~~~
  21. .. c:function:: void glm_translate_make(mat4 m, vec3 v)
  22. creates NEW translate transform matrix by *v* vector.
  23. Parameters:
  24. | *[in, out]* **m** affine transfrom
  25. | *[in]* **v** translate vector [x, y, z]
  26. .. c:function:: void glm_scale_to(mat4 m, vec3 v, mat4 dest)
  27. scale existing transform matrix by *v* vector and store result in dest
  28. Parameters:
  29. | *[in]* **m** affine transfrom
  30. | *[in]* **v** scale vector [x, y, z]
  31. | *[out]* **dest** scaled matrix
  32. .. c:function:: void glm_scale_make(mat4 m, vec3 v)
  33. creates NEW scale matrix by v vector
  34. Parameters:
  35. | *[out]* **m** affine transfrom
  36. | *[in]* **v** scale vector [x, y, z]
  37. .. c:function:: void glm_scale(mat4 m, vec3 v)
  38. scales existing transform matrix by v vector
  39. and stores result in same matrix
  40. Parameters:
  41. | *[in, out]* **m** affine transfrom
  42. | *[in]* **v** scale vector [x, y, z]
  43. .. c:function:: void glm_scale_uni(mat4 m, float s)
  44. applies uniform scale to existing transform matrix v = [s, s, s]
  45. and stores result in same matrix
  46. Parameters:
  47. | *[in, out]* **m** affine transfrom
  48. | *[in]* **v** scale factor
  49. .. c:function:: void glm_rotate_make(mat4 m, float angle, vec3 axis)
  50. creates NEW rotation matrix by angle and axis,
  51. axis will be normalized so you don't need to normalize it
  52. Parameters:
  53. | *[out]* **m** affine transfrom
  54. | *[in]* **axis** angle (radians)
  55. | *[in]* **axis** axis
  56. .. c:function:: void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis)
  57. | creates NEW rotation matrix by angle and axis at given point
  58. | this creates rotation matrix, it assumes you don't have a matrix
  59. | this should work faster than glm_rotate_at because it reduces one glm_translate.
  60. Parameters:
  61. | *[in, out]* **m** affine transfrom
  62. | *[in]* **pivot** pivot, anchor point, rotation center
  63. | *[in]* **angle** angle (radians)
  64. | *[in]* **axis** axis
  65. .. c:function:: void glm_decompose_scalev(mat4 m, vec3 s)
  66. decompose scale vector
  67. Parameters:
  68. | *[in]* **m** affine transform
  69. | *[out]* **s** scale vector (Sx, Sy, Sz)
  70. .. c:function:: bool glm_uniscaled(mat4 m)
  71. returns true if matrix is uniform scaled.
  72. This is helpful for creating normal matrix.
  73. Parameters:
  74. | *[in]* **m** matrix
  75. .. c:function:: void glm_decompose_rs(mat4 m, mat4 r, vec3 s)
  76. decompose rotation matrix (mat4) and scale vector [Sx, Sy, Sz]
  77. DON'T pass projected matrix here
  78. Parameters:
  79. | *[in]* **m** affine transform
  80. | *[out]* **r** rotation matrix
  81. | *[out]* **s** scale matrix
  82. .. c:function:: void glm_decompose(mat4 m, vec4 t, mat4 r, vec3 s)
  83. decompose affine transform, TODO: extract shear factors.
  84. DON'T pass projected matrix here
  85. Parameters:
  86. | *[in]* **m** affine transfrom
  87. | *[out]* **t** translation vector
  88. | *[out]* **r** rotation matrix (mat4)
  89. | *[out]* **s** scaling vector [X, Y, Z]