从任意点旋转矩形

Rotating a Rectangle from any point

本文关键字:旋转 任意点      更新时间:2023-09-26

我正试图在虚拟桌面程序的API中编写脚本(javascript),以便我可以操纵一些令牌(汽车战争:))。

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

这是我可以访问的内容。矩形围绕中心旋转,中心点(x,y),宽度,高度和旋转。我已经得到了在旋转方向上移动矩形的代码,从一边到另一边,上下等。现在我需要能够围绕四个角中的任何一个或任何点旋转它,但四个角就足够了。

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

在API中,我不能实际绘制矩形,我只能设置它的旋转和中心值。所以我的想法是,如果我能找到当前一个角的x,y,然后围绕中心旋转所需的角度(我可以通过设置矩形旋转轻松地做到这一点),找到同一个角的新x,y。然后我将知道偏移量并将其应用于中心(这也是矩形移动的方式)。

所以我需要能够求出矩形的任意角在任意给定的起始角处的x,y,然后再在其中心旋转一个新角度。这个偏移量可以很容易地应用到中心x,y,矩形会看到已经沿着它的一个角旋转。

谢谢你能给的任何帮助。我希望我最终能弄清楚,只是把这个描述写出来实际上帮助我把它想清楚了。但我现在被困住了!

康拉德

在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