我想在中心点矩形上旋转矩形。
例如,我有大小为 41 x 21 的矩形网格
所以我的中心矩形是 20 x 10
现在我想沿着中心矩形旋转 22 x 14 到 90 度。
旋转 22 x 14 的公式是什么。
任何帮助都会很棒。
通常,将单元格投影到平面上,然后使用旋转矩阵,然后将它们投影回网格中。对于这个例子,它有点矫枉过正,但仍然有效。
您需要将原点设置为 (21,11) 而不是 (0,0) 所以首先翻译您的点
[x'] := [x - 21]
[y'] [y - 11]
然后应用旋转矩阵变换(注意我假设轴的传统方向)
[x''] := [ cos(-Pi/2) -sin(-Pi/2) ][x'] = [ y']
[y''] [ sin(-Pi/2) cos(-Pi/2) ][y'] [-x']
然后取消翻译原点。因为你的平面不是方形的,所以旋转后的平面是不同的形状(它的尺寸为 21x41,原点为 11,21)。我假设这就是您想要的,并且您不希望点能够“从飞机上掉下来”。
[x'''] := [x'' + 11]
[y'''] [y'' + 21]
简化代数,这归结为地图
[x] -> [ y ]
[y] [42-x]
回答
(22,14) 旋转到 (14,20)
注意:从 1 开始,我把 41x21 的中心设为 21x11,而不是 20x10?