1
0

vec2.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  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_vec2_h
  8. #define cglmc_vec2_h
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #include "../cglm.h"
  13. CGLM_EXPORT
  14. void
  15. glmc_vec2(float * __restrict v, vec2 dest);
  16. CGLM_EXPORT
  17. void
  18. glmc_vec2_fill(vec2 v, float val);
  19. CGLM_EXPORT
  20. bool
  21. glmc_vec2_eq(vec2 v, float val);
  22. CGLM_EXPORT
  23. bool
  24. glmc_vec2_eqv(vec2 a, vec2 b);
  25. CGLM_EXPORT
  26. void
  27. glmc_vec2_copy(vec2 a, vec2 dest);
  28. CGLM_EXPORT
  29. void
  30. glmc_vec2_zero(vec2 v);
  31. CGLM_EXPORT
  32. void
  33. glmc_vec2_one(vec2 v);
  34. CGLM_EXPORT
  35. float
  36. glmc_vec2_dot(vec2 a, vec2 b);
  37. CGLM_EXPORT
  38. float
  39. glmc_vec2_cross(vec2 a, vec2 b);
  40. CGLM_EXPORT
  41. float
  42. glmc_vec2_norm2(vec2 v);
  43. CGLM_EXPORT
  44. float
  45. glmc_vec2_norm(vec2 v);
  46. CGLM_EXPORT
  47. void
  48. glmc_vec2_add(vec2 a, vec2 b, vec2 dest);
  49. CGLM_EXPORT
  50. void
  51. glmc_vec2_adds(vec2 v, float s, vec2 dest);
  52. CGLM_EXPORT
  53. void
  54. glmc_vec2_sub(vec2 a, vec2 b, vec2 dest);
  55. CGLM_EXPORT
  56. void
  57. glmc_vec2_subs(vec2 v, float s, vec2 dest);
  58. CGLM_EXPORT
  59. void
  60. glmc_vec2_mul(vec2 a, vec2 b, vec2 dest);
  61. CGLM_EXPORT
  62. void
  63. glmc_vec2_scale(vec2 v, float s, vec2 dest);
  64. CGLM_EXPORT
  65. void
  66. glmc_vec2_scale_as(vec2 v, float s, vec2 dest);
  67. CGLM_EXPORT
  68. void
  69. glmc_vec2_div(vec2 a, vec2 b, vec2 dest);
  70. CGLM_EXPORT
  71. void
  72. glmc_vec2_divs(vec2 v, float s, vec2 dest);
  73. CGLM_EXPORT
  74. void
  75. glmc_vec2_addadd(vec2 a, vec2 b, vec2 dest);
  76. CGLM_EXPORT
  77. void
  78. glmc_vec2_subadd(vec2 a, vec2 b, vec2 dest);
  79. CGLM_EXPORT
  80. void
  81. glmc_vec2_muladd(vec2 a, vec2 b, vec2 dest);
  82. CGLM_EXPORT
  83. void
  84. glmc_vec2_muladds(vec2 a, float s, vec2 dest);
  85. CGLM_EXPORT
  86. void
  87. glmc_vec2_maxadd(vec2 a, vec2 b, vec2 dest);
  88. CGLM_EXPORT
  89. void
  90. glmc_vec2_minadd(vec2 a, vec2 b, vec2 dest);
  91. CGLM_EXPORT
  92. void
  93. glmc_vec2_subsub(vec2 a, vec2 b, vec2 dest);
  94. CGLM_EXPORT
  95. void
  96. glmc_vec2_addsub(vec2 a, vec2 b, vec2 dest);
  97. CGLM_EXPORT
  98. void
  99. glmc_vec2_mulsub(vec2 a, vec2 b, vec2 dest);
  100. CGLM_EXPORT
  101. void
  102. glmc_vec2_mulsubs(vec2 a, float s, vec2 dest);
  103. CGLM_EXPORT
  104. void
  105. glmc_vec2_maxsub(vec2 a, vec2 b, vec2 dest);
  106. CGLM_EXPORT
  107. void
  108. glmc_vec2_minsub(vec2 a, vec2 b, vec2 dest);
  109. CGLM_EXPORT
  110. void
  111. glmc_vec2_negate_to(vec2 v, vec2 dest);
  112. CGLM_EXPORT
  113. void
  114. glmc_vec2_negate(vec2 v);
  115. CGLM_EXPORT
  116. void
  117. glmc_vec2_normalize(vec2 v);
  118. CGLM_EXPORT
  119. void
  120. glmc_vec2_normalize_to(vec2 v, vec2 dest);
  121. CGLM_EXPORT
  122. void
  123. glmc_vec2_rotate(vec2 v, float angle, vec2 dest);
  124. CGLM_EXPORT
  125. void
  126. glmc_vec2_center(vec2 a, vec2 b, vec2 dest);
  127. CGLM_EXPORT
  128. float
  129. glmc_vec2_distance2(vec2 a, vec2 b);
  130. CGLM_EXPORT
  131. float
  132. glmc_vec2_distance(vec2 a, vec2 b);
  133. CGLM_EXPORT
  134. void
  135. glmc_vec2_maxv(vec2 a, vec2 b, vec2 dest);
  136. CGLM_EXPORT
  137. void
  138. glmc_vec2_minv(vec2 a, vec2 b, vec2 dest);
  139. CGLM_EXPORT
  140. void
  141. glmc_vec2_clamp(vec2 v, float minval, float maxval);
  142. CGLM_EXPORT
  143. void
  144. glmc_vec2_abs(vec2 v, vec2 dest);
  145. CGLM_EXPORT
  146. void
  147. glmc_vec2_fract(vec2 v, vec2 dest);
  148. CGLM_EXPORT
  149. void
  150. glmc_vec2_floor(vec2 v, vec2 dest);
  151. CGLM_EXPORT
  152. void
  153. glmc_vec2_mods(vec2 v, float s, vec2 dest);
  154. CGLM_EXPORT
  155. void
  156. glmc_vec2_swizzle(vec2 v, int mask, vec2 dest);
  157. CGLM_EXPORT
  158. void
  159. glmc_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest);
  160. CGLM_EXPORT
  161. void
  162. glmc_vec2_step(vec2 edge, vec2 x, vec2 dest);
  163. CGLM_EXPORT
  164. void
  165. glmc_vec2_steps(float edge, vec2 x, vec2 dest);
  166. CGLM_EXPORT
  167. void
  168. glmc_vec2_stepr(vec2 edge, float x, vec2 dest);
  169. CGLM_EXPORT
  170. void
  171. glmc_vec2_complex_mul(vec2 a, vec2 b, vec2 dest);
  172. CGLM_EXPORT
  173. void
  174. glmc_vec2_complex_div(vec2 a, vec2 b, vec2 dest);
  175. CGLM_EXPORT
  176. void
  177. glmc_vec2_complex_conjugate(vec2 a, vec2 dest);
  178. CGLM_EXPORT
  179. void
  180. glmc_vec2_make(const float * __restrict src, vec2 dest);
  181. CGLM_EXPORT
  182. void
  183. glmc_vec2_reflect(vec2 v, vec2 n, vec2 dest);
  184. CGLM_EXPORT
  185. bool
  186. glmc_vec2_refract(vec2 v, vec2 n, float eta, vec2 dest);
  187. #ifdef __cplusplus
  188. }
  189. #endif
  190. #endif /* cglmc_vec2_h */