quake-hipnotic-sdk/utils/qbsp/mathlib.h
1997-03-11 00:00:00 +00:00

48 lines
1.1 KiB
C

#ifndef __mathlib__
#define __mathlib__
// mathlib.h
#include <math.h>
#ifdef doublevec_t
typedef double vec_t;
#else
typedef float vec_t;
#endif
typedef vec_t vec3_t[3];
#define side_front 0
#define side_on 2
#define side_back 1
#define side_cross -2
#define q_pi 3.14159265358979323846
extern vec3_t vec3_origin;
#define equal_epsilon 0.001
qboolean vectorcompare (vec3_t v1, vec3_t v2);
#define dotproduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
#define vectorsubtract(a,b,c) {c[0]=a[0]-b[0];c[1]=a[1]-b[1];c[2]=a[2]-b[2];}
#define vectoradd(a,b,c) {c[0]=a[0]+b[0];c[1]=a[1]+b[1];c[2]=a[2]+b[2];}
#define vectorcopy(a,b) {b[0]=a[0];b[1]=a[1];b[2]=a[2];}
vec_t q_rint (vec_t in);
vec_t _dotproduct (vec3_t v1, vec3_t v2);
void _vectorsubtract (vec3_t va, vec3_t vb, vec3_t out);
void _vectoradd (vec3_t va, vec3_t vb, vec3_t out);
void _vectorcopy (vec3_t in, vec3_t out);
double vectorlength(vec3_t v);
void vectorma (vec3_t va, double scale, vec3_t vb, vec3_t vc);
void crossproduct (vec3_t v1, vec3_t v2, vec3_t cross);
vec_t vectornormalize (vec3_t v);
void vectorinverse (vec3_t v);
void vectorscale (vec3_t v, vec_t scale, vec3_t out);
#endif