矩陣旋轉Python

2021-08-18 16:06:22 字數 2331 閱讀 6803

**

# 主要實現兩種方式

# [# [1,2,3], (0,0),(0,1),(0,2),(0,3),(0,4),(0,5) length=6 max_xy=5

# [4,5,6], (1,0),(1,1),(1,2),(1,3),(1,4),(1,5)

# [7,8,9] (2,0),(2,1),(2,2),(2,3),(2,4),(2,5)

# ] (3,0),(3,1),(3,2),(3,3),(3,4),(3,5)

# (4,0),(4,1),(4,2),(4,3),(4,4),(4,5),

# (5,0),(5,1),(5,2),(5,3),(5,4),(5,5),

# 生成矩陣

defger_matrix

(dim: int):

start = 1

while start <= dim * dim:

row =

while len(row) < dim:

start += 1

yield row

##### 1 ####

defger_colmun

(nn: int, dst: list) -> list:

l = len(dst) - 1

while l >= 0:

yield dst[l][nn]

l -= 1

# 順時針旋轉90度後,行列進行對應互換,第一行變成最後一列。。。最後一行變成第一列

defrotate_list

(tar: list) -> list:

if len(tar) == 0:

return

array_1 = len(tar[0])

for ai in range(array_1):

yield list(ger_colmun(ai, tar))

#############

##### 2 #####

# 不建立任何新的container,採用旋轉交換法

defpos_exchange

(dst: list, val: int, max_xy: int, x_last=0, y_last=0, x_origin=0, y_origin=0)-> bool:

start_pos_x, start_pos_y = y_last, abs(x_last - max_xy) # 計算移位到的座標

old, dst[start_pos_x][start_pos_y] = dst[start_pos_x][start_pos_y], val

if start_pos_x == x_origin and start_pos_y == y_origin:

if y_origin + 1 > max_xy - 1 - x_origin: # 本圈結束

return

true

y_origin += 1

start_pos_x, start_pos_y, old = x_origin, y_origin, dst[x_origin][y_origin]

pos_exchange(dst, old, max_xy, x_last=start_pos_x, y_last=start_pos_y, x_origin=x_origin, y_origin=y_origin)

defrotate

(tar: list):

circle = len(tar) // 2

# 計算旋轉圈數

max_xy = len(tar) - 1

# 計算最大x, y 座標

for c in range(circle): # 遍歷交換每一圈

pos_exchange(tar, tar[c][c], max_xy, x_last=c, y_last=c, x_origin=c, y_origin=c)

defpretty_print

(tar: list):

for t in tar:

print(t)

if __name__ == "__main__":

dlist = list(ger_matrix(10))

pretty_print(dlist)

rotate(dlist)

print("##########")

pretty_print(dlist)

# pretty_print(list(rotate_list(dlist)))

實現旋轉90度,稍加改動,可以變換任一 x 90度 的旋轉*

python旋轉 Python實現旋轉矩陣

要求 給乙個n n的陣列,旋轉90度。手動畫個醜圖 image.png 簡單思路 順時針 如圖四個紅框為乙個layer,每次旋轉乙個layer,layer的範圍是 0,len nums 2 在第乙個layer迴圈中,要將四角的元素按一下順序旋轉 0,0 轉到 0,3 轉到 3,3 轉到 3,0 轉到...

矩陣運算 矩陣旋轉

以下不加證明地給出在世界座標系中,以座標點 0,0,0 為原點的旋轉矩陣 包含平移的線性變換稱作仿射變換,3d中的仿射變換不能用 3 x 3 矩陣表達,必須使用4 x 4矩陣 1.繞x座標軸旋轉 1 0 0 0 0 cos a sin a 0 0 sin a cos a 0 0 0 0 1 2.繞y...

旋轉列印矩陣 旋轉儲存矩陣 之字形列印矩陣

題目 輸入乙個矩陣,按照從外向裡以順時針順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 有三問 1 如何實現轉圈列印矩陣?2 如何實現順時針旋轉矩陣?3 如何實現 之 字形列印矩陣?題外話 由於要列印輸出矩陣,從題目可以...