gpt4 book ai didi

geometry - 平移矩形的坐标

转载 作者:行者123 更新时间:2023-12-04 06:35:30 27 4
gpt4 key购买 nike

我有两个应用程序,一个创建一个矩形,并输出它的左、顶部、宽度、高度和旋转角度,另一个将矩形绘制到屏幕上。

Application1 (writer) 使用左上角作为旋转原点。

Application2(阅读器)使用中心作为旋转的原点。

我正在尝试获得 deltaX 和 deltaY,以便我可以绘制矩形,围绕原点旋转它,并使用内置的转换方法将矩形移动到位。

我知道点旋转可以计算如下:
x' = x*cos(theta) - y*sin(theta)y' = x+sin(theta) + y*cos(theta)
但是,有了这个,我似乎无法弄清楚 translate 方法所需的实际增量值。

在下图中,白色矩形是使用 top/left 作为旋转点绘制的,而绿色矩形是使用 center 作为旋转点绘制的。我想将绿色矩形移到白色矩形上。

(0,0)

Image

最佳答案

您必须通过以下方式翻译:
(Tx, Ty) = (-w/2 (1-cos theta) - h/2 sin theta), -h/2 (1-cos theta) - w/2 sin theta)

发展:

  • 在应用程序 1 中,矩形的左上角顶点为 (x1, y1) .
  • 由于应用程序 1 围绕左上角的顶点旋转矩形,因此它们的旋转位置重合:(x1',y1') = (x1,y1)
  • 应用程序 2 使用中心坐标,它与应用程序 1 中的左上点相关,如下所示:(xc2,yc2) = (x1,y1) + (w/2,h/2)
  • 计算旋转 应用程序 2 的左上角顶点,我们应用 rotation matrix R :(x2',y2') = (xc2,yc2) - R (w/2,h/2)
  • 所以翻译向量电话 是(代入上面的等式):enter image description here
  • 关于geometry - 平移矩形的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4930776/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com