尝试创建 3x3x3 立方体,但在 OpenGL 中创建了 4x4x4

我正在尝试创建一个 3d rubiks 立方体,但是尺寸与设置的尺寸不一致。当我将尺寸设置为 3 并创建一个 3x3x3 立方体时,我最终创建了一个 4x4x4 立方体。但是,当我将维度设置为 2 时,它会创建一个 3x3x3 多维数据集,而当维度设置为 1 时,会创建一个 1x1x1 多维数据集。有人可以帮忙吗?谢谢!


立方体代码:


#imports

dim = 3

cube = [[['#' 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()


米琪卡哇伊
浏览 143回答 1
1回答

浮云间

它可能看起来那样,因为你的作品是重叠的。你创造你的作品在距离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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python