我正在尝试创建一个 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
提交
取消