deepstone
diff src/vmath.h @ 28:11d14f688485
added clipping
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 22 Sep 2013 06:38:08 +0300 |
parents | 61d97b17cd2b |
children |
line diff
1.1 --- a/src/vmath.h Sun Sep 22 02:47:46 2013 +0300 1.2 +++ b/src/vmath.h Sun Sep 22 06:38:08 2013 +0300 1.3 @@ -32,48 +32,73 @@ 1.4 fixed x, y; 1.5 } vec2x_t; 1.6 1.7 +typedef struct { 1.8 + vec3_t origin, dir; 1.9 +} ray3_t; 1.10 + 1.11 +#define vec3_dot(a, b) ((a).x * (b).x + (a).y * (b).y + (a).z * (b).z) 1.12 + 1.13 +#define vec2_lerp(res, a, b, t) \ 1.14 + do { \ 1.15 + (res).x = (a).x + ((b).x - (a).x) * (t); \ 1.16 + (res).y = (a).y + ((b).y - (a).y) * (t); \ 1.17 + } while(0) 1.18 + 1.19 +#define vec3_lerp(res, a, b, t) \ 1.20 + do { \ 1.21 + (res).x = (a).x + ((b).x - (a).x) * (t); \ 1.22 + (res).y = (a).y + ((b).y - (a).y) * (t); \ 1.23 + (res).z = (a).z + ((b).z - (a).z) * (t); \ 1.24 + } while(0) 1.25 + 1.26 +#define ray3_point(res, ray, t) \ 1.27 + do { \ 1.28 + (res).x = (ray).origin.x + (ray).dir.x * (t); \ 1.29 + (res).y = (ray).origin.y + (ray).dir.y * (t); \ 1.30 + (res).z = (ray).origin.z + (ray).dir.z * (t); \ 1.31 + } while(0) 1.32 1.33 #define vec2_to_fixed2(v, f) \ 1.34 do { \ 1.35 - f.x = fixedf(v.x); \ 1.36 - f.y = fixedf(v.y); \ 1.37 + (f).x = fixedf((v).x); \ 1.38 + (f).y = fixedf((v).y); \ 1.39 } while(0) 1.40 1.41 #define vec3_to_fixed3(v, f) \ 1.42 do { \ 1.43 - f.x = fixedf(v.x); \ 1.44 - f.y = fixedf(v.y); \ 1.45 - f.z = fixedf(v.z); \ 1.46 + (f).x = fixedf((v).x); \ 1.47 + (f).y = fixedf((v).y); \ 1.48 + (f).z = fixedf((v).z); \ 1.49 } while(0) 1.50 1.51 #define vec4_to_fixed4(v, f) \ 1.52 do { \ 1.53 - f.x = fixedf(v.x); \ 1.54 - f.y = fixedf(v.y); \ 1.55 - f.z = fixedf(v.z); \ 1.56 - f.w = fixedf(v.w); \ 1.57 + (f).x = fixedf((v).x); \ 1.58 + (f).y = fixedf((v).y); \ 1.59 + (f).z = fixedf((v).z); \ 1.60 + (f).w = fixedf((v).w); \ 1.61 } while(0) 1.62 1.63 1.64 #define fixed2_to_vec2(f, v) \ 1.65 do { \ 1.66 - v.x = fixed_float(f.x); \ 1.67 - v.y = fixed_float(f.y); \ 1.68 + (v).x = fixed_float((f).x); \ 1.69 + (v).y = fixed_float((f).y); \ 1.70 } while(0) 1.71 1.72 #define fixed3_to_vec3(f, v) \ 1.73 do { \ 1.74 - v.x = fixed_float(f.x); \ 1.75 - v.y = fixed_float(f.y); \ 1.76 - v.z = fixed_float(f.z); \ 1.77 + (v).x = fixed_float((f).x); \ 1.78 + (v).y = fixed_float((f).y); \ 1.79 + (v).z = fixed_float((f).z); \ 1.80 } while(0) 1.81 1.82 #define fixed4_to_vec4(f, v) \ 1.83 do { \ 1.84 - v.x = fixed_float(f.x); \ 1.85 - v.y = fixed_float(f.y); \ 1.86 - v.z = fixed_float(f.z); \ 1.87 - v.w = fixed_float(f.w); \ 1.88 + (v).x = fixed_float((f).x); \ 1.89 + (v).y = fixed_float((f).y); \ 1.90 + (v).z = fixed_float((f).z); \ 1.91 + (v).w = fixed_float((f).w); \ 1.92 } while(0) 1.93 1.94