翻译矩形的坐标

时间:2011-02-08 07:59:14

标签: geometry translation

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

Application1(writer)使用top,left作为旋转原点。

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

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

我知道点数轮换可以按如下方式计算:

x' = x*cos(theta) - y*sin(theta) y' = x+sin(theta) + y*cos(theta)

但是,有了这个,我似乎无法弄清楚翻译方法所需的实际delta值。

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

(0,0)

Image

1 个答案:

答案 0 :(得分:3)

你必须翻译:

(Tx, Ty) = (-w/2 (1-cos theta) - h/2 sin theta), -h/2 (1-cos theta) - w/2 sin theta) http://tinyurl.com/6daesbm

发展:

  • 在应用程序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)

  • 所以翻译向量 T 是(代上面的等式):enter image description here