13void vec2_cset(
vec2 *v,
double x,
double y )
18 v->angle = ANGLE( x, y );
29void vec2_csetmin(
vec2 *v,
double x,
double y )
42void vec2_pset(
vec2 *v,
double mod,
double angle )
46 v->x = v->mod * cos( v->angle );
47 v->y = v->mod * sin( v->angle );
55void vectnull(
vec2 *v )
70double vec2_angle(
const vec2 *ref,
const vec2 *v )
72 double x = v->x - ref->x;
73 double y = v->y - ref->y;
84void vec2_cadd(
vec2 *v,
double x,
double y )
88 v->mod = MOD( v->x, v->y );
89 v->angle = ANGLE( v->x, v->y );
99void vec2_padd(
vec2 *v,
double m,
double a )
101 v->x += m * cos( a );
102 v->y += m * sin( a );
103 v->mod = MOD( v->x, v->y );
104 v->angle = ANGLE( v->x, v->y );
114void vec2_reflect(
vec2 *r,
const vec2 *v,
const vec2 *n )
116 double dot = vec2_dot( v, n );
117 r->x = v->x - ( ( 2. * dot ) * n->
x );
118 r->y = v->y - ( ( 2. * dot ) * n->
y );
119 r->mod = MOD( r->x, r->y );
120 r->angle = ANGLE( r->x, r->y );
130double vec2_dot(
const vec2 *a,
const vec2 *b )
132 return a->x * b->x + a->y * b->y;
143void vec2_uv(
double *u,
double *v,
const vec2 *source,
144 const vec2 *reference_vector )
146 vec2 unit_parallel, unit_perpendicular;
148 vec2_uv_decomp( &unit_parallel, &unit_perpendicular, reference_vector );
150 *u = vec2_dot( source, &unit_parallel );
151 *v = vec2_dot( source, &unit_perpendicular );
161void vec2_uv_decomp(
vec2 *u,
vec2 *v,
const vec2 *reference_vector )
163 vec2_pset( u, 1, VANGLE( *reference_vector ) );
164 vec2_pset( v, 1, VANGLE( *reference_vector ) + M_PI_2 );