使用不同原点周围的旋转矩阵旋转对象? (Java)的

时间:2013-09-30 02:48:22

标签: java matrix rotation

我正在使用旋转来旋转我在屏幕上显示的矩形 θ°。我的顶点矩形矩阵是:

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 个答案:

答案 0 :(得分:1)

所有旋转都将围绕原点进行,因此您必须将矩形移动到原点,旋转它,然后将其移回。

如果您使用Affine Transforms,您可以使用矩阵乘法完成所有三个,并且您可以使用单个矩阵同时执行所有三个操作。如果您的旋转矩阵必须保持2x2,那么您必须手动进行平移(即移动)。

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