X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=math%2Fmath.c;h=9217c88aeda8398b58c42ed4e47266090e0c497b;hb=85abe46fecc79a3d7885ff6124186b2be2ca96ac;hp=6d707e93bd7c23b355d8292273349fb37c004d30;hpb=710717c4033bc5b8eb34644914e762a2834ae345;p=physik%2Fposic.git diff --git a/math/math.c b/math/math.c index 6d707e9..9217c88 100644 --- a/math/math.c +++ b/math/math.c @@ -7,6 +7,8 @@ #include +#include + #include "math.h" int v3_add(t_3dvec *sum,t_3dvec *a,t_3dvec *b) { @@ -64,3 +66,30 @@ int v3_cmp(t_3dvec *a,t_3dvec *b) { return(memcmp(a,b,sizeof(t_3dvec))); } +double v3_absolute_square(t_3dvec *a) { + + return(a->x*a->x+a->y*a->y+a->z*a->z); +} + +double v3_norm(t_3dvec *a) { + + return(sqrt(v3_absolute_square(a))); +} + +int v3_per_bounds(t_3dvec *a,t_3dvec *dim) { + + double x,y,z; + + x=0.5*dim->x; + y=0.5*dim->y; + z=0.5*dim->z; + + if(a->x>x) a->x-=dim->x; + else if(-a->x>x) a->x+=dim->x; + if(a->y>y) a->y-=dim->y; + else if(-a->y>y) a->y+=dim->y; + if(a->z>z) a->z-=dim->z; + else if(-a->z>z) a->z+=dim->z; + + return 0; +}