bevec.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef BEVEC_H_INCLUDED
  2. #define BEVEC_H_INCLUDED
  3. /* Header contains defines for a 2D vector type. */
  4. struct BeVec_;
  5. typedef struct BeVec_ BeVec;
  6. /* 2D Vector */
  7. struct BeVec_ { double x, y; };
  8. BeVec bevec(double x, double y);
  9. BeVec bevec0();
  10. BeVec bevec_add(BeVec v1, BeVec v2);
  11. BeVec bevec_sub(BeVec v1, BeVec v2);
  12. BeVec bevec_mul(BeVec v1, double factor);
  13. #define bevec_mult bevec_mul
  14. BeVec bevec_neg(BeVec v1);
  15. double bevec_dot(BeVec v1, BeVec v2);
  16. BeVec bevec_div_unsafe(BeVec v1, double factor);
  17. BeVec bevec_div(BeVec v1, double factor);
  18. double bevec_lengthsq(BeVec v1);
  19. double bevec_length(BeVec v1);
  20. BeVec bevec_normalize(BeVec v1);
  21. BeVec bevec_normalize_unsafe(BeVec v1);
  22. BeVec bevec_project(BeVec vec , BeVec on);
  23. BeVec bevec_rightnormal(BeVec vec);
  24. BeVec bevec_leftnormal(BeVec vec);
  25. double bevec_perproduct(BeVec v1, BeVec v2);
  26. BeVec bevec_forangle(double angle);
  27. double bevec_toangle(BeVec v1);
  28. BeVec bevec_project_2(BeVec self, BeVec other);
  29. BeVec bevec_perp(BeVec self);
  30. BeVec bevec_nperp(BeVec self);
  31. BeVec bevec_project_2(BeVec self, BeVec other);
  32. BeVec bevec_rotate(BeVec self, BeVec other);
  33. BeVec bevec_unrotate(BeVec self, BeVec other);
  34. BeVec bevec_lerp(BeVec self, BeVec other, double tx);
  35. BeVec bevec_cliplength(BeVec self, double m);
  36. BeVec bevec_delta(BeVec self, BeVec other);
  37. double bevec_distance(BeVec self, BeVec other);
  38. double bevec_distsq(BeVec self, BeVec other);
  39. double bevec_near_p(BeVec self, BeVec other, double d);
  40. double bevec_angle(BeVec self);
  41. BeVec bevec_xvec(BeVec self);
  42. BeVec bevec_yvec(BeVec self);
  43. BeVec bevec_abs(BeVec self);
  44. #endif