为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2022-03-09 21:02:56
我正在尝试创建一个 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)

//img1.sycdn.imooc.com//6228a5a10001ec2002400211.jpg

查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信