affine2d.rst 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. .. default-domain:: C
  2. 2D Affine Transforms
  3. ================================================================================
  4. Header: cglm/affine2d.h
  5. 2D Transforms uses `2d` suffix for naming. If there is no 2D suffix it is 3D function.
  6. Initialize Transform Matrices
  7. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  8. Functions with **_make** prefix expect you don't have a matrix and they create
  9. a matrix for you. You don't need to pass identity matrix.
  10. But other functions expect you have a matrix and you want to transform them. If
  11. you didn't have any existing matrix you have to initialize matrix to identity
  12. before sending to transfrom functions.
  13. Transforms Order
  14. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. See :ref:`TransformsOrder` to read similar section.
  16. Table of contents (click to go):
  17. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  18. Functions:
  19. 1. :c:func:`glm_translate2d`
  20. #. :c:func:`glm_translate2d_to`
  21. #. :c:func:`glm_translate2d_x`
  22. #. :c:func:`glm_translate2d_y`
  23. #. :c:func:`glm_translate2d_make`
  24. #. :c:func:`glm_scale2d_to`
  25. #. :c:func:`glm_scale2d_make`
  26. #. :c:func:`glm_scale2d`
  27. #. :c:func:`glm_scale2d_uni`
  28. #. :c:func:`glm_rotate2d_make`
  29. #. :c:func:`glm_rotate2d`
  30. #. :c:func:`glm_rotate2d_to`
  31. .. c:function:: void glm_translate2d(mat3 m, vec2 v)
  32. translate existing 2d transform matrix by *v* vector and stores result in same matrix
  33. Parameters:
  34. | *[in, out]* **m** 2d affine transfrom
  35. | *[in]* **v** translate vector [x, y]
  36. .. c:function:: void glm_translate2d_to(mat3 m, vec2 v, mat3 dest)
  37. translate existing 2d transform matrix by *v* vector and store result in dest
  38. Parameters:
  39. | *[in]* **m** 2d affine transfrom
  40. | *[in]* **v** translate vector [x, y]
  41. | *[out]* **dest** translated matrix
  42. .. c:function:: void glm_translate2d_x(mat3 m, float x)
  43. translate existing 2d transform matrix by x factor
  44. Parameters:
  45. | *[in, out]* **m** 2d affine transfrom
  46. | *[in]* **x** x factor
  47. .. c:function:: void glm_translate2d_y(mat3 m, float y)
  48. translate existing 2d transform matrix by y factor
  49. Parameters:
  50. | *[in, out]* **m** 2d affine transfrom
  51. | *[in]* **y** y factor
  52. .. c:function:: void glm_translate2d_make(mat3 m, vec2 v)
  53. creates NEW translate 2d transform matrix by *v* vector
  54. Parameters:
  55. | *[in, out]* **m** affine transfrom
  56. | *[in]* **v** translate vector [x, y]
  57. .. c:function:: void glm_scale2d_to(mat3 m, vec2 v, mat3 dest)
  58. scale existing 2d transform matrix by *v* vector and store result in dest
  59. Parameters:
  60. | *[in]* **m** affine transfrom
  61. | *[in]* **v** scale vector [x, y]
  62. | *[out]* **dest** scaled matrix
  63. .. c:function:: void glm_scale2d_make(mat3 m, vec2 v)
  64. creates NEW 2d scale matrix by *v* vector
  65. Parameters:
  66. | *[in, out]* **m** affine transfrom
  67. | *[in]* **v** scale vector [x, y]
  68. .. c:function:: void glm_scale2d(mat3 m, vec2 v)
  69. scales existing 2d transform matrix by *v* vector and stores result in same matrix
  70. Parameters:
  71. | *[in, out]* **m** affine transfrom
  72. | *[in]* **v** translate vector [x, y]
  73. .. c:function:: void glm_scale2d_uni(mat3 m, float s)
  74. applies uniform scale to existing 2d transform matrix v = [s, s] and stores result in same matrix
  75. Parameters:
  76. | *[in, out]* **m** affine transfrom
  77. | *[in]* **s** scale factor
  78. .. c:function:: void glm_rotate2d_make(mat3 m, float angle)
  79. creates NEW rotation matrix by angle around *Z* axis
  80. Parameters:
  81. | *[in, out]* **m** affine transfrom
  82. | *[in]* **angle** angle (radians)
  83. .. c:function:: void glm_rotate2d(mat3 m, float angle)
  84. rotate existing 2d transform matrix around *Z* axis by angle and store result in same matrix
  85. Parameters:
  86. | *[in, out]* **m** affine transfrom
  87. | *[in]* **angle** angle (radians)
  88. .. c:function:: void glm_rotate2d_to(mat3 m, float angle, mat3 dest)
  89. rotate existing 2d transform matrix around *Z* axis by angle and store result in dest
  90. Parameters:
  91. | *[in]* **m** affine transfrom
  92. | *[in]* **angle** angle (radians)
  93. | *[out]* **dest** rotated matrix