C++ 旋转矩阵的Y旋转
这是我的斧子。我不知道该怎么称呼它。(是ZXY吗?) (这是摄像机看到的) 我想知道绕Y轴的平面旋转。目前是0度左右的Y 我就是这么做的C++ 旋转矩阵的Y旋转,c++,math,3d,matrix,rotation,C++,Math,3d,Matrix,Rotation,这是我的斧子。我不知道该怎么称呼它。(是ZXY吗?) (这是摄像机看到的) 我想知道绕Y轴的平面旋转。目前是0度左右的Y 我就是这么做的 Matrix33 orientmatrix = body->getGlobalOrientation(); return Degree(-asin(orientmatrix[2][0])); 这将返回不正确的逆时针角度: 0..45..90..45..0..-45..-90..-45..0 应该是: 0…45…90…135…180…45…90…135
Matrix33 orientmatrix = body->getGlobalOrientation();
return Degree(-asin(orientmatrix[2][0]));
这将返回不正确的逆时针角度:
0..45..90..45..0..-45..-90..-45..0
应该是:
0…45…90…135…180…45…90…135…0
我做错了什么
多谢各位
(这是食人魔,代码是C++)你做错的是你在使用asin。它返回一个介于-pi/2到+pi/2或-90度到+90度之间的值 如果希望值跨越360度,则需要使用
atan2
。假设你的方向真的是围绕y旋转,你可以使用
Degree(atan2(orientmatrix[0][2], orientmatrix[0][0]))