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

时间:2017-05-13 04:04:15

标签: math 3d cocos2d-x box2d

我正在开发一个游戏池游戏,使用box2d。

我知道球的移动矢量(vtX,vtY),如何计算球移动时的旋转(x,y)。

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

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

1 个答案:

答案 0 :(得分:0)

您可以将生成的旋转表示为旋转轴和角度的组合。我强烈反对使用欧拉角,因为如果正确完成,这将导致非常复杂的表达。

如果您的球移动距离(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)。角度将以弧度为单位。