Ver código fonte

Add rotation around origin concept function.

Sam Jaffe 6 anos atrás
pai
commit
39c77fa273
2 arquivos alterados com 8 adições e 4 exclusões
  1. 1 0
      math/include/game/math/common.hpp
  2. 7 4
      math/src/common.cpp

+ 1 - 0
math/include/game/math/common.hpp

@@ -10,6 +10,7 @@
 #include "math_fwd.hpp"
 
 namespace math {
+  vec2 rotate(vec2 const & point, radian r);
   vec2 rotate(vec2 const & center, vec2 const & point, radian r);
   dim2::quad rotate(vec2 const & center, dim2::quad const & q, radian r);
 

+ 7 - 4
math/src/common.cpp

@@ -14,11 +14,14 @@
 #include "game/math/shape.hpp"
 
 namespace math {
+  vec2 rotate(vec2 const & point, radian r) {
+    vec2 vcos = point * static_cast<float>(cos(r));
+    vec2 vsin = point * static_cast<float>(sin(r));
+    return {{vcos[0] - vsin[1], vsin[0] - vcos[1]}};
+  }
+
   vec2 rotate(vec2 const & c, vec2 const & p, radian r) {
-    vec2 trans = p - c;
-    vec2 vcos = trans * static_cast<float>(cos(r));
-    vec2 vsin = trans * static_cast<float>(sin(r));
-    return {{vcos[0] - vsin[1] + c[0], vsin[0] - vcos[1] + c[1]}};
+    return rotate(p - c, r) + c;
   }
 
   dim2::quad rotate(vec2 const & c, dim2::quad const & q, radian r) {