[问题1] 请写出以下3*3单位矩阵沿顺时针方向旋转90°后所形成的矩阵。
参考答案:
解析:
[分析]: 试题一 信息处理过程中经常需要将图片点阵或汉字点阵做旋转处理。这种方法可以简化为对n*n矩阵的旋转处理。其中,n应该是一个变量,运行时由该程序模块外部导入具体的值。编程技术的一个基本要点就是对通用的情况找出规律,再按规律进行处理。 试题中给出了“按顺时针方向旋转90°”的例子。在这种场合,用案例说明比叙述定义更为简单。人们也不难在案例的基础上推广理解。 对于问题1,人们不难获得另一个案例:
对于问题2,根据按顺时针方向旋转90°保持矩阵不变,可以逐步推断出一些元素的值:
对于问题3,矩阵A按顺时针方向旋转90°得到矩阵B,矩阵B按顺时针方向旋转 90°得到矩阵C。 矩阵A的第1行复制到矩阵B的第n列。 矩阵A的第2行复制到矩阵B的第n-1列。 矩阵A的第3行复制到矩阵B的第n-2列。 按照上述规律,矩阵A的第i行应复制到矩阵B的第n-i+1列。 A(i,j)是矩阵A的第i行第j列的元素,它应复制到矩阵B的第n-i+1列中,第j行元素。即A(i,j)→B(j,n-i+1)。 矩阵B的第1行复制到矩阵C的第n列。 矩阵B的第2行复制到矩阵C的第n-1列。 按照上述规律,矩阵B的第j行应复制到矩阵C的第n-j+1列。 B(j,n-i+1)是矩阵B的第j行第n-i+1列的元素,它应复制到矩阵C的第n-j+1列中,第n-i+l行元素。即B(j,n-i+1)→C(n-i+l,n-j+1)。 反之,矩阵B的第1列来自矩阵A的第n行。 矩阵B的第2列来自矩阵A的第n-1行。 按照上述规律,矩阵B的第j列来自矩阵A的第n-j+1行。 B(i,j)是矩阵B的第j列中第i行元素,它来自矩阵A的第n-j+1行中第i列的元素,即B(i,j)←A(n-j+1,i)。 另一种更理性的方法是:在导出按顺时针方向旋转90°的变换 A(i,j)→B(j,n-i+1) 后,就能通过推导再导出其他多次变换。可以将上述变换写成: A(x,y)→B(u,v) 从而,B(j,n-i+1)可以直接变换到C(n-i+l,n-j+1)。而且,可以直接导出A(n-j+1),i)→B(i,j)。