当前位置: 首页 > 知识库问答 >
问题:

从任意点旋转矩形

楚浩然
2023-03-14

我正在尝试在虚拟桌面程序的API中编写脚本(javascript),以便我可以操作一些令牌(Car Wars :))。

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

这是我可以访问的内容。矩形围绕中心、中心点 (x,y)、宽度、高度和旋转旋转。我有代码用于将矩形沿旋转方向移动,左右移动,上下移动等。现在我需要能够围绕四个角中的任何一个旋转它,或者任何一点都会很好,但是只需要四个角。

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

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

所以我需要能够找到矩形的任何角的x,y,在任何给定的起始角度,然后在一个新的角度,在它的中心旋转。然后,该偏移将很容易地应用于中心x、y,矩形将沿其一个角旋转。

感谢你能给予的任何帮助。我希望我最终会弄明白,只是写下这个描述实际上已经帮助我想通了。但是我现在被困住了!

康拉德

共有1个答案

敖毅
2023-03-14

围绕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

 类似资料:
  • 我在AS3工作。 我有一个通用的矩形。这个矩形可以有任何长度、任何宽度和任何旋转。我正在尝试求解矩形四个角的x和y坐标。我知道矩形中心的坐标,我知道它的宽度、高度、最高点和最低点之间的y距离以及最远左侧和最远右侧之间的x距离,以及知道旋转。 我的代码目前看起来像这样(当然,对象是有问题的矩形,请记住,当我应用它时,它可以具有任何维度 - 这只是一种可能性。初始宽度和高度是实际的长度和宽度,而后面引

  • 在我的应用程序中,用户在同一行上点两(可以是任何角度)。所以我有以下信息 > 点坐标 点B坐标 A 点和点 B 之间的距离 A 跨距离(从用户获取作为绘制其他点的输入) 角度(从点A和点B计算)。 根据此信息,另一个应用程序绘制四个点(矩形的顶点)。 我要做的是,我必须找到这四个点(矩形)的中心点,以便能够正确地绘制这四个点之间的矩形。 现在我可以画出以中心为点的矩形,这显然是不正确的。我应该用什

  • 问题内容: 将转盘旋转到半圆形(北半球)图像的顶部作为背景。范围可以是0-180度。输入进行画布转换的方法时,刻度盘将旋转并停在匹配的值上。这是我根据phrogz传递的帮助和示例进行的尝试 问题答案: 通常,您要执行的操作是: 将上下文转换为画布上对象应旋转的点。 旋转上下文。 通过对象内旋转中心的负偏移来转换上下文。 在0,0处绘制对象。 在代码中: 这是一个实际的示例,展示了这一点。(旋转的数

  • 假设我使用大小为8的字符数组来表示图像的碰撞掩码。字符的每一位代表一个像素。实际上,对于64x64矩阵,我将使用长[64]阵列。 因此,框将显示为: 45度的示例输出应该是这样的,尽管旋转可以是任何角度。这个形状对于45度旋转可能不准确,因为我是用手做的。 另一个例子是向右旋转10度?这些值可能是错误的,因为从数学上讲,我不知道它将如何精确旋转,但我认为可以安全地假设,如果每个位的覆盖率超过旧形状

  • 问题内容: 我到处搜索,但找不到答案。 如何在Java中旋转矩形? 这是我的一些代码: 我尝试了g2d.rotate(100D); 但它没有用。提前致谢。 这是我编辑的代码: 问题答案: 对于图像,必须将Graphics2D的drawImage方法与相对的AffineTransform一起使用。 对于形状,您可以旋转Graphics2D本身: 顺便说一句,您应该重写paintComponent方法

  • 问题内容: 我需要创建围绕其中心旋转的矩形(因此它们不必平行于坐标系的轴)。因此,基本上每个矩形都可以由 center-X , center-Y , width , height 和 angle定义 。然后,我要做的是对这些矩形中是否包含某些点进行计算(因此不会涉及任何绘图)。我想我不能使用该类,因为这些矩形将始终与坐标系的x和y轴平行。是通过编写自己的矩形类来获得此功能的唯一方法,还是可以使用任