1515#include "globalincs/pstypes.h"
1616#include "math/floating.h"
1717
18- //#define _INLINE_VECMAT
1918
2019#define vm_is_vec_nan (v ) (_isnan((v)->xyz.x) || _isnan((v)->xyz.y) || _isnan((v)->xyz.z))
2120
@@ -78,65 +77,24 @@ typedef struct plane {
7877
7978//adds two vectors, fills in dest, returns ptr to dest
8079//ok for dest to equal either source, but should use vm_vec_add2() if so
81- #ifdef _INLINE_VECMAT
82- #define vm_vec_add ( dst , src0 , src1 ) do { \
83- (dst)->xyz.x = (src0)->xyz.x + (src1)->xyz.x; \
84- (dst)->xyz.y = (src0)->xyz.y + (src1)->xyz.y; \
85- (dst)->xyz.z = (src0)->xyz.z + (src1)->xyz.z; \
86- } while(0)
87- #else
8880void vm_vec_add (vec3d * dest , const vec3d * src0 , const vec3d * src1 );
89- #endif
9081
9182//adds src onto dest vector, returns ptr to dest
92- #ifdef _INLINE_VECMAT
93- #define vm_vec_add2 ( dst , src ) do { \
94- (dst)->xyz.x += (src)->xyz.x; \
95- (dst)->xyz.y += (src)->xyz.y; \
96- (dst)->xyz.z += (src)->xyz.z; \
97- } while(0)
98- #else
9983void vm_vec_add2 (vec3d * dest , const vec3d * src );
100- #endif
10184
10285
10386//scales a vector and subs from to another
10487//dest -= k * src
105- #ifdef _INLINE_VECMAT
106- #define vm_vec_scale_sub2 ( dst , src , k ) do { \
107- float tmp_k = (k); \
108- (dst)->xyz.x -= (src)->xyz.x*tmp_k; \
109- (dst)->xyz.y -= (src)->xyz.y*tmp_k; \
110- (dst)->xyz.z -= (src)->xyz.z*tmp_k; \
111- } while(0)
112- #else
11388void vm_vec_scale_sub2 (vec3d * dest , const vec3d * src , float k );
114- #endif
11589
11690//subs two vectors, fills in dest, returns ptr to dest
11791//ok for dest to equal either source, but should use vm_vec_sub2() if so
118- #ifdef _INLINE_VECMAT
119- #define vm_vec_sub ( dst , src0 , src1 ) do { \
120- (dst)->xyz.x = (src0)->xyz.x - (src1)->xyz.x; \
121- (dst)->xyz.y = (src0)->xyz.y - (src1)->xyz.y; \
122- (dst)->xyz.z = (src0)->xyz.z - (src1)->xyz.z; \
123- } while(0)
124- #else
12592void vm_vec_sub (vec3d * dest , const vec3d * src0 , const vec3d * src1 );
126- #endif
12793
12894
12995//subs one vector from another, returns ptr to dest
13096//dest can equal source
131- #ifdef _INLINE_VECMAT
132- #define vm_vec_sub2 ( dst , src ) do { \
133- (dst)->xyz.x -= (src)->xyz.x; \
134- (dst)->xyz.y -= (src)->xyz.y; \
135- (dst)->xyz.z -= (src)->xyz.z; \
136- } while(0)
137- #else
13897void vm_vec_sub2 (vec3d * dest , const vec3d * src );
139- #endif
14098
14199//averages n vectors
142100vec3d * vm_vec_avg_n (vec3d * dest , int n , const vec3d src []);
@@ -153,69 +111,24 @@ vec3d *vm_vec_avg3(vec3d *dest, const vec3d *src0, const vec3d *src1, const vec3
153111vec3d * vm_vec_avg4 (vec3d * dest , const vec3d * src0 , const vec3d * src1 , const vec3d * src2 , const vec3d * src3 );
154112
155113//scales a vector in place. returns ptr to vector
156- #ifdef _INLINE_VECMAT
157- #define vm_vec_scale ( dst , k ) do { \
158- float tmp_k = (k); \
159- (dst)->xyz.x *= tmp_k; \
160- (dst)->xyz.y *= tmp_k; \
161- (dst)->xyz.z *= tmp_k; \
162- } while(0)
163- #else
164114void vm_vec_scale (vec3d * dest , float s );
165- #endif
166115
167116//scales and copies a vector. returns ptr to dest
168- #ifdef _INLINE_VECMAT
169- #define vm_vec_copy_scale ( dst , src , k ) do { \
170- float tmp_k = (k); \
171- (dst)->xyz.x = (src)->xyz.x * tmp_k; \
172- (dst)->xyz.y = (src)->xyz.y * tmp_k; \
173- (dst)->xyz.z = (src)->xyz.z * tmp_k; \
174- } while(0)
175- #else
176117void vm_vec_copy_scale (vec3d * dest , const vec3d * src , float s );
177- #endif
178118
179119//scales a vector, adds it to another, and stores in a 3rd vector
180120//dest = src1 + k * src2
181- #ifdef _INLINE_VECMAT
182- #define vm_vec_scale_add ( dst , src1 , src2 , k ) do { \
183- float tmp_k = (k); \
184- (dst)->xyz.x = (src1)->xyz.x + (src2)->xyz.x * tmp_k; \
185- (dst)->xyz.y = (src1)->xyz.y + (src2)->xyz.y * tmp_k; \
186- (dst)->xyz.z = (src1)->xyz.z + (src2)->xyz.z * tmp_k; \
187- } while(0)
188- #else
189121void vm_vec_scale_add (vec3d * dest , const vec3d * src1 , const vec3d * src2 , float k );
190- #endif
191122
192123void vm_vec_scale_sub (vec3d * dest , const vec3d * src1 , const vec3d * src2 , float k );
193124
194125//scales a vector and adds it to another
195126//dest += k * src
196- #ifdef _INLINE_VECMAT
197- #define vm_vec_scale_add2 ( dst , src , k ) do { \
198- float tmp_k = (k); \
199- (dst)->xyz.x += (src)->xyz.x * tmp_k; \
200- (dst)->xyz.y += (src)->xyz.y * tmp_k; \
201- (dst)->xyz.z += (src)->xyz.z * tmp_k; \
202- } while(0)
203- #else
204127void vm_vec_scale_add2 (vec3d * dest , const vec3d * src , float k );
205- #endif
206128
207129//scales a vector in place, taking n/d for scale. returns ptr to vector
208130//dest *= n/d
209- #ifdef _INLINE_VECMAT
210- #define vm_vec_scale2 ( dst , n , d ) do { \
211- float tmp_k = (n)/(d); \
212- (dst)->xyz.x *= tmp_k; \
213- (dst)->xyz.y *= tmp_k; \
214- (dst)->xyz.z *= tmp_k; \
215- } while(0)
216- #else
217131void vm_vec_scale2 (vec3d * dest , float n , float d );
218- #endif
219132
220133bool vm_vec_equal (const vec2d & self , const vec2d & other );
221134
@@ -280,19 +193,10 @@ float vm_vec_normalized_dir_quick_mag(vec3d *dest, const vec3d *end, const vec3d
280193float vm_vec_normalized_dir_quick (vec3d * dest , const vec3d * end , const vec3d * start );
281194
282195////returns dot product of two vectors
283- #ifdef _INLINE_VECMAT
284- #define vm_vec_dotprod ( v0 , v1 ) (((v1)->xyz.x*(v0)->xyz.x)+((v1)->xyz.y*(v0)->xyz.y)+((v1)->xyz.z*(v0)->xyz.z))
285- #define vm_vec_dot ( v0 , v1 ) (((v1)->xyz.x*(v0)->xyz.x)+((v1)->xyz.y*(v0)->xyz.y)+((v1)->xyz.z*(v0)->xyz.z))
286- #else
287196float vm_vec_dotprod (const vec3d * v0 , const vec3d * v1 );
288197#define vm_vec_dot vm_vec_dotprod
289- #endif
290198
291- #ifdef _INLINE_VECMAT
292- #define vm_vec_dot3 ( x1 , y1 , z1 , v ) (((x1)*(v)->xyz.x)+((y1)*(v)->xyz.y)+((z1)*(v)->xyz.z))
293- #else
294199float vm_vec_dot3 (float x , float y , float z , vec3d * v );
295- #endif
296200
297201//computes cross product of two vectors. returns ptr to dest
298202//dest CANNOT equal either source
0 commit comments