首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何围绕m矩阵旋转一组坐标?

如何围绕m矩阵旋转一组坐标?
EN

Stack Overflow用户
提问于 2020-08-13 19:31:09
回答 2查看 208关注 0票数 0

我有一个坐标,比如{ x: 1, y: 2 }和矩阵大小{ x: 5, y: 6 }。我想把那个单一的坐标旋转90度(顺时针方向)。我可以通过运行以下操作来旋转整个网格:

代码语言:javascript
复制
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;
}

它从以下位置获取网格:

代码语言:javascript
复制
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]

代码语言:javascript
复制
[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]

我怎么能用一个坐标来做同样的事情呢?4x4网格上的一些例子可能是:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-13 19:44:26

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

票数 1
EN

Stack Overflow用户

发布于 2020-08-13 19:37:54

在编写俄罗斯方块时,我在一个类的内部使用了一个旋转函数。

代码语言:javascript
复制
def rotate(self):
    self.rotation = (self.rotation + 1) % len(self.figures[self.type])

我有一个在矩阵中旋转的数字列表,唯一的事情是在9点之后不要到0,我继续用10。

代码语言:javascript
复制
figures = [
    [[8, 9, 10, 11], [2, 6, 10, 14], [11, 10, 9, 8], [13, 9, 5, 1]], #0
    [[4, 8, 9, 10], [6, 5, 9, 13], [14, 10, 9, 8], [12, 13, 9, 5]],  #1
    [[6, 8, 9, 10], [14, 5, 9, 13], [12, 10, 9, 8], [4, 5, 9, 13]],  #2
    [[5, 6, 10, 9], [5, 6, 10, 9], [5, 6, 10, 9], [5, 6, 10, 9]],    #3
    [[5, 6, 9, 8], [10, 14, 9, 5], [13, 12, 9, 10], [8, 4, 9, 13]],  #4
    [[4, 5, 9, 10], [6, 10, 9, 13], [14, 13, 9, 8], [12, 8, 9, 5]],  #5
    [[5, 8, 9, 10], [5, 10, 9, 13], [13, 10, 9, 8], [8, 13, 9, 5]],  #6
]

因为我有多个数字,所以随机选择了它们,但是你也可以控制它。

代码语言:javascript
复制
self.type = random.randint(0, len(self.figures) - 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63402061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档