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