9 #ifndef Recast_Vector_h
10 #define Recast_Vector_h
20 inline void rcVcross(
float* dest,
const float* v1,
const float* v2)
22 dest[0] = v1[1]*v2[2] - v1[2]*v2[1];
23 dest[1] = v1[2]*v2[0] - v1[0]*v2[2];
24 dest[2] = v1[0]*v2[1] - v1[1]*v2[0];
31 inline float rcVdot(
const float* v1,
const float* v2)
33 return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
41 inline void rcVmad(
float* dest,
const float* v1,
const float* v2,
const float s)
43 dest[0] = v1[0]+v2[0]*s;
44 dest[1] = v1[1]+v2[1]*s;
45 dest[2] = v1[2]+v2[2]*s;
52 inline void rcVadd(
float* dest,
const float* v1,
const float* v2)
54 dest[0] = v1[0]+v2[0];
55 dest[1] = v1[1]+v2[1];
56 dest[2] = v1[2]+v2[2];
63 inline void rcVsub(
float* dest,
const float* v1,
const float* v2)
65 dest[0] = v1[0]-v2[0];
66 dest[1] = v1[1]-v2[1];
67 dest[2] = v1[2]-v2[2];
73 inline void rcVmin(
float* mn,
const float* v)
75 mn[0] =
rcMin(mn[0], v[0]);
76 mn[1] =
rcMin(mn[1], v[1]);
77 mn[2] =
rcMin(mn[2], v[2]);
83 inline void rcVmax(
float* mx,
const float* v)
85 mx[0] =
rcMax(mx[0], v[0]);
86 mx[1] =
rcMax(mx[1], v[1]);
87 mx[2] =
rcMax(mx[2], v[2]);
93 inline void rcVcopy(
float* dest,
const float* v)
104 inline float rcVdist(
const float* v1,
const float* v2)
106 float dx = v2[0] - v1[0];
107 float dy = v2[1] - v1[1];
108 float dz = v2[2] - v1[2];
109 return rcSqrt(dx*dx + dy*dy + dz*dz);
118 float dx = v2[0] - v1[0];
119 float dy = v2[1] - v1[1];
120 float dz = v2[2] - v1[2];
121 return dx*dx + dy*dy + dz*dz;
T rcMax(T a, T b)
Returns the maximum of two values.
Definition: Util.h:30
T rcMin(T a, T b)
Returns the minimum of two values.
Definition: Util.h:24
void rcVmax(float *mx, const float *v)
Selects the maximum value of each element from the specified vectors.
Definition: Vector.h:83
float rcSqrt(float x)
Returns the square root of the value.
Definition: Recast.cpp:30
float rcVdot(const float *v1, const float *v2)
Derives the dot product of two vectors.
Definition: Vector.h:31
void rcVmad(float *dest, const float *v1, const float *v2, const float s)
Performs a scaled vector addition.
Definition: Vector.h:41
T rcSqr(T a)
Returns the square of the value.
Definition: Util.h:40
void rcVnormalize(float *v)
Normalizes the vector.
Definition: Vector.h:126
void rcVmin(float *mn, const float *v)
Selects the minimum value of each element from the specified vectors.
Definition: Vector.h:73
void rcVadd(float *dest, const float *v1, const float *v2)
Performs a vector addition.
Definition: Vector.h:52
float rcVdistSqr(const float *v1, const float *v2)
Returns the square of the distance between two points.
Definition: Vector.h:116
void rcVcopy(float *dest, const float *v)
Performs a vector copy.
Definition: Vector.h:93
void rcVsub(float *dest, const float *v1, const float *v2)
Performs a vector subtraction.
Definition: Vector.h:63
float rcVdist(const float *v1, const float *v2)
Returns the distance between two points.
Definition: Vector.h:104
void rcVcross(float *dest, const float *v1, const float *v2)
Derives the cross product of two vectors.
Definition: Vector.h:20