逆时针旋转矩阵90度
Rotate matrix by 90 degrees counterclockwise
这是一个非常著名的问题,您需要将矩阵围绕中心元素逆时针旋转 90 度。我不明白的是这个问题的智能解决方案,它首先对矩阵进行转置,然后反转每一列中的元素。任何人都可以提供这背后的直觉,或证明它为什么有效。
Link: https://www.geeksforgeeks.org/rotate-matrix-90-degree-without-using-extra-space-set-2/
转置可以看作是reflection通过左上/右下轴。
列中的反转元素可以看作是通过中间水平轴的反射。
当您将两个反射与轴形成一个角度的 theta 组合时,您将旋转 2 * theta,如 here:
所解释的
A rotation in the plane can be formed by composing a pair of
reflections. First reflect a point P to its image P′ on the other side
of line L1. Then reflect P′ to its image P′′ on the other side of line
L2. If lines L1 and L2 make an angle θ with one another, then points P
and P′′ will make an angle 2θ around point O, the intersection of L1
and L2.
这里L1和L2夹角45°,所以旋转90°。
这是一个非常著名的问题,您需要将矩阵围绕中心元素逆时针旋转 90 度。我不明白的是这个问题的智能解决方案,它首先对矩阵进行转置,然后反转每一列中的元素。任何人都可以提供这背后的直觉,或证明它为什么有效。
Link: https://www.geeksforgeeks.org/rotate-matrix-90-degree-without-using-extra-space-set-2/
转置可以看作是reflection通过左上/右下轴。
列中的反转元素可以看作是通过中间水平轴的反射。
当您将两个反射与轴形成一个角度的 theta 组合时,您将旋转 2 * theta,如 here:
所解释的A rotation in the plane can be formed by composing a pair of reflections. First reflect a point P to its image P′ on the other side of line L1. Then reflect P′ to its image P′′ on the other side of line L2. If lines L1 and L2 make an angle θ with one another, then points P and P′′ will make an angle 2θ around point O, the intersection of L1 and L2.
这里L1和L2夹角45°,所以旋转90°。