我有两个应用程序,一个创建一个矩形,输出它的左,顶部,宽度,高度和旋转角度,另一个将矩形绘制到屏幕上。
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)
答案 0 :(得分:3)
你必须翻译:
发展:
在应用程序1中,矩形的左上顶点应为。
由于应用程序1围绕左上顶点旋转矩形,因此它们的旋转位置重合:
应用程序2使用中心坐标,它与应用程序1中的左上角相关,如下所示:
要计算应用2中的旋转左上顶点,我们应用rotation matrix R :
所以翻译向量 T 是(代上面的等式):