VECTOR_OPERATIONS


Defines

#define VEC_ZERO_2(a)
 Zero out a 2D vector.
#define VEC_ZERO(a)
 Zero out a 3D vector.
#define VEC_ZERO_4(a)
 Zero out a 4D vector.
#define VEC_COPY_2(b, a)
 Vector copy.
#define VEC_COPY(b, a)
 Copy 3D vector.
#define VEC_COPY_4(b, a)
 Copy 4D vector.
#define VEC_SWAP(b, a)
 VECTOR SWAP.
#define VEC_DIFF_2(v21, v2, v1)
 Vector difference.
#define VEC_DIFF(v21, v2, v1)
 Vector difference.
#define VEC_DIFF_4(v21, v2, v1)
 Vector difference.
#define VEC_SUM_2(v21, v2, v1)
 Vector sum.
#define VEC_SUM(v21, v2, v1)
 Vector sum.
#define VEC_SUM_4(v21, v2, v1)
 Vector sum.
#define VEC_SCALE_2(c, a, b)
 scalar times vector
#define VEC_SCALE(c, a, b)
 scalar times vector
#define VEC_SCALE_4(c, a, b)
 scalar times vector
#define VEC_ACCUM_2(c, a, b)
 accumulate scaled vector
#define VEC_ACCUM(c, a, b)
 accumulate scaled vector
#define VEC_ACCUM_4(c, a, b)
 accumulate scaled vector
#define VEC_DOT_2(a, b)   ((a)[0]*(b)[0] + (a)[1]*(b)[1])
 Vector dot product.
#define VEC_DOT(a, b)   ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2])
 Vector dot product.
#define VEC_DOT_4(a, b)   ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3])
 Vector dot product.
#define VEC_IMPACT_SQ(bsq, direction, position)
 vector impact parameter (squared)
#define VEC_IMPACT(bsq, direction, position)
 vector impact parameter
#define VEC_LENGTH_2(a, l)
 Vector length.
#define VEC_LENGTH(a, l)
 Vector length.
#define VEC_LENGTH_4(a, l)
 Vector length.
#define VEC_INV_LENGTH_2(a, l)
 Vector inv length.
#define VEC_INV_LENGTH(a, l)
 Vector inv length.
#define VEC_INV_LENGTH_4(a, l)
 Vector inv length.
#define VEC_DISTANCE(_len, _va, _vb)
 distance between two points
#define VEC_CONJUGATE_LENGTH(a, l)
 Vector length.
#define VEC_NORMALIZE(a)
 Vector length.
#define VEC_RENORMALIZE(a, newlen)
 Set Vector size.
#define VEC_CROSS(c, a, b)
 Vector cross.
#define VEC_PERPENDICULAR(vp, v, n)
#define VEC_PARALLEL(vp, v, n)
#define VEC_PROJECT(vp, v, n)
#define VEC_UNPROJECT(vp, v, n)
#define VEC_REFLECT(vr, v, n)
#define VEC_BLEND_AB(vr, sa, a, sb, b)
#define VEC_BLEND(vr, a, b, s)   VEC_BLEND_AB(vr,(1-s),a,s,b)
#define VEC_SET3(a, b, op, c)   a[0]=b[0] op c[0]; a[1]=b[1] op c[1]; a[2]=b[2] op c[2];
#define VEC_MAYOR_COORD(vec, maxc)
 Finds the bigger cartesian coordinate from a vector.
#define VEC_MINOR_AXES(vec, i0, i1)
 Finds the 2 smallest cartesian coordinates from a vector.
#define VEC_EQUAL(v1, v2)   (v1[0]==v2[0]&&v1[1]==v2[1]&&v1[2]==v2[2])
#define VEC_NEAR_EQUAL(v1, v2)   (GIM_NEAR_EQUAL(v1[0],v2[0])&&GIM_NEAR_EQUAL(v1[1],v2[1])&&GIM_NEAR_EQUAL(v1[2],v2[2]))
#define X_AXIS_CROSS_VEC(dst, src)
 Vector cross.
#define Y_AXIS_CROSS_VEC(dst, src)
#define Z_AXIS_CROSS_VEC(dst, src)

Detailed Description

T Operations for vectors : vec2f,vec3f and vec4f

Define Documentation

#define VEC_ACCUM ( c,
a,
 ) 

Value:

{                                               \
   (c)[0] += (a)*(b)[0];                        \
   (c)[1] += (a)*(b)[1];                        \
   (c)[2] += (a)*(b)[2];                        \
}\
accumulate scaled vector

#define VEC_ACCUM_2 ( c,
a,
 ) 

Value:

{                                               \
   (c)[0] += (a)*(b)[0];                        \
   (c)[1] += (a)*(b)[1];                        \
}\
accumulate scaled vector

#define VEC_ACCUM_4 ( c,
a,
 ) 

Value:

{                                               \
   (c)[0] += (a)*(b)[0];                        \
   (c)[1] += (a)*(b)[1];                        \
   (c)[2] += (a)*(b)[2];                        \
   (c)[3] += (a)*(b)[3];                        \
}\
accumulate scaled vector

#define VEC_BLEND ( vr,
a,
b,
 )     VEC_BLEND_AB(vr,(1-s),a,s,b)

Vector blending Takes two vectors a, b, blends them together with s <=1

#define VEC_BLEND_AB ( vr,
sa,
a,
sb,
 ) 

Value:

{                                               \
   vr[0] = (sa) * (a)[0] + (sb) * (b)[0];       \
   vr[1] = (sa) * (a)[1] + (sb) * (b)[1];       \
   vr[2] = (sa) * (a)[2] + (sb) * (b)[2];       \
}\
Vector blending Takes two vectors a, b, blends them together with two scalars

#define VEC_CONJUGATE_LENGTH ( a,
 ) 

Value:

{\
    GREAL _pp = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\
    GIM_SQRT(_pp,l);\
}\
Vector length.

#define VEC_COPY ( b,
 ) 

Value:

{                                               \
   (b)[0] = (a)[0];                             \
   (b)[1] = (a)[1];                             \
   (b)[2] = (a)[2];                             \
}\
Copy 3D vector.

#define VEC_COPY_2 ( b,
 ) 

Value:

{                                               \
   (b)[0] = (a)[0];                             \
   (b)[1] = (a)[1];                             \
}\
Vector copy.

#define VEC_COPY_4 ( b,
 ) 

Value:

{                                               \
   (b)[0] = (a)[0];                             \
   (b)[1] = (a)[1];                             \
   (b)[2] = (a)[2];                             \
   (b)[3] = (a)[3];                             \
}\
Copy 4D vector.

#define VEC_CROSS ( c,
a,
 ) 

Value:

{                                               \
   c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1];    \
   c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2];    \
   c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0];    \
}\
Vector cross.

#define VEC_DIFF ( v21,
v2,
v1   ) 

Value:

{                                               \
   (v21)[0] = (v2)[0] - (v1)[0];                \
   (v21)[1] = (v2)[1] - (v1)[1];                \
   (v21)[2] = (v2)[2] - (v1)[2];                \
}\
Vector difference.

#define VEC_DIFF_2 ( v21,
v2,
v1   ) 

Value:

{                                               \
   (v21)[0] = (v2)[0] - (v1)[0];                \
   (v21)[1] = (v2)[1] - (v1)[1];                \
}\
Vector difference.

#define VEC_DIFF_4 ( v21,
v2,
v1   ) 

Value:

{                                               \
   (v21)[0] = (v2)[0] - (v1)[0];                \
   (v21)[1] = (v2)[1] - (v1)[1];                \
   (v21)[2] = (v2)[2] - (v1)[2];                \
   (v21)[3] = (v2)[3] - (v1)[3];                \
}\
Vector difference.

#define VEC_DISTANCE ( _len,
_va,
_vb   ) 

Value:

{\
    vec3f _tmp_;                                \
    VEC_DIFF(_tmp_, _vb, _va);                  \
    VEC_LENGTH(_tmp_,_len);                     \
}\
distance between two points

#define VEC_DOT ( a,
 )     ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2])

Vector dot product.

#define VEC_DOT_2 ( a,
 )     ((a)[0]*(b)[0] + (a)[1]*(b)[1])

Vector dot product.

#define VEC_DOT_4 ( a,
 )     ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3])

Vector dot product.

#define VEC_EQUAL ( v1,
v2   )     (v1[0]==v2[0]&&v1[1]==v2[1]&&v1[2]==v2[2])

#define VEC_IMPACT ( bsq,
direction,
position   ) 

Value:

{\
   VEC_IMPACT_SQ(bsq,direction,position);               \
   GIM_SQRT(bsq,bsq);                                   \
}\
vector impact parameter

#define VEC_IMPACT_SQ ( bsq,
direction,
position   ) 

Value:

