顺时针或逆时针旋转矩阵X度的函数



我试图写一个函数,rotateByX,它接受两个参数,一个4x4矩阵和一个表示旋转矩阵度的数字。度是90度、180度、27度、360度……等等......如果输入的度数为正,则矩阵顺时针向右旋转。如果它是负的(例如-90,-180…),则矩阵逆时针向左旋转。我能够解决一个类似的问题,我只需要顺时针旋转90度。我在这里的代码中使用了这个函数,并创建了另一个函数,将逆时针旋转90度。因此,我使用这两个函数旋转矩阵,根据度的输入。

我的代码:

def rotate90_Counter(m):
return [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
def rotateByX(m,X):
rotations = (X//90)%4
if X >= 0:
for p in range(rotations):
m= rotate90_clockwise(m)

elif X < 0:
for s in range(rotations):
m= rotate_90_Counter(m)

return m

m = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
rotateByX(m, -90) 

当前仅当输入度X为正数时才有效。所以90、180、270……它旋转得很漂亮。但是对于负X,它向右旋转(顺时针)而不是向左。

rotateByX计算一个数字rotations,该数字为顺时针旋转90度的次数,以实现顺时针旋转X度(等于逆时针旋转-X度)

所以总是顺时针旋转rotations次。永远不要逆时针旋转。删除if X >= 0/elif X < 0,X的相关信息已经包含在rotations中。

def rotateByX(m, X):
rotations = (X // 90) % 4
for p in range(rotations):
m = rotate90_clockwise(m)

return m

最新更新