vector.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <furi.h>
  3. typedef struct {
  4. float x, y;
  5. } Vector;
  6. #define VECTOR_ZERO (Vector){.x=0,.y=0}
  7. Vector vector_copy(Vector *const other);
  8. //basic math
  9. void vector_add(Vector *const a, Vector *const b, Vector *target);
  10. void vector_sub(Vector *const a, Vector *const b, Vector *target);
  11. void vector_mul(Vector *const a, Vector *const b, Vector *target);
  12. void vector_div(Vector *const a, Vector *const b, Vector *target);
  13. // computations
  14. float vector_length_sqrt(Vector *const a);
  15. float vector_length(Vector *const v);
  16. float vector_distance(Vector *const a, Vector *const b);
  17. void vector_normalized(Vector *const v, Vector *target);
  18. void vector_inverse(Vector *const v, Vector *target);
  19. float vector_dot(Vector *const a, Vector *const b) ;
  20. void vector_rotate(Vector *const v, float deg, Vector *target) ;
  21. void vector_rounded(Vector *const source, Vector *target);
  22. float vector_cross(Vector *const a, Vector *const b) ;
  23. void vector_perpendicular(Vector *const v, Vector *target);
  24. void vector_project(Vector *point, Vector *const line_a, Vector *const line_b, Vector *result, bool *success);
  25. void vector_lerp(Vector *const start, Vector *const end, float time, Vector *result);
  26. void vector_quadratic(Vector *const start, Vector *const control, Vector *const end, float time, Vector *result);