Serious-Engine/Sources/LWSkaExporter/SDK/lwmath.h
2016-03-11 15:57:17 +02:00

51 lines
1.8 KiB
C

#ifndef LWMATH_H
#define LWMATH_H
#ifndef PI
#define PI (3.14159265358979324)
#endif
#ifndef TWOPI
#define TWOPI (2.0 * PI)
#endif
#ifndef HALFPI
#define HALFPI (0.5 * PI)
#endif
#define VSET(a,x) ((a)[0]=(x), (a)[1]=(x), (a)[2]=(x))
#define VCLR(a) VSET(a,0.0)
#define VCPY(a,b) ((a)[0] =(b)[0], (a)[1] =(b)[1], (a)[2] =(b)[2])
#define VSCL(a,x) ((a)[0]*= (x), (a)[1]*= (x), (a)[2]*= (x))
#define VADD(a,b) ((a)[0]+=(b)[0], (a)[1]+=(b)[1], (a)[2]+=(b)[2])
#define VSUB(a,b) ((a)[0]-=(b)[0], (a)[1]-=(b)[1], (a)[2]-=(b)[2])
#define VADDS(a,b,x) ((a)[0]+=(b)[0]*(x), (a)[1]+=(b)[1]*(x), (a)[2]+=(b)[2]*(x))
#define VSCL3(r,a,x) ((r)[0]=(a)[0]*(x), (r)[1]=(a)[1]*(x), (r)[2]=(a)[2]*(x))
#define VADD3(r,a,b) ((r)[0]=(a)[0]+(b)[0], (r)[1]=(a)[1]+(b)[1], (r)[2]=(a)[2]+(b)[2])
#define VSUB3(r,a,b) ((r)[0]=(a)[0]-(b)[0], (r)[1]=(a)[1]-(b)[1], (r)[2]=(a)[2]-(b)[2])
#define VADDS3(r,a,b,x) ((r)[0]=(a)[0]+(b)[0]*(x), (r)[1]=(a)[1]+(b)[1]*(x), (r)[2]=(a)[2]+(b)[2]*(x))
#define VDOT(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2])
#define VLEN(a) sqrt(VDOT(a,a))
#define VCROSS(r,a,b) ((r)[0] = (a)[1]*(b)[2] - (a)[2]*(b)[1],\
(r)[1] = (a)[2]*(b)[0] - (a)[0]*(b)[2],\
(r)[2] = (a)[0]*(b)[1] - (a)[1]*(b)[0])
#define VMUL3(r,a,b) ((r)[0]=(a)[0]*(b)[0], (r)[1]=(a)[1]*(b)[1], (r)[2]=(a)[2]*(b)[2])
#ifndef ABS
#define ABS(a) ((a < 0) ? (-(a)) : (a))
#endif
#ifndef MAX
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
#define CLAMP(a,b,c) (((a) < (b)) ? (b) : (((a) > (c)) ? (c) : (a)))
#define SWAP(a,b) { a^=b; b^=a; a^=b; }
#define RADIANS(deg) ((deg)*0.017453292519943295769236907684886)
#define DEGREES(rad) ((rad)*57.2957795130823208767981548141052)
#endif