如何通过移动向量(x,y)获得正确的旋转(x,y)

How to get a right rotation(x,y) by move vector(x,y)

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

我知道小球的运动矢量(vtX,vtY),知道小球运动时的旋转(x,y)。

球是3D球体,我需要旋转来让球在移动时旋转。

ps: 就我而言,我无法使用 3d 物理引擎。

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

如果您的球移动距离 (dx, dy),旋转轴为 normalize(cross(up, (dy, dy))),其中 up 为向上方向。假设这是 z 轴,你得到

axis = normalize(-dy, dx, 0)

角度是

angle = length(dx, dy) / r,

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