Math 如何通过移动向量(x,y)获得右旋转(x,y)

Math 如何通过移动向量(x,y)获得右旋转(x,y),math,3d,cocos2d-x,box2d,Math,3d,Cocos2d X,Box2d,我正在开发一个台球游戏,使用box2d 我已经知道了球的运动矢量(vtX,vtY),如何计算球运动时的旋转(x,y) 球是3D球体,我需要旋转来旋转球 ps:在我的情况下,我不能使用3d物理引擎。你可以将产生的旋转表示为旋转轴和角度的组合。我强烈建议不要使用欧拉角,因为如果操作正确,这将导致非常复杂的表达式 如果球移动距离(dx,dy),则旋转轴为正常化(交叉(向上,(dy,dy)),其中向上为向上方向。假设这是z轴,得到 axis = normalize(-dy, dx, 0) 角度是 an

我正在开发一个台球游戏,使用box2d

我已经知道了球的运动矢量(vtX,vtY),如何计算球运动时的旋转(x,y)

球是3D球体,我需要旋转来旋转球


ps:在我的情况下,我不能使用3d物理引擎。

你可以将产生的旋转表示为旋转轴和角度的组合。我强烈建议不要使用欧拉角,因为如果操作正确,这将导致非常复杂的表达式

如果球移动距离
(dx,dy)
,则旋转轴为
正常化(交叉(向上,(dy,dy))
,其中
向上为向上方向。假设这是z轴,得到

axis = normalize(-dy, dx, 0)
角度是

angle = length(dx, dy) / r,
其中,
r
是球的半径,
长度(dx,dy)=sqrt(dx*dx+dy*dy)
。角度将以弧度为单位