2013-09-30 86 views
0

我正在使用旋转来旋转一个矩形,我在屏幕上显示一个角度为 θ°。我的矩形顶点的矩阵是:使用围绕不同原点的旋转矩阵旋转对象? (java)

my rectangle matrix of vertices

其中第一列是x值,第二列是y值。我加载像这样的顶点:bottomLeft(2,4),topLeft(2,5),topRight(3,5),最后bottomRight(3,4)

接下来,我乘这对旋转矩阵:

rotation matrix

最后一次计算完成后,我得到了一组新的顶点:

new set of vertices

这是伟大的,除了一个问题之外,它都围绕着(0,0)的中心点旋转。我希望它围绕我的bottomLeft顶点(2,4)(这个矩形的矩阵中的第一个顶点)旋转。我如何去做这件事?我需要做些什么才能将它旋转到我的bottomLeft顶点(基本上将(0,0)的中心点更改为(2,4)作为我的中心)?

回答

1

所有旋转都将围绕原点完成,因此您必须将矩形移至原点,旋转原点,然后将其移回原点。

如果使用Affine Transforms你可以做所有这三个与矩阵乘法,你可以有做所有三个操作一次一个矩阵。如果你的旋转矩阵必须保持2×2,那么你必须手动进行翻译(即移动)。

This answer显示了如何组合点旋转的变换。

+0

谢谢,我没有你所说的话,我把它移动到原点,旋转并移动回来。工作得很好。生病也要看仿射变换。再次感谢 –