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 
8 #ifndef cglmc_vec2_h
9 #define cglmc_vec2_h
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #include "../cglm.h"
15 
16 CGLM_EXPORT
17 void
18 glmc_vec2(float * __restrict v, vec2 dest);
19 
20 CGLM_EXPORT
21 void
22 glmc_vec2_copy(vec2 a, vec2 dest);
23 
24 CGLM_EXPORT
25 void
26 glmc_vec2_zero(vec2 v);
27 
28 CGLM_EXPORT
29 void
30 glmc_vec2_one(vec2 v);
31 
32 CGLM_EXPORT
33 float
34 glmc_vec2_dot(vec2 a, vec2 b);
35 
36 CGLM_EXPORT
37 float
38 glmc_vec2_cross(vec2 a, vec2 b);
39 
40 CGLM_EXPORT
41 float
42 glmc_vec2_norm2(vec2 v);
43 
44 CGLM_EXPORT
45 float
46 glmc_vec2_norm(vec2 v);
47 
48 CGLM_EXPORT
49 void
50 glmc_vec2_add(vec2 a, vec2 b, vec2 dest);
51 
52 CGLM_EXPORT
53 void
54 glmc_vec2_adds(vec2 v, float s, vec2 dest);
55 
56 CGLM_EXPORT
57 void
58 glmc_vec2_sub(vec2 a, vec2 b, vec2 dest);
59 
60 CGLM_EXPORT
61 void
62 glmc_vec2_subs(vec2 v, float s, vec2 dest);
63 
64 CGLM_EXPORT
65 void
66 glmc_vec2_mul(vec2 a, vec2 b, vec2 dest);
67 
68 CGLM_EXPORT
69 void
70 glmc_vec2_scale(vec2 v, float s, vec2 dest);
71 
72 CGLM_EXPORT
73 void
74 glmc_vec2_scale_as(vec2 v, float s, vec2 dest);
75 
76 CGLM_EXPORT
77 void
78 glmc_vec2_div(vec2 a, vec2 b, vec2 dest);
79 
80 CGLM_EXPORT
81 void
82 glmc_vec2_divs(vec2 v, float s, vec2 dest);
83 
84 CGLM_EXPORT
85 void
86 glmc_vec2_addadd(vec2 a, vec2 b, vec2 dest);
87 
88 CGLM_EXPORT
89 void
90 glmc_vec2_subadd(vec2 a, vec2 b, vec2 dest);
91 
92 CGLM_EXPORT
93 void
94 glmc_vec2_muladd(vec2 a, vec2 b, vec2 dest);
95 
96 CGLM_EXPORT
97 void
98 glmc_vec2_muladds(vec2 a, float s, vec2 dest);
99 
100 CGLM_EXPORT
101 void
102 glmc_vec2_maxadd(vec2 a, vec2 b, vec2 dest);
103 
104 CGLM_EXPORT
105 void
106 glmc_vec2_minadd(vec2 a, vec2 b, vec2 dest);
107 
108 CGLM_EXPORT
109 void
110 glmc_vec2_negate_to(vec2 v, vec2 dest);
111 
112 CGLM_EXPORT
113 void
114 glmc_vec2_negate(vec2 v);
115 
116 CGLM_EXPORT
117 void
118 glmc_vec2_normalize(vec2 v);
119 
120 CGLM_EXPORT
121 void
122 glmc_vec2_normalize_to(vec2 v, vec2 dest);
123 
124 CGLM_EXPORT
125 void
126 glmc_vec2_rotate(vec2 v, float angle, vec2 dest);
127 
128 CGLM_EXPORT
129 float
130 glmc_vec2_distance2(vec2 a, vec2 b);
131 
132 CGLM_EXPORT
133 float
134 glmc_vec2_distance(vec2 a, vec2 b);
135 
136 CGLM_EXPORT
137 void
138 glmc_vec2_maxv(vec2 a, vec2 b, vec2 dest);
139 
140 CGLM_EXPORT
141 void
142 glmc_vec2_minv(vec2 a, vec2 b, vec2 dest);
143 
144 CGLM_EXPORT
145 void
146 glmc_vec2_clamp(vec2 v, float minval, float maxval);
147 
148 CGLM_EXPORT
149 void
150 glmc_vec2_lerp(vec2 from, vec2 to, float t, vec2 dest);
151 
152 #ifdef __cplusplus
153 }
154 #endif
155 #endif /* cglmc_vec2_h */
156