我有一个我可以旋转的地图部分,旋转坐标后我会偏移它们,所以左上角的坐标是(0,0)。这很好用,我可以通过执行相同的旋转偏移组合向地图添加其他叠加层。
rotate(x) -> offset1
问题是如果我尝试执行第二次旋转,即
rotate(x) -> offset1 -> rotate(y) -> offset2
是否可以将两个旋转和偏移组合成一个旋转偏移组合并获得相同的结果?
rotate(x+y) -> offset3
其中offset3 = offset1 + offset2
这样我就可以在正确的位置添加叠加层,而不管有多少个旋转/偏移。我想为旋转和偏移存储单个值,而不是先前的操作堆栈。
除了在执行新操作之前完全删除先前的旋转/偏移,即NOT
-offset1 -> rotate(-x) - > rotate(y) -> offset2
由于 本
答案 0 :(得分:1)
你想要transformation matrices。使用此矩阵对2D向量(x,y)应用(tx,ty)的转换:
这个由theta旋转的矩阵:
通过简单地乘以矩阵,可以组合多个平移和旋转。 (顺序很重要。)
答案 1 :(得分:0)
您可以使用矩阵转换执行偏移,旋转和缩放。您可以通过将矩阵相乘来组合这些。