2013-05-06 117 views
1

我想在虚拟桌面程序的API中编写一个脚本(JavaScript),所以我可以操纵一些令牌(汽车战争:))。从任何一点旋转矩形

我有点找到答案,但似乎我正在挣扎,重新发明轮子,所以我想我会寻求帮助。我感到困惑的一个原因是程序返回的结果是基于+ y的,并且Deg按顺时针方向旋转,这与所有三角公式所需的不同(逆时针和+ y向上)。

以下是我可以访问的内容。矩形围绕中心,中心点(x,y),宽度,高度和旋转进行旋转。我有代码的工作方向的旋转,左右,上下等方向移动矩形。现在我需要能够围绕任何四个角落旋转或任何点将是很好的,但四个角落都是需要的。

它不会让我包括一个图像,因为我是新的,所以我希望描述足够好。我完成了一个图像。 :(

在API中我实际上不能绘制矩形,我只能设置它的旋转和中心值。所以我的想法是,如果我可以找到当前的一个角的x,y,然后旋转它(我可以很容易地通过设置矩形旋转来做到这一点),找到同一个角的新x,y,然后我将知道偏移量并将其应用到中心(即矩形如何移动)

所以我需要能够在任何给定的起始角度找到一个矩形的任何角落的x,y,然后再以一个以其中心旋转的新角度找到这个偏移然后很容易应用到中心x,y和长方形将看到沿着其一个角部旋转

感谢您的帮助。我希望我能最终弄明白,只是写出这些描述实际上帮助我思考了这一点。但我目前被卡住了!

康拉德

回答

1

诀窍围绕在2D的任意一点旋转(例如,长方形的四个角之一),那么该点周围要先翻译图形顶点旋转在原点(即0,0)。

为了达到这个目的:
1.用(-x,-y)翻译你的矩形。
2.将矩形旋转所需的角度。
3.用(x,y)翻译矩形,将其放回原来的位置。
其中(x,y)是围绕其旋转的点的x/y坐标。

您可以使用负角度来调整顺时针旋转。

网上有很多这方面的信息,例如: http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm