deepstone
diff src/vmath.h @ 25:5ff8ce78059a
first pass at converting the rasterizer to fixed point
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 22 Sep 2013 02:21:30 +0300 |
parents | 00d84ab1ef26 |
children | 61d97b17cd2b |
line diff
1.1 --- a/src/vmath.h Sat Sep 21 20:18:28 2013 +0300 1.2 +++ b/src/vmath.h Sun Sep 22 02:21:30 2013 +0300 1.3 @@ -2,6 +2,7 @@ 1.4 #define VMATH_H_ 1.5 1.6 #include <math.h> 1.7 +#include "fixed_point.h" 1.8 1.9 #ifndef M_PI 1.10 #define M_PI 3.1415926536 1.11 @@ -19,5 +20,61 @@ 1.12 float x, y; 1.13 } vec2_t; 1.14 1.15 +typedef struct { 1.16 + fixed x, y, z, w; 1.17 +} vec4x_t; 1.18 + 1.19 +typedef struct { 1.20 + fixed x, y, z; 1.21 +} vec3x_t; 1.22 + 1.23 +typedef struct { 1.24 + fixed x, y; 1.25 +} vec2x_t; 1.26 + 1.27 + 1.28 +#define vec2_to_fixed2(v, f) \ 1.29 + do { \ 1.30 + f.x = fixedf(v.x); \ 1.31 + f.y = fixedf(v.y); \ 1.32 + } while(0) 1.33 + 1.34 +#define vec3_to_fixed3(v, f) \ 1.35 + do { \ 1.36 + f.x = fixedf(v.x); \ 1.37 + f.y = fixedf(v.y); \ 1.38 + f.z = fixedf(v.z); \ 1.39 + } while(0) 1.40 + 1.41 +#define vec4_to_fixed4(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.w = fixedf(v.w); \ 1.47 + } while(0) 1.48 + 1.49 + 1.50 +#define fixed2_to_vec2(f, v) \ 1.51 + do { \ 1.52 + v.x = fixed_float(f.x); \ 1.53 + v.y = fixed_float(f.y); \ 1.54 + } while(0) 1.55 + 1.56 +#define fixed3_to_vec3(f, v) \ 1.57 + do { \ 1.58 + v.x = fixed_float(f.x); \ 1.59 + v.y = fixed_float(f.y); \ 1.60 + v.z = fixed_float(f.z); \ 1.61 + } while(0) 1.62 + 1.63 +#define fixed4_to_vec4(f, v) \ 1.64 + do { \ 1.65 + v.x = fixed_float(f.x); \ 1.66 + v.y = fixed_float(f.y); \ 1.67 + v.z = fixed_float(f.z); \ 1.68 + v.w = fixed_float(f.w); \ 1.69 + } while(0) 1.70 + 1.71 1.72 #endif /* VMATH_H_ */