1

我正在做一个骨骼动画编辑器。现在,每个骨骼都有一个起点和终点,当鼠标在一个点下方时,随后的拖动将导致骨骼根据鼠标所在的位置旋转。为此,我调用 atan2 并将鼠标坐标转换到本地空间,其中本地是鼠标按下的位置。虽然这“有效”,但感觉真的不对。由骨骼形成的向量不一定与鼠标点平行,它应该是。

我觉得 atan2 有一些我不明白的地方。

    if(boneUnderMouse)
    {
        boneUnderMouse->setAngle(startAngle + 
       (atan2((float)event.mouse.x - startX,event.mouse.y   - startY)));
    }

谢谢

4

1 回答 1

6

atan2有参数的顺序y, x。因此你需要

 atan2((float)event.mouse.y - startY, (float)event.mouse.x - startX)
于 2011-05-23T18:27:28.033 回答