{\
   GREAL _llel_ = VEC_DOT(direction, position);\
   bsq = VEC_DOT(position, position) - _llel_*_llel_;\
}\
vector impact parameter (squared)

#define VEC_INV_LENGTH ( a,
 ) 

Value:

{\
    GREAL _pp = VEC_DOT(a,a);\
    GIM_INV_SQRT(_pp,l);\
}\
Vector inv length.

#define VEC_INV_LENGTH_2 ( a,
 ) 

Value:

{\
    GREAL _pp = VEC_DOT_2(a,a);\
    GIM_INV_SQRT(_pp,l);\
}\
Vector inv length.

#define VEC_INV_LENGTH_4 ( a,
 ) 

Value:

{\
    GREAL _pp = VEC_DOT_4(a,a);\
    GIM_INV_SQRT(_pp,l);\
}\
Vector inv length.

#define VEC_LENGTH ( a,
 ) 

Value:

{\
    GREAL _pp = VEC_DOT(a,a);\
    GIM_SQRT(_pp,l);\
}\
Vector length.

#define VEC_LENGTH_2 ( a,
 ) 

Value:

{\
    GREAL _pp = VEC_DOT_2(a,a);\
    GIM_SQRT(_pp,l);\
}\
Vector length.

#define VEC_LENGTH_4 ( a,
 ) 

Value:

{\
    GREAL _pp = VEC_DOT_4(a,a);\
    GIM_SQRT(_pp,l);\
}\
Vector length.

#define VEC_MAYOR_COORD ( vec,
maxc   ) 

Value:

{\
        GREAL A[] = {fabs(vec[0]),fabs(vec[1]),fabs(vec[2])};\
    maxc =  A[0]>A[1]?(A[0]>A[2]?0:2):(A[1]>A[2]?1:2);\
}\
Finds the bigger cartesian coordinate from a vector.

#define VEC_MINOR_AXES ( vec,
i0,
i1   ) 

Value:

{\
        VEC_MAYOR_COORD(vec,i0);\
        i0 = (i0+1)%3;\
        i1 = (i0+1)%3;\
}\
Finds the 2 smallest cartesian coordinates from a vector.

#define VEC_NEAR_EQUAL ( v1,
v2   )     (GIM_NEAR_EQUAL(v1[0],v2[0])&&GIM_NEAR_EQUAL(v1[1],v2[1])&&GIM_NEAR_EQUAL(v1[2],v2[2]))

#define VEC_NORMALIZE (  ) 

Value:

{       \
    GREAL len;\
    VEC_INV_LENGTH(a,len); \
    if(len<G_REAL_INFINITY)\
    {\
        a[0] *= len;                            \
        a[1] *= len;                            \
        a[2] *= len;                            \
    }                                           \
}\
Vector length.

#define VEC_PARALLEL ( vp,
v,
 ) 

Value:

{                                               \
   GREAL dot = VEC_DOT(v, n);                   \
   vp[0] = (dot) * (n)[0];                      \
   vp[1] = (dot) * (n)[1];                      \
   vp[2] = (dot) * (n)[2];                      \
}\
Vector parallel -- assumes that n is of unit length

#define VEC_PERPENDICULAR ( vp,
v,
 ) 

Value:

{                                               \
   GREAL dot = VEC_DOT(v, n);                   \
   vp[0] = (v)[0] - dot*(n)[0];         \
   vp[1] = (v)[1] - dot*(n)[1];         \
   vp[2] = (v)[2] - dot*(n)[2];         \
}\
Vector perp -- assumes that n is of unit length accepts vector v, subtracts out any component parallel to n

#define VEC_PROJECT ( vp,
v,
 ) 

Value:

{ \
        GREAL scalar = VEC_DOT(v, n);                   \
        scalar/= VEC_DOT(n, n); \
        vp[0] = (scalar) * (n)[0];                      \
    vp[1] = (scalar) * (n)[1];                  \
    vp[2] = (scalar) * (n)[2];                  \
}\
Same as Vector parallel -- n can have any length accepts vector v, subtracts out any component perpendicular to n

#define VEC_REFLECT ( vr,
v,
 ) 

Value:

{                                               \
   GREAL dot = VEC_DOT(v, n);                   \
   vr[0] = (v)[0] - 2.0 * (dot) * (n)[0];       \
   vr[1] = (v)[1] - 2.0 * (dot) * (n)[1];       \
   vr[2] = (v)[2] - 2.0 * (dot) * (n)[2];       \
}\
Vector reflection -- assumes n is of unit length Takes vector v, reflects it against reflector n, and returns vr

