vector.h

来自「著名物理引擎Hawk的源代码」· C头文件 代码 · 共 57 行

H
57
字号
/* vector.h, HAWK game engine
 *
 * Copyright 1997-1998 by Phil Frisbie, Jr.
 * for Hawk Software
 *
 */

#ifndef VECTOR_H
#define VECTOR_H

#include <math.h>
#include "hawk.h"

#ifdef __cplusplus
extern "C" {
#endif

#define	EQUAL_EPSILON	0.001

BOOL VectorCompare (vec3_t v1, vec3_t v2);

#define DotProduct(x,y) (x[X]*y[X]+x[Y]*y[Y]+x[Z]*y[Z])
#define VectorSubtract(a,b,c) {c[X]=a[X]-b[X];c[Y]=a[Y]-b[Y];c[Z]=a[Z]-b[Z];}
#define VectorAdd(a,b,c) {c[X]=a[X]+b[X];c[Y]=a[Y]+b[Y];c[Z]=a[Z]+b[Z];}
#define VectorCopy(a,b) {b[X]=a[X];b[Y]=a[Y];b[Z]=a[Z];}
#define VectorScale(a,b,c) {c[X]=b*a[X];c[Y]=b*a[Y];c[Z]=b*a[Z];}
#define VectorClear(x) {x[X] = x[Y] = x[Z] = 0;}
#define	VectorNegate(x) {x[X]=-x[X];x[Y]=-x[Y];x[Z]=-x[Z];}

vec_t Q_rint (vec_t in);

/* CPU optimized procs */
void vectInit(void);
static vec_t (*vect4DotProduct)(vec4_t v1, vec4_t v2);
static void (*vect4Subtract)(vec4_t va, vec4_t vb, vec4_t out);
static void (*vect4Add)(vec4_t va, vec4_t vb, vec4_t out);
static void (*vect4Copy)(vec4_t in, vec4_t out);
static void (*vect4Scale)(vec4_t v, vec_t scale, vec4_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 in, vec3_t out);
vec_t ColorNormalize (vec3_t in, vec3_t out);
void VectorInverse (vec3_t v);

void ClearBounds (vec3_t mins, vec3_t maxs);
void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);

#ifdef __cplusplus
}
#endif

#endif /* VECTOR_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?