我正在嘗試創建一個 3d rubiks 立方體,但是尺寸與設置的尺寸不一致。當我將尺寸設置為 3 并創建一個 3x3x3 立方體時,我最終創建了一個 4x4x4 立方體。但是,當我將維度設置為 2 時,它會創建一個 3x3x3 多維數據集,而當維度設置為 1 時,會創建一個 1x1x1 多維數據集。有人可以幫忙嗎?謝謝!立方體代碼:#importsdim = 3cube = [[['#' for c in range(dim)] for c in range(dim)] for r in range(dim)]for i in range(dim): for j in range(dim): for k in range(dim): print(cube[i][j][k], end='') print() print()for i in range(dim): for j in range(dim): for k in range(dim): scale = 0.5 cube[i][j][k] = Piece(i * scale, j * scale, k * scale, scale)def Cube(): for i in range(dim): for j in range(dim): for k in range(dim): p = cube[i][j][k] p.draw()def main(): pygame.init() display = (1200, 1000) pygame.display.set_mode(display, DOUBLEBUF | OPENGL) gluPerspective(45, (display[0] / display[1]), 0.1, 50) glClearColor(0.6, 0.6, 0.6, 0) glTranslatef(0.0, 0.0, -5) glRotatef(45, 1, 1, 0) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) Cube() pygame.display.flip() pygame.time.wait(10)main()
1 回答

浮云間
TA貢獻1829條經驗 獲得超4個贊
它可能看起來那樣,因為你的作品是重疊的。
你創造你的作品在距離scale。如果我們在一維中可視化,我們得到(s代表scale):
o o o
`-- s --′ `-- s --′
pos - len碎片在和之間延伸pos + len。你設置len = scale。因此,你得到的是:
---------o---------
---------o--------- ---------o----------
`-- s --′ `-- s --′
為了解決這個問題,您應該指定一個為間距一半的長度。所以,要么:
cube[i][j][k] = Piece(2 * i * scale, 2 * j * scale, 2 * k * scale, scale)
要么
cube[i][j][k] = Piece(i * scale, j * scale, k * scale, 0.5 * scale)
添加回答
舉報
0/150
提交
取消