20void vec2_cset(
vec2* v,
double x,
double y )
25 v->angle = ANGLE(x,y);
35void vec2_csetmin(
vec2* v,
double x,
double y )
48void vec2_pset(
vec2* v,
double mod,
double angle )
52 v->x = v->mod*cos(v->angle);
53 v->y = v->mod*sin(v->angle);
61void vectnull(
vec2* v )
76double vec2_angle(
const vec2* ref,
const vec2* v )
78 double x = v->x - ref->x;
79 double y = v->y - ref->y;
90void vec2_cadd(
vec2* v,
double x,
double y )
94 v->mod = MOD(v->x,v->y);
95 v->angle = ANGLE(v->x,v->y);
105void vec2_padd(
vec2* v,
double m,
double a )
109 v->mod = MOD(v->x,v->y);
110 v->angle = ANGLE(v->x,v->y);
120void vec2_reflect(
vec2* r,
const vec2* v,
const vec2* n )
122 double dot = vec2_dot( v, n );
123 r->x = v->x - ((2. * dot) * n->x);
124 r->y = v->y - ((2. * dot) * n->y);
125 r->mod = MOD(r->x,r->y);
126 r->angle = ANGLE(r->x,r->y);
136double vec2_dot(
const vec2* a,
const vec2* b )
138 return a->x * b->x + a->y * b->y;
149void vec2_uv(
double* u,
double* v,
const vec2* source,
const vec2* reference_vector )
151 vec2 unit_parallel, unit_perpendicular;
153 vec2_uv_decomp( &unit_parallel, &unit_perpendicular, reference_vector );
155 *u = vec2_dot(source, &unit_parallel);
156 *v = vec2_dot(source, &unit_perpendicular);
166void vec2_uv_decomp(
vec2* u,
vec2* v,
const vec2* reference_vector )
168 vec2_pset(u, 1, VANGLE(*reference_vector));
169 vec2_pset(v, 1, VANGLE(*reference_vector)+M_PI_2);
Header file with generic functions and naev-specifics.