【发布时间】:2017-05-13 04:04:15
【问题描述】:
我正在开发一个台球游戏,使用 box2d。
我知道球的移动向量(vtX,vtY),如何计算球移动时的旋转(x,y)。
球是 3D 球体,当球移动时我需要旋转来旋转球。
ps:就我而言,我无法使用 3d 物理引擎。
【问题讨论】:
我正在开发一个台球游戏,使用 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)。角度将以弧度为单位。
【讨论】: