affine.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. /*
  2. * Copyright (c), Recep Aslantas.
  3. *
  4. * MIT License (MIT), http://opensource.org/licenses/MIT
  5. * Full license can be found in the LICENSE file
  6. */
  7. #ifndef cglmc_affine_h
  8. #define cglmc_affine_h
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #include "../cglm.h"
  13. CGLM_EXPORT
  14. void
  15. glmc_translate_make(mat4 m, vec3 v);
  16. CGLM_EXPORT
  17. void
  18. glmc_translate_to(mat4 m, vec3 v, mat4 dest);
  19. CGLM_EXPORT
  20. void
  21. glmc_translate(mat4 m, vec3 v);
  22. CGLM_EXPORT
  23. void
  24. glmc_translate_x(mat4 m, float to);
  25. CGLM_EXPORT
  26. void
  27. glmc_translate_y(mat4 m, float to);
  28. CGLM_EXPORT
  29. void
  30. glmc_translate_z(mat4 m, float to);
  31. CGLM_EXPORT
  32. void
  33. glmc_scale_make(mat4 m, vec3 v);
  34. CGLM_EXPORT
  35. void
  36. glmc_scale_to(mat4 m, vec3 v, mat4 dest);
  37. CGLM_EXPORT
  38. void
  39. glmc_scale(mat4 m, vec3 v);
  40. CGLM_EXPORT
  41. void
  42. glmc_scale_uni(mat4 m, float s);
  43. CGLM_EXPORT
  44. void
  45. glmc_rotate_x(mat4 m, float rad, mat4 dest);
  46. CGLM_EXPORT
  47. void
  48. glmc_rotate_y(mat4 m, float rad, mat4 dest);
  49. CGLM_EXPORT
  50. void
  51. glmc_rotate_z(mat4 m, float rad, mat4 dest);
  52. CGLM_EXPORT
  53. void
  54. glmc_rotate_make(mat4 m, float angle, vec3 axis);
  55. CGLM_EXPORT
  56. void
  57. glmc_rotate(mat4 m, float angle, vec3 axis);
  58. CGLM_EXPORT
  59. void
  60. glmc_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis);
  61. CGLM_EXPORT
  62. void
  63. glmc_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis);
  64. CGLM_EXPORT
  65. void
  66. glmc_spin(mat4 m, float angle, vec3 axis);
  67. CGLM_EXPORT
  68. void
  69. glmc_decompose_scalev(mat4 m, vec3 s);
  70. CGLM_EXPORT
  71. bool
  72. glmc_uniscaled(mat4 m);
  73. CGLM_EXPORT
  74. void
  75. glmc_decompose_rs(mat4 m, mat4 r, vec3 s);
  76. CGLM_EXPORT
  77. void
  78. glmc_decompose(mat4 m, vec4 t, mat4 r, vec3 s);
  79. /* affine-post */
  80. CGLM_EXPORT
  81. void
  82. glmc_translated(mat4 m, vec3 v);
  83. CGLM_EXPORT
  84. void
  85. glmc_translated_to(mat4 m, vec3 v, mat4 dest);
  86. CGLM_EXPORT
  87. void
  88. glmc_translated_x(mat4 m, float x);
  89. CGLM_EXPORT
  90. void
  91. glmc_translated_y(mat4 m, float y);
  92. CGLM_EXPORT
  93. void
  94. glmc_translated_z(mat4 m, float z);
  95. CGLM_EXPORT
  96. void
  97. glmc_rotated_x(mat4 m, float angle, mat4 dest);
  98. CGLM_EXPORT
  99. void
  100. glmc_rotated_y(mat4 m, float angle, mat4 dest);
  101. CGLM_EXPORT
  102. void
  103. glmc_rotated_z(mat4 m, float angle, mat4 dest);
  104. CGLM_EXPORT
  105. void
  106. glmc_rotated(mat4 m, float angle, vec3 axis);
  107. CGLM_EXPORT
  108. void
  109. glmc_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis);
  110. CGLM_EXPORT
  111. void
  112. glmc_spinned(mat4 m, float angle, vec3 axis);
  113. /* affine-mat */
  114. CGLM_EXPORT
  115. void
  116. glmc_mul(mat4 m1, mat4 m2, mat4 dest);
  117. CGLM_EXPORT
  118. void
  119. glmc_mul_rot(mat4 m1, mat4 m2, mat4 dest);
  120. CGLM_EXPORT
  121. void
  122. glmc_inv_tr(mat4 mat);
  123. #ifdef __cplusplus
  124. }
  125. #endif
  126. #endif /* cglmc_affine_h */