diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2017-01-24 14:15:25 -0900 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2017-01-24 14:15:25 -0900 |
commit | 7f362ff033196b4c60f2c4279fd0f357844227b3 (patch) | |
tree | a8a46f27dc1b03bb1501fe41b1d1373e20b043d7 /inc/shared/matrix.h | |
parent | 149617bab9a13c60e78009734b619f1c1238cd12 (diff) |
Fewer globals
Diffstat (limited to 'inc/shared/matrix.h')
-rw-r--r-- | inc/shared/matrix.h | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/inc/shared/matrix.h b/inc/shared/matrix.h index b106d8c..7574edf 100644 --- a/inc/shared/matrix.h +++ b/inc/shared/matrix.h @@ -64,8 +64,9 @@ typedef struct { (d)[2]=(a)[2]+(b)[2]*(c)[2]) #define VectorEmpty(v) ((v)[0]==0&&(v)[1]==0&&(v)[2]==0) #define VectorCompare(v1,v2) ((v1)[0]==(v2)[0]&&(v1)[1]==(v2)[1]&&(v1)[2]==(v2)[2]) -#define VectorLength(v) (sqrt(DotProduct((v),(v)))) -#define VectorLengthSquared(v) (DotProduct((v),(v))) +#define VectorLength(v) sqrt(DotProduct((v),(v))) +#define VectorLengthSquared(v) DotProduct((v),(v)) + #define VectorScale(in,scale,out) \ ((out)[0]=(in)[0]*(scale), \ (out)[1]=(in)[1]*(scale), \ @@ -74,6 +75,16 @@ typedef struct { ((out)[0]=(in)[0]*(scale)[0], \ (out)[1]=(in)[1]*(scale)[1], \ (out)[2]=(in)[2]*(scale)[2]) + +#define VectorScaleAcc(in,scale,out) \ + ((out)[0]+=(in)[0]*(scale), \ + (out)[1]+=(in)[1]*(scale), \ + (out)[2]+=(in)[2]*(scale)) +#define VectorVectorScaleAcc(in,scale,out) \ + ((out)[0]+=(in)[0]*(scale)[0], \ + (out)[1]+=(in)[1]*(scale)[1], \ + (out)[2]+=(in)[2]*(scale)[2]) + #define DistanceSquared(v1,v2) \ (((v1)[0]-(v2)[0])*((v1)[0]-(v2)[0])+ \ ((v1)[1]-(v2)[1])*((v1)[1]-(v2)[1])+ \ @@ -83,14 +94,17 @@ typedef struct { ((d)[0]=LerpAngle((a)[0],(b)[0],c), \ (d)[1]=LerpAngle((a)[1],(b)[1],c), \ (d)[2]=LerpAngle((a)[2],(b)[2],c)) + #define LerpVector(a,b,c,d) \ ((d)[0]=(a)[0]+(c)*((b)[0]-(a)[0]), \ (d)[1]=(a)[1]+(c)*((b)[1]-(a)[1]), \ (d)[2]=(a)[2]+(c)*((b)[2]-(a)[2])) -#define LerpVector2(a,b,c,d,e) \ - ((e)[0]=(a)[0]*(c)+(b)[0]*(d), \ - (e)[1]=(a)[1]*(c)+(b)[1]*(d), \ - (e)[2]=(a)[2]*(c)+(b)[2]*(d)) + +#define LerpVector2(a,b,c,d,e) \ + (VectorClear(e), \ + VectorScaleAcc(a, c, e), \ + VectorScaleAcc(b, d, e)) + #define PlaneDiff(v,p) (DotProduct(v,(p)->normal)-(p)->dist) #define Vector4Subtract(a,b,c) ((c)[0]=(a)[0]-(b)[0],(c)[1]=(a)[1]-(b)[1],(c)[2]=(a)[2]-(b)[2],(c)[3]=(a)[3]-(b)[3]) |