1 #include "./la.h" 2 3 Vec2f vec2f(float x, float y) 4 { 5 return (Vec2f) { 6 .x = x, 7 .y = y, 8 }; 9 } 10 11 Vec2f vec2fs(float x) 12 { 13 return vec2f(x, x); 14 } 15 16 Vec2f vec2f_add(Vec2f a, Vec2f b) 17 { 18 return vec2f(a.x + b.x, a.y + b.y); 19 } 20 21 Vec2f vec2f_sub(Vec2f a, Vec2f b) 22 { 23 return vec2f(a.x - b.x, a.y - b.y); 24 } 25 26 Vec2f vec2f_mul(Vec2f a, Vec2f b) 27 { 28 return vec2f(a.x * b.x, a.y * b.y); 29 } 30 31 Vec2f vec2f_mul3(Vec2f a, Vec2f b, Vec2f c) 32 { 33 return vec2f_mul(vec2f_mul(a, b), c); 34 } 35 36 Vec2f vec2f_div(Vec2f a, Vec2f b) 37 { 38 return vec2f(a.x / b.x, a.y / b.y); 39 } 40 41 ////////////////////////////// 42 43 Vec2i vec2i(int x, int y) 44 { 45 return (Vec2i) { 46 .x = x, 47 .y = y, 48 }; 49 } 50 51 Vec2i vec2is(int x) 52 { 53 return vec2i(x, x); 54 } 55 56 Vec2i vec2i_add(Vec2i a, Vec2i b) 57 { 58 return vec2i(a.x + b.x, a.y + b.y); 59 } 60 61 Vec2i vec2i_sub(Vec2i a, Vec2i b) 62 { 63 return vec2i(a.x - b.x, a.y - b.y); 64 } 65 66 Vec2i vec2i_mul(Vec2i a, Vec2i b) 67 { 68 return vec2i(a.x * b.x, a.y * b.y); 69 } 70 71 Vec2i vec2i_mul3(Vec2i a, Vec2i b, Vec2i c) 72 { 73 return vec2i_mul(vec2i_mul(a, b), c); 74 } 75 76 Vec2i vec2i_div(Vec2i a, Vec2i b) 77 { 78 return vec2i(a.x / b.x, a.y / b.y); 79 } 80 81 ////////////////////////////// 82 83 Vec4f vec4f(float x, float y, float z, float w) 84 { 85 return (Vec4f) { 86 .x = x, 87 .y = y, 88 .z = z, 89 .w = w, 90 }; 91 } 92 93 Vec4f vec4fs(float x) 94 { 95 return vec4f(x, x, x, x); 96 } 97 98 Vec4f vec4f_add(Vec4f a, Vec4f b) 99 { 100 return vec4f(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w); 101 } 102 103 Vec4f vec4f_sub(Vec4f a, Vec4f b) 104 { 105 return vec4f(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w); 106 } 107 108 Vec4f vec4f_mul(Vec4f a, Vec4f b) 109 { 110 return vec4f(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w); 111 } 112 113 Vec4f vec4f_div(Vec4f a, Vec4f b) 114 { 115 return vec4f(a.x / b.x, a.y / b.y, a.z / b.z, a.w / b.w); 116 } 117 118 float lerpf(float a, float b, float t) 119 { 120 return a + (b - a) * t; 121 }
