-fix vector rotation, fixes #1705

This commit is contained in:
Juan Linietsky 2015-04-18 14:19:33 -03:00
parent 2592f0da9f
commit 6b3cd13c8d

View File

@ -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 {