48 lines
1.1 KiB
C
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
|