#include #include "2dmath.h" FPOINT add2(FPOINT a, FPOINT b) { return((FPOINT){.x=a.x+b.x,.y=a.y+b.y}); } FPOINT sub2(FPOINT a, FPOINT b) { return((FPOINT){.x=a.x-b.x,.y=a.y-b.y}); } FPOINT scale2(FPOINT a, double f) { return((FPOINT){.x=a.x*f,.y=a.y*f}); } double dot2(FPOINT a, FPOINT b) { return((a.x*b.x)+(a.y*b.y)); } FPOINT unit2(FPOINT a) { double d; d = sqrt(dot2(a,a)); return((FPOINT){.x=a.x/d,.y=a.y/d}); } double len2(FPOINT a) { return(sqrt(dot2(a,a))); } double len22(FPOINT a) { return(dot2(a,a)); } double cross2(FPOINT a, FPOINT b) { return((a.x*b.y)-(a.y*b.x)); } FPOINT sincos2(double a) { return((FPOINT){.x=cos(a),.y=sin(a)}); } FPOINT r90(FPOINT v) { return((FPOINT){.x=-v.y,.y=v.x}); }