如何通过移动向量(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)
。角度将以弧度为单位。
我正在开发台球游戏,使用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)
。角度将以弧度为单位。