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

求解旋转矩形上的点

禄豪
2023-03-14

我在AS3工作。

我有一个通用的矩形。这个矩形可以有任何长度、任何宽度和任何旋转。我正在尝试求解矩形四个角的x和y坐标。我知道矩形中心的坐标,我知道它的宽度、高度、最高点和最低点之间的y距离以及最远左侧和最远右侧之间的x距离,以及知道旋转。

我的代码目前看起来像这样(当然,对象是有问题的矩形,请记住,当我应用它时,它可以具有任何维度 - 这只是一种可能性。初始宽度和高度是实际的长度和宽度,而后面引用的宽度和高度是最高点和最低点之间以及最远的左右点之间的 x 和 y 距离,旋转当然是旋转,x 和 y 是对象的中心坐标)。

import flash.events.Event;
addEventListener(Event.ENTER_FRAME, Rotate, false, 0, true);

var Radius:Number = Math.sqrt(((Object.height / 2) * (Object.height / 2)) + ((Object.width / 2) * (Object.width / 2)));

function Rotate(event:Event)
{

    Object.rotation += 1;
    Marker1.x = Math.sqrt((Radius * Radius) - ((Object.height / 2) * (Object.height / 2))) + Object.x;
    Marker2.x = - Math.sqrt((Radius * Radius) - ((Object.height / 2) * (Object.height / 2))) + Object.x;
    Marker3.y = Math.sqrt((Radius * Radius) - ((Object.width / 2) * (Object.width / 2))) + Object.y;
    Marker4.y = - Math.sqrt((Radius * Radius) - ((Object.width / 2) * (Object.width / 2))) + Object.y;

    Marker1.y = Object.y + (Object.height / 2);
    Marker2.y = Object.y - (Object.height / 2);
    Marker3.x = Object.x + (Object.width / 2);
    Marker4.x = Object.x - (Object.width / 2);

}

如您所见,我正试图使用圆形几何图形在矩形的拐角处放置四个小圆圈(标记1-4),只是为了测试目的,以确认我收集了正确的坐标。问题是,坐标将始终放置在x和y或-x和-y中,但决不会放置在图形的其他两个象限中。我想不出一个简单的方法来动态模拟二次方程在程序中的变化。有人知道用矩形的长度、宽度和旋转找到这四个点的方法吗?

共有1个答案

夏英发
2023-03-14

如果将角点的坐标表示为距矩形中点的偏移量,则可以轻松地将它们逆时针旋转θ角

dx'=dx×cosθ

然后,可以将旋转的偏移添加到中点以恢复拐角的新坐标。

 类似资料:
  • 我刚开始使用JavaFX,有一个问题。在我的项目中,我想使用旋转矩形。但矩形只围绕其中心旋转,我希望它围绕其左上角旋转。 就像这张照片(从这里开始): 下面是我的项目中的一些代码: 在这种情况下,如果按下箭头键,矩形会旋转。

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

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

  • 我有两个矩形,其中一个是另一个的剪裁。现在我想围绕剪切矩形的中心旋转较大的矩形并调整x / y值。 如何计算旋转后的新x/y值? 我只想绕着小盒子的中心旋转大盒子的x/y。因此,较大盒子的x/y点相对于较小盒子的顶部/左侧点。我有小盒子的宽度和高度,所以我可以计算大盒子相对于小盒子中心的x/y点。旋转的角度以度为单位。旋转可以是任何角度,例如10度。

  • 我正在尝试在虚拟桌面程序的API中编写脚本(javascript),以便我可以操作一些令牌(Car Wars :))。 我正在寻找答案,但似乎我正在挣扎并重新发明轮子,所以我想我会寻求帮助。我感到困惑的一个原因是程序返回基于y是向下的结果,Deg顺时针方向,这与所有trig公式想要的(逆时针方向和y是向上的)不同。 这是我可以访问的内容。矩形围绕中心、中心点 (x,y)、宽度、高度和旋转旋转。我有

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