QuakeForge  0.7.2.210-815cf
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Vector and matrix functions

Modules

 Vector functions
 

Macros

#define bound(a, b, c)   (max(a, min(b, c)))
 
#define BOX_ON_PLANE_SIDE(emins, emaxs, p)
 
#define EQUAL_EPSILON   0.001
 
#define IS_NAN(x)   (((*(int *) (char *) &x) & nanmask) == nanmask)
 
#define M_PI   3.14159265358979323846
 
#define max(a, b)   ((a) > (b) ? (a) : (b))
 
#define min(a, b)   ((a) < (b) ? (a) : (b))
 
#define PITCH   0
 
#define PlaneDiff(point, plane)   (PlaneDist (point, plane) - (plane)->dist)
 
#define PlaneDist(point, plane)
 
#define PlaneFlip(sp, dp)
 
#define qfrandom(MAX)   ((float) MAX * (rand() * (1.0 / (RAND_MAX + 1.0))))
 
#define RINT(x)   (floor ((x) + 0.5))
 
#define ROLL   2
 
#define YAW   1
 

Functions

float anglemod (float a)
 
void AngleQuat (const vec3_t angles, quat_t q)
 
void AngleVectors (const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
 Convert quake angles to basis vectors. More...
 
void BarycentricCoords (const vec_t **points, int num_points, const vec3_t p, vec_t *lambda)
 
int BoxOnPlaneSide (const vec3_t emins, const vec3_t emaxs, struct plane_s *plane)
 
int CircumSphere (const vec3_t points[], int num_points, sphere_t *sphere)
 
void FloorDivMod (double numer, double denom, int *quotient, int *rem)
 
int GreatestCommonDivisor (int i1, int i2)
 
fixed16_t Invert24To16 (fixed16_t val)
 
fixed16_t Mul16_30 (fixed16_t multiplier, fixed16_t multiplicand)
 
int Q_log2 (int val)
 
void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3])
 
void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4])
 
qboolean R_CullBox (const vec3_t mins, const vec3_t maxs)
 
qboolean R_CullSphere (const vec3_t origin, const float radius)
 
void RotatePointAroundVector (vec3_t dst, const vec3_t axis, const vec3_t point, float degrees)
 
sphere_t SmallestEnclosingBall (const vec3_t points[], int num_points)
 
void VectorVectors (const vec3_t forward, vec3_t right, vec3_t up)
 

Variables

plane_t *const frustum
 
int nanmask
 

Detailed Description

Macro Definition Documentation

#define bound (   a,
  b,
 
)    (max(a, min(b, c)))
#define BOX_ON_PLANE_SIDE (   emins,
  emaxs,
 
)
Value:
(((p)->type < 3)? \
( \
((p)->dist <= (emins)[(p)->type])? \
1 \
: \
( \
((p)->dist >= (emaxs)[(p)->type])? \
2 \
: \
3 \
) \
) \
: \
BoxOnPlaneSide( (emins), (emaxs), (p)))
int BoxOnPlaneSide(const vec3_t emins, const vec3_t emaxs, struct plane_s *plane)
Definition: mathlib.c:374
int type
Definition: net_wins.c:85
#define EQUAL_EPSILON   0.001
#define IS_NAN (   x)    (((*(int *) (char *) &x) & nanmask) == nanmask)
#define M_PI   3.14159265358979323846
#define max (   a,
 
)    ((a) > (b) ? (a) : (b))
#define min (   a,
 
)    ((a) < (b) ? (a) : (b))
#define PITCH   0
#define PlaneDiff (   point,
  plane 
)    (PlaneDist (point, plane) - (plane)->dist)
#define PlaneDist (   point,
  plane 
)
Value:
((plane)->type < 3 ? (point)[(plane)->type] \
: DotProduct((point), (plane)->normal))
box_t point
Definition: testclip.c:46
int type
Definition: net_wins.c:85
#define DotProduct(a, b)
Definition: vector.h:40
#define PlaneFlip (   sp,
  dp 
)
Value:
do { \
(dp)->dist = -(sp)->dist; \
VectorNegate ((sp)->normal, (dp)->normal); \
} while (0)
#define VectorNegate(a, b)
Definition: vector.h:47
#define qfrandom (   MAX)    ((float) MAX * (rand() * (1.0 / (RAND_MAX + 1.0))))
#define RINT (   x)    (floor ((x) + 0.5))
#define ROLL   2
#define YAW   1

Function Documentation

float anglemod ( float  a)
void AngleQuat ( const vec3_t  angles,
quat_t  q 
)
void AngleVectors ( const vec3_t  angles,
vec3_t  forward,
vec3_t  right,
vec3_t  up 
)

Convert quake angles to basis vectors.

The basis vectors form a left handed system (although the world is right handed). When all angles are 0, forward points along the world X axis, right along the negative Y axis, and up along the Z axis.

Rotation is done by:

  1. Rotating YAW degrees counterclockwise around the local Z axis
  2. Rotating PITCH degrees clockwise around the new local negative Y axis (or counterclockwise around the new local Y axis).
  3. Rotating ROLL degrees counterclockwise around the local X axis

Thus when used for the player from the first person perspective, positive YAW turns to the left, positive PITCH looks down, and positive ROLL leans to the right.

\[ YAW=\begin{array}{ccc} c_{y} & s_{y} & 0\\ -s_{y} & c_{y} & 0\\ 0 & 0 & 1 \end{array} \]

\[ PITCH=\begin{array}{ccc} c_{p} & 0 & -s_{p}\\ 0 & 1 & 0\\ s_{p} & 0 & c_{p} \end{array} \]

\[ ROLL=\begin{array}{ccc} 1 & 0 & 0\\ 0 & c_{r} & -s_{r}\\ 0 & s_{r} & c_{r} \end{array} \]

\[ ROLL\,(PITCH\,YAW)=\begin{array}{c} forward\\ -right\\ up \end{array} \]

Parameters
anglesThe rotation angles.
forwardThe vector pointing forward.
rightThe vector pointing to the right.
upThe vector pointing up.
void BarycentricCoords ( const vec_t **  points,
int  num_points,
const vec3_t  p,
vec_t lambda 
)
int BoxOnPlaneSide ( const vec3_t  emins,
const vec3_t  emaxs,
struct plane_s plane 
)
int CircumSphere ( const vec3_t  points[],
int  num_points,
sphere_t sphere 
)
void FloorDivMod ( double  numer,
double  denom,
int quotient,
int rem 
)
int GreatestCommonDivisor ( int  i1,
int  i2 
)
fixed16_t Invert24To16 ( fixed16_t  val)
fixed16_t Mul16_30 ( fixed16_t  multiplier,
fixed16_t  multiplicand 
)
int Q_log2 ( int  val)
void R_ConcatRotations ( float  in1[3][3],
float  in2[3][3],
float  out[3][3] 
)
void R_ConcatTransforms ( float  in1[3][4],
float  in2[3][4],
float  out[3][4] 
)
qboolean R_CullBox ( const vec3_t  mins,
const vec3_t  maxs 
)
inline
qboolean R_CullSphere ( const vec3_t  origin,
const float  radius 
)
inline
void RotatePointAroundVector ( vec3_t  dst,
const vec3_t  axis,
const vec3_t  point,
float  degrees 
)
sphere_t SmallestEnclosingBall ( const vec3_t  points[],
int  num_points 
)
void VectorVectors ( const vec3_t  forward,
vec3_t  right,
vec3_t  up 
)

Variable Documentation

plane_t* const frustum
int nanmask