Ver código fonte

-fix vector rotation, fixes #1705

Juan Linietsky 10 anos atrás
pai
commit
6b3cd13c8d
1 arquivos alterados com 2 adições e 17 exclusões
  1. 2 17
      core/math/vector3.cpp

+ 2 - 17
core/math/vector3.cpp

@@ -27,27 +27,12 @@
 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 /*************************************************************************/
 #include "vector3.h"
-
+#include "matrix3.h"
 
 
 void Vector3::rotate(const Vector3& p_axis,float p_phi) {
 
-	Vector3 axis1 = cross(p_axis);
-	float l = axis1.length();
-	if (l==0)
-		return;
-	axis1/=l;
-	Vector3 axis2 = axis1.cross(p_axis).normalized();
-
-	float _x = axis1.dot(*this);
-	float _y = axis2.dot(*this);
-
-	float ang = Math::atan2(_x,_y);
-
-	ang+=p_phi;
-
-	*this=((axis1 * Math::cos(ang)) + (axis2 * Math::sin(ang))) * length();
-
+	*this=Matrix3(p_axis,p_phi).xform(*this);
 }
 
 Vector3 Vector3::rotated(const Vector3& p_axis,float p_phi) const {