使用atan2在用鼠标拖动时旋转图像

jma*_*erx 1 c++ math atan2

我正在研究一个骨骼动画编辑器.现在,每个骨骼都有一个起点和终点,当鼠标位于一个点之下时,随后的拖动将导致骨骼根据鼠标的位置旋转.为此,我调用atan2并将鼠标坐标转换为本地空间,其中本地是鼠标按下的位置.虽然这"有效",但感觉确实是错误的.由骨形成的矢量不一定平行于鼠标点,它应该是.

我觉得atan2有些东西我不明白.

:

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

谢谢

How*_*ard 6

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

 atan2((float)event.mouse.y - startY, (float)event.mouse.x - startX)
Run Code Online (Sandbox Code Playgroud)