00001 #ifndef _VECTOR_H_
00002 #define _VECTOR_H_
00003
00004 #include "fmath.h"
00005
00006 typedef float vec_t;
00007 typedef vec_t vec2[2];
00008 typedef vec_t vec3[3];
00009 typedef vec_t vec4[4];
00010
00011 inline void vec2_add(vec2,vec2,vec2);
00012 inline void vec2_addeq(vec2,vec2);
00013 inline void vec2_sub(vec2,vec2,vec2);
00014 inline void vec2_subeq(vec2,vec2);
00015 inline void vec2_mul(vec2,vec_t,vec2);
00016 inline void vec2_muleq(vec2,vec_t);
00017 inline void vec2_div(vec2,vec_t,vec2);
00018 inline void vec2_diveq(vec2,vec_t);
00019 inline void vec2_unit(vec2,vec2);
00020 inline void vec2_normalize(vec2);
00021 inline int vec2_equals(vec2,vec2);
00022 inline int vec2_nequals(vec2,vec2);
00023 inline void vec2_proj(vec2,vec2,vec2);
00024 inline void vec2_invert(vec2);
00025 inline void vec2_inverse(vec2,vec2);
00026 inline void vec2_copy(vec2,vec2);
00027 inline void vec2_set(vec2,vec_t,vec_t);
00028 inline vec_t vec2_length(vec2);
00029 inline vec_t vec2_dot(vec2,vec2);
00030 inline vec_t vec2_comp(vec2,vec2);
00031 inline vec_t vec2_angle(vec2,vec2);
00032
00033 inline void vec3_add(vec3,vec3,vec3);
00034 inline void vec3_addeq(vec3,vec3);
00035 inline void vec3_sub(vec3,vec3,vec3);
00036 inline void vec3_subeq(vec3,vec3);
00037 inline void vec3_mul(vec3,vec_t,vec3);
00038 inline void vec3_muleq(vec3,vec_t);
00039 inline void vec3_div(vec3,vec_t,vec3);
00040 inline void vec3_diveq(vec3,vec_t);
00041 inline void vec3_unit(vec3,vec3);
00042 inline void vec3_normalize(vec3);
00043 inline int vec3_equals(vec3,vec3);
00044 inline int vec3_nequals(vec3,vec3);
00045 inline void vec3_proj(vec3,vec3,vec3);
00046 inline void vec3_invert(vec3);
00047 inline void vec3_inverse(vec3,vec3);
00048 inline void vec3_cross(vec3,vec3,vec3);
00049 inline void vec3_copy(vec3,vec3);
00050 inline void vec3_set(vec3,vec_t,vec_t,vec_t);
00051 inline vec_t vec3_comp(vec3,vec3);
00052 inline vec_t vec3_angle(vec3,vec3);
00053 inline vec_t vec3_length(vec3);
00054 inline vec_t vec3_dot(vec3,vec3);
00055
00056 inline void vec4_add(vec4,vec4,vec4);
00057 inline void vec4_addeq(vec4,vec4);
00058 inline void vec4_sub(vec4,vec4,vec4);
00059 inline void vec4_subeq(vec4,vec4);
00060 inline void vec4_mul(vec4,vec_t,vec4);
00061 inline void vec4_muleq(vec4,vec_t);
00062 inline void vec4_div(vec4,vec_t,vec4);
00063 inline void vec4_diveq(vec4,vec_t);
00064 inline void vec4_unit(vec4,vec4);
00065 inline void vec4_normalize(vec4);
00066 inline int vec4_equals(vec4,vec4);
00067 inline int vec4_nequals(vec4,vec4);
00068 inline void vec4_proj(vec4,vec4,vec4);
00069 inline void vec4_invert(vec4);
00070 inline void vec4_inverse(vec4,vec4);
00071 inline void vec4_copy(vec4,vec4);
00072 inline void vec4_set(vec4,vec_t,vec_t,vec_t,vec_t);
00073 inline vec_t vec4_length(vec4);
00074 inline vec_t vec4_dot(vec4,vec4);
00075 inline vec_t vec4_comp(vec4,vec4);
00076 inline vec_t vec4_angle(vec4,vec4);
00077
00078
00079 inline void vec3_to_vec4(vec3,vec4);
00080 inline void vec4_to_vec3(vec4,vec3);
00081
00082
00083 inline void vec3_addscl(vec3,vec3,vec_t,vec3);
00084 inline void vec3_addscleq(vec3,vec3,vec_t);
00085 inline void vec4_addscl(vec4,vec4,vec_t,vec4);
00086 inline void vec4_addscleq(vec4,vec4,vec_t);
00087 inline vec_t vec3_invlength(vec3);
00088 inline void vec3_interp(vec3,vec3,float,vec3);
00089 #endif