#define VEC_RENORMALIZE ( a,
newlen   ) 

Value:

{       \
    GREAL len;\
    VEC_INV_LENGTH(a,len); \
    if(len<G_REAL_INFINITY)\
    {\
        len *= newlen;\
        a[0] *= len;                            \
        a[1] *= len;                            \
        a[2] *= len;                            \
    }                                           \
}\
Set Vector size.

#define VEC_SCALE ( c,
a,
 ) 

Value:

{                                               \
   (c)[0] = (a)*(b)[0];                         \
   (c)[1] = (a)*(b)[1];                         \
   (c)[2] = (a)*(b)[2];                         \
}\
scalar times vector

#define VEC_SCALE_2 ( c,
a,
 ) 

Value:

{                                               \
   (c)[0] = (a)*(b)[0];                         \
   (c)[1] = (a)*(b)[1];                         \
}\
scalar times vector

#define VEC_SCALE_4 ( c,
a,
 ) 

Value:

{                                               \
   (c)[0] = (a)*(b)[0];                         \
   (c)[1] = (a)*(b)[1];                         \
   (c)[2] = (a)*(b)[2];                         \
   (c)[3] = (a)*(b)[3];                         \
}\
scalar times vector

#define VEC_SET3 ( a,
b,
op,
 )     a[0]=b[0] op c[0]; a[1]=b[1] op c[1]; a[2]=b[2] op c[2];

#define VEC_SUM ( v21,
v2,
v1   ) 

Value:

{                                               \
   (v21)[0] = (v2)[0] + (v1)[0];                \
   (v21)[1] = (v2)[1] + (v1)[1];                \
   (v21)[2] = (v2)[2] + (v1)[2];                \
}\
Vector sum.

#define VEC_SUM_2 ( v21,
v2,
v1   ) 

Value:

{                                               \
   (v21)[0] = (v2)[0] + (v1)[0];                \
   (v21)[1] = (v2)[1] + (v1)[1];                \
}\
Vector sum.

#define VEC_SUM_4 ( v21,
v2,
v1   ) 

Value:

{                                               \
   (v21)[0] = (v2)[0] + (v1)[0];                \
   (v21)[1] = (v2)[1] + (v1)[1];                \
   (v21)[2] = (v2)[2] + (v1)[2];                \
   (v21)[3] = (v2)[3] + (v1)[3];                \
}\
Vector sum.

#define VEC_SWAP ( b,
 ) 

Value:

{  \
    GIM_SWAP_NUMBERS((b)[0],(a)[0]);\
    GIM_SWAP_NUMBERS((b)[1],(a)[1]);\
    GIM_SWAP_NUMBERS((b)[2],(a)[2]);\
}\
VECTOR SWAP.

#define VEC_UNPROJECT ( vp,
v,
 ) 

Value:

{ \
        GREAL scalar = VEC_DOT(v, n);                   \
        scalar = VEC_DOT(n, n)/scalar; \
        vp[0] = (scalar) * (n)[0];                      \
    vp[1] = (scalar) * (n)[1];                  \
    vp[2] = (scalar) * (n)[2];                  \
}\
accepts vector v

#define VEC_ZERO (  ) 

Value:

{                                               \
   (a)[0] = (a)[1] = (a)[2] = 0.0f;             \
}\
Zero out a 3D vector.

#define VEC_ZERO_2 (  ) 

Value:

{                                               \
   (a)[0] = (a)[1] = 0.0f;                      \
}\
Zero out a 2D vector.

#define VEC_ZERO_4 (  ) 

Value:

{                                               \
   (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0f;    \
}\
Zero out a 4D vector.

#define X_AXIS_CROSS_VEC ( dst,
src   ) 

Value:

{                                          \
        dst[0] = 0.0f;     \
        dst[1] = -src[2];  \
        dst[2] = src[1];  \
}\
Vector cross.

#define Y_AXIS_CROSS_VEC ( dst,
src   ) 

Value:

{                                          \
        dst[0] = src[2];     \
        dst[1] = 0.0f;  \
        dst[2] = -src[0];  \
}\

#define Z_AXIS_CROSS_VEC ( dst,
src   ) 

Value:

{                                          \
        dst[0] = -src[1];     \
        dst[1] = src[0];  \
        dst[2] = 0.0f;  \
}\


Generated on Wed Jun 13 16:58:21 2007 for GIMPACT by  doxygen 1.5.2