Java 旋转偏移坐标

Java 旋转偏移坐标,java,math,graphics,coordinates,Java,Math,Graphics,Coordinates,我有一段地图我可以旋转,旋转坐标后我偏移了它们,所以左上角的坐标是(0,0)。这很好,我可以通过执行相同的旋转-偏移组合向地图添加其他覆盖 rotate(x) -> offset1 问题是如果我尝试执行第二次旋转,即 rotate(x) -> offset1 -> rotate(y) -> offset2 是否可以将两个旋转和偏移组合为一个旋转偏移组合并获得相同的结果 rotate(x+y) -> offset3 其中偏移量3=偏移量1+偏移量2 这样,无论有

我有一段地图我可以旋转,旋转坐标后我偏移了它们,所以左上角的坐标是(0,0)。这很好,我可以通过执行相同的旋转-偏移组合向地图添加其他覆盖

rotate(x) -> offset1
问题是如果我尝试执行第二次旋转,即

rotate(x) -> offset1 -> rotate(y) -> offset2
是否可以将两个旋转和偏移组合为一个旋转偏移组合并获得相同的结果

rotate(x+y) -> offset3
其中偏移量3=偏移量1+偏移量2

这样,无论有多少旋转/偏移,我都可以在正确的位置添加覆盖。我想为旋转和偏移存储一个值,而不是以前的操作堆栈

除了在执行新操作之前完全移除先前的旋转/偏移外,即不

 -offset1 -> rotate(-x) - > rotate(y) -> offset2
谢谢
Ben

您可以使用矩阵平移来执行偏移、旋转和缩放。您可以通过将矩阵相乘来组合它们。

您可以使用矩阵平移来执行偏移、旋转和缩放。您可以通过将矩阵相乘来组合这些矩阵。

您需要。使用此矩阵为二维向量(x,y)应用(tx,ty)的平移:

这个旋转θ的矩阵:

通过简单地将矩阵相乘,可以组合多个平移和旋转。(顺序很重要。)

您需要。使用此矩阵为二维向量(x,y)应用(tx,ty)的平移:

这个旋转θ的矩阵:

通过简单地将矩阵相乘,可以组合多个平移和旋转。(顺序很重要。)