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

围绕裁剪矩形中心的矩形旋转

古彦
2023-03-14

我有两个矩形,其中一个是另一个的剪裁。现在我想围绕剪切矩形的中心旋转较大的矩形并调整x / y值。

如何计算旋转后的新x/y值?

我只想绕着小盒子的中心旋转大盒子的x/y。因此,较大盒子的x/y点相对于较小盒子的顶部/左侧点。我有小盒子的宽度和高度,所以我可以计算大盒子相对于小盒子中心的x/y点。旋转的角度以度为单位。旋转可以是任何角度,例如10度。

共有3个答案

戚翼
2023-03-14

重要的是旋转中心和角度的坐标。

最紧凑的公式是通过复数(我希望你对此有所了解;你实际上不需要复杂的数据类型,你可以扩展公式)。

设< code>C为中心,< code>α为角度。那么对于任意点< code>P,图像< code>Q由下式给出

Q = (P - C) cis(α) + C

其中,cis(α)=cos(α)i和sin(α)

逆旋转简单地由下式给出

P = (Q - C) cis(-α) + C.
端木渝
2023-03-14

如果要围绕在同一坐标系中定义的点<code>C<code>旋转给定点<code>P<code>可以使用简单的旋转矩阵。计算<code>P<code>相对于<code>C<code>的坐标(减法),然后使用矩阵进行旋转,并通过再次添加<code>C<code>返回原始坐标。

拓拔曦
2023-03-14

您可以执行以下操作:

  • 确定要旋转的角度,确保它适合三角函数(sin(),cos(),...),即直角通常为Pi / 2
  • 在逆时针旋转的情况下,它是负数
  • 确定 c 的坐标,如 cx,cy
  • 逐个处理矩形的每个角,总共四个
  • 对于每个角 P,当前位于坐标 px,py 并移动到 px2,py2
    • 使用 atan2(py-cy, px-cx) 确定电流 P 和 C 之间的角度
    • 从度到弧度(用于三角学)计算弧度=(pi*度)/180.0
    • 将所需的旋转角度添加到当前角度,以获得新角度
    • 确定电流 P 到 C 的距离,sqrt((px-cx)(px-cx) (py-cy)(py-cy))
    • 将距离(不因旋转而改变)相乘,并采用适当的三角函数
    • px2 = 距离 * cos(newangle)
    • py2 = 距离 * sin(newangle)

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

  • 我试着绕着它的中心旋转一个矩形。使用GraphicsContext ie gc将旋转绘制到画布上。这是我的绘图代码。 这会将矩形移动到其中心,然后围绕其左上角点旋转矩形。我试着把两边的长度和宽度减半,但那只会让它飞得到处都是。我数学不好也许这里有更好的人能告诉我我做错了什么。 如果需要的话,我还存储了矩形的所有四个点(角)。 谢了乔

  • 我有两个矩形:红色和绿色。对于它们中的每一个,我有以下信息: 中心点( 和 坐标)。 旋转角度 宽度和高度 矩形将始终以正坐标移动。编辑:没有坐标可以是负的:矩形总是位于正坐标。因此,中心永远不会是(0,0)。 问题 我有一个起始位置。为了简化示例,假设我的红色和绿色矩形的位置如下: 现在,我使用0º和90º之间的角度φ旋转红色矩形。但是,绿色矩形需要旋转并保持其相对于红色矩形的位置。绿色矩形不仅

  • 如题所述,我想知道如何围绕中心旋转绘制的矩形。 我目前正在使用以下代码: 现在,旋转发生在2D空间中,但我似乎无法集中矩形的旋转。相反,矩形一直围绕全局点0,0旋转。 我想我的旋转和平移设置不正确或顺序不正确。 我不想是什么阻止此代码产生所需的输出。任何建议和答案将不胜感激。 谢谢

  • 我想从矩形照片中制作一个居中的圆形图像。照片的尺寸未知。通常是矩形。我尝试了很多方法: 密码

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