common.cpp 638 B

1234567891011121314151617181920212223242526272829303132
  1. //
  2. // common.cpp
  3. // math
  4. //
  5. // Created by Sam Jaffe on 8/20/16.
  6. //
  7. #include "common.hpp"
  8. #include "angle.hpp"
  9. #include "shape.hpp"
  10. #include "vector.hpp"
  11. namespace math {
  12. vec2 rotate(vec2 const & c, vec2 const & p, radian r) {
  13. vec2 trans = p - c;
  14. vec2 vcos = trans * static_cast<float>(cos(r));
  15. vec2 vsin = trans * static_cast<float>(sin(r));
  16. return {
  17. vcos[0] - vsin[1] + c[0],
  18. vsin[0] - vcos[1] + c[1]
  19. };
  20. }
  21. quad rotate(vec2 const & c, quad const & q, radian r) {
  22. return {
  23. rotate(c, q.ll, r),
  24. rotate(c, q.lr, r),
  25. rotate(c, q.ur, r),
  26. rotate(c, q.ul, r)
  27. };
  28. }
  29. }