围绕中心旋转一个矩形?

时间:2013-05-30 03:04:21

标签: algorithm user-interface geometry processing

我想点击并拖动一个矩形的一角,让矩形围绕它的中心旋转。

使用正方形非常容易:

rot = PI * 3 / 4 + atan2( (centerY - mouseY), (centerX - mouseX) );

但是如果我想旋转一个矩形,我不知道如何处理偏移以使旋转平滑移动鼠标。

在这个jsfiddle示例http://jsfiddle.net/R4QpV/中,单击红色角可以围绕正方形的中心旋转。但是,如果你点击绿色角落,那就有一个跳跃。如何使绿色角落平滑并按下鼠标,就像点击方形角一样?

1 个答案:

答案 0 :(得分:0)

使用正方形,对角线沿着角度PI / 4(或3*PI/4)。对于矩形,您需要根据对角线的角度设置旋转。我不确定您的坐标系是什么,但您应该用PI * 3 / 4替换atan2(centerY - cornerY, centerX - cornerX)(给出或取+/-符号)。