Geometry 平移矩形';s坐标

Geometry 平移矩形';s坐标,geometry,translation,Geometry,Translation,我有两个应用程序,一个创建一个矩形,输出它的左、上、宽、高和旋转角度,另一个将矩形绘制到屏幕上 Application1(writer)使用左上方作为旋转原点 Application2(读卡器)使用中心作为旋转原点 我试图得到一个deltaX和deltaY,这样我就可以画出矩形,围绕原点旋转它,并使用内置的translate方法,将矩形移动到位 我知道点旋转可以按如下方式计算: x'=x*cos(θ)-y*sin(θ) y'=x+sin(θ)+y*cos(θ) 但是,有了这些,我似乎无法计算tr

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

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

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

我试图得到一个deltaX和deltaY,这样我就可以画出矩形,围绕原点旋转它,并使用内置的translate方法,将矩形移动到位

我知道点旋转可以按如下方式计算:

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

但是,有了这些,我似乎无法计算translate方法所需的实际增量值

在下图中,白色矩形使用“上/左”作为旋转点绘制,而绿色矩形使用“中心”作为旋转点绘制。我想把绿色的长方形换成白色的

(0,0)


您必须通过以下方式进行翻译:

发展:

  • 在应用1中,矩形的左上顶点应为

  • 由于应用程序1围绕左上顶点旋转矩形,因此它们的旋转位置重合:

  • 应用程序2使用与应用程序1中左上角点相关的中心坐标,如下所示:

  • 为了计算应用程序2中旋转的左上顶点,我们应用R

  • 因此,平移向量T为(替换上述等式):


平移,比如,将delta添加到矩形边界?或者你说的是其他的平移?我的理解是平移意味着通过deltaX,deltaY移动每个坐标。所以应用程序2通过矩形的中心坐标、宽度、高度和旋转来描述矩形?@Alan:那么应用程序1和2中的x轴和y轴的方向是什么?在这两个应用程序中,0,0是顶部,屏幕左角。嗨,丹尼尔:+1作为问题的原始答案,但是为了更清楚,我重新编写了问题。两个矩形都使用左上角作为起点;不同的是旋转点。因此,白色矩形从左上角旋转,而绿色矩形从中心旋转。再次感谢您花时间帮助我解决这个问题。如果不是太麻烦的话,你能解释一下你是如何解决这个问题的吗?我希望我有4个账户。所以我可以给这个答案投四票!