我正在研究骨骼动画编辑器。现在,每个骨骼都有一个起点和终点,当鼠标位于一个点之下时,随后的拖动将导致骨骼根据鼠标的位置旋转。为此,我调用atan2并将鼠标坐标转换为本地空间,其中本地是鼠标按下的位置。虽然这“有效”,但感觉确实是错误的。由骨骼形成的矢量不一定与鼠标点平行,它应该是。
我觉得atan2有些东西我不明白。
if(boneUnderMouse)
{
boneUnderMouse->setAngle(startAngle +
(atan2((float)event.mouse.x - startX,event.mouse.y - startY)));
}
由于
答案 0 :(得分:6)
atan2
包含参数y
,x
的顺序。因此你需要
atan2((float)event.mouse.y - startY, (float)event.mouse.x - startX)