有二维数组 ary = [[1, 2, 3], [4, ,5, 6], [7, 8, 9]];
展开时如下 : [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
让这个数组旋转90°, 他就变成了 ary90 = [[3, 6, 9], [2, ,5, 8], [1, 4, 7]];
展开时如下 : [
[3, 6, 9],
[2, 5, 8],
[1, 4, 7],
]
如何旋转呢, 有两种方法, 一种是算法旋转, 另一种是规则旋转, 先讲讲算法旋转.
先看ary的展开样式, 我们定义横着的坐标为 X, 竖着的坐标为 Y. X和Y都从 0 开始
所以 1 的坐标是 (0, 0)
展开时如下 : [
[1 (0,0), 2 (1, 0), 3 (2, 0) ], 第一行, Y固定为0, X分别是1,2,3
[4(0, 1), 5(1, 1), 6 (2, 1) ], 第二行, Y固定为1, X分别是1,2,3
[7 (0, 2), 8(1, 2), 9(2, 2) ], 第三行, Y固定为2, X分别是1,2,3
]
这时, 我们得到了 任意一个数值的坐标 (x, y)
旋转后的坐标是 (newX, newY)
newX = y;
newY = xc - x; xc是数值所在行, 最大索引数. 因为是方形矩阵. 所以每行数值是一样的, 应该是ary[i].count - 1, 当前值为2
xc = 2;
//取任意值 3, 他的坐标 (2, 0):
x = 2;<