首页 > 解决方案 > 如何围绕 mxn 矩阵旋转一组坐标?

问题描述

我有一个坐标,比如说{ x: 1, y: 2 }和一个矩阵大小{ x: 5, y: 6 }。我想将单个坐标围绕网格旋转 90 度(顺时针)。我可以通过运行旋转整个网格:

function rotate90(a){
  // transpose from http://www.codesuck.com/2012/02/transpose-javascript-array-in-one-line.html
  a = Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
  // row reverse
  for (i in a){
    a[i] = a[i].reverse();
  }
  return a;
}

从以下位置获取网格:

[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]

[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]

我怎样才能对单个坐标做同样的事情?4 x 4 网格上的一些示例可能是:

0, 0 -> 0, 3
0, 3 -> 3, 3
3, 3 -> 3, 0
3, 0 -> 0, 0

1, 1 -> 1, 2
1, 2 -> 2, 2
2, 2 -> 2, 1
2, 1 -> 1, 1

标签: javascriptarraysmatrix

解决方案


从 MxN 数组开始,(x,y) -> (y,Mx-1)


推荐阅读