naev 0.11.5
vec2.c
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
5#include <stdio.h>
6#include <stdlib.h>
7
8#include "naev.h"
11#include "vec2.h"
12
20void vec2_cset( vec2* v, double x, double y )
21{
22 v->x = x;
23 v->y = y;
24 v->mod = MOD(x,y);
25 v->angle = ANGLE(x,y);
26}
27
35void vec2_csetmin( vec2* v, double x, double y )
36{
37 v->x = x;
38 v->y = y;
39}
40
48void vec2_pset( vec2* v, double mod, double angle )
49{
50 v->mod = mod;
51 v->angle = angle;
52 v->x = v->mod*cos(v->angle);
53 v->y = v->mod*sin(v->angle);
54}
55
61void vectnull( vec2* v )
62{
63 v->x = 0.;
64 v->y = 0.;
65 v->mod = 0.;
66 v->angle = 0.;
67}
68
76double vec2_angle( const vec2* ref, const vec2* v )
77{
78 double x = v->x - ref->x;
79 double y = v->y - ref->y;
80 return ANGLE( x, y );
81}
82
90void vec2_cadd( vec2* v, double x, double y )
91{
92 v->x += x;
93 v->y += y;
94 v->mod = MOD(v->x,v->y);
95 v->angle = ANGLE(v->x,v->y);
96}
97
105void vec2_padd( vec2* v, double m, double a )
106{
107 v->x += m*cos(a);
108 v->y += m*sin(a);
109 v->mod = MOD(v->x,v->y);
110 v->angle = ANGLE(v->x,v->y);
111}
112
120void vec2_reflect( vec2* r, const vec2* v, const vec2* n )
121{
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);
127}
128
136double vec2_dot( const vec2* a, const vec2* b )
137{
138 return a->x * b->x + a->y * b->y;
139}
140
149void vec2_uv( double* u, double* v, const vec2* source, const vec2* reference_vector )
150{
151 vec2 unit_parallel, unit_perpendicular;
152
153 vec2_uv_decomp( &unit_parallel, &unit_perpendicular, reference_vector );
154
155 *u = vec2_dot(source, &unit_parallel);
156 *v = vec2_dot(source, &unit_perpendicular);
157}
158
166void vec2_uv_decomp( vec2* u, vec2* v, const vec2* reference_vector )
167{
168 vec2_pset(u, 1, VANGLE(*reference_vector));
169 vec2_pset(v, 1, VANGLE(*reference_vector)+M_PI_2);
170}
Header file with generic functions and naev-specifics.
Represents a 2d vector.
Definition vec2.h:32