2 * math.c - basic vector calculations
4 * author: Frank Zirkelbach <frank.zirkelbach@physik.uni-augsburg.de>
14 int v3_add(t_3dvec *sum,t_3dvec *a,t_3dvec *b) {
23 int v3_sub(t_3dvec *sum,t_3dvec *a,t_3dvec *b) {
32 int v3_scale(t_3dvec *result,t_3dvec *a,double s) {
41 int v3_zero(t_3dvec *vec) {
50 int v3_set(t_3dvec *vec,double *ptr) {
52 memcpy(vec,ptr,sizeof(t_3dvec));
57 int v3_copy(t_3dvec *trg,t_3dvec *src) {
59 memcpy(trg,src,sizeof(t_3dvec));
64 int v3_cmp(t_3dvec *a,t_3dvec *b) {
66 return(memcmp(a,b,sizeof(t_3dvec)));
69 double v3_scalar_product(t_3dvec *a,t_3dvec *b) {
71 return(a->x*b->x+a->y*b->y+a->z*b->z);
74 double v3_absolute_square(t_3dvec *a) {
76 return(a->x*a->x+a->y*a->y+a->z*a->z);
79 double v3_norm(t_3dvec *a) {
81 return(sqrt(v3_absolute_square(a)));
84 int v3_per_bound(t_3dvec *a,t_3dvec *dim) {
92 if(a->x>=x) a->x-=dim->x;
93 else if(-a->x>x) a->x+=dim->x;
94 if(a->y>=y) a->y-=dim->y;
95 else if(-a->y>y) a->y+=dim->y;
96 if(a->z>=z) a->z-=dim->z;
97 else if(-a->z>z) a->z+=dim->z;