Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在PyOpenGL中嵌套循环显然没有循环_Python_Opengl_Loops_Pyopengl - Fatal编程技术网

Python 在PyOpenGL中嵌套循环显然没有循环

Python 在PyOpenGL中嵌套循环显然没有循环,python,opengl,loops,pyopengl,Python,Opengl,Loops,Pyopengl,我很确定这就是我在Python循环语法中的错误,但我一辈子都搞不清楚到底出了什么问题 我正在OSX上使用Python和PyOpenGL以及GLUT来实现一个非常基本的程序:它旨在围绕(0,0,0)绘制一个3D网格。我已经设法在给定的高程上生成了二维网格(因此在y=10处有一个网格,从x=-10到x=10,从z=-10到z=10),但我无法使它在y坐标中迭代 。我的设想是,在y=0上方和下方各有十个平面网格,形成一个立方体。稍后,我也会将其扩展到y轴上的直线,但我以前已经半实现了这一点(与我现在遇

我很确定这就是我在Python循环语法中的错误,但我一辈子都搞不清楚到底出了什么问题

我正在OSX上使用Python和PyOpenGL以及GLUT来实现一个非常基本的程序:它旨在围绕(0,0,0)绘制一个3D网格。我已经设法在给定的高程上生成了二维网格(因此在y=10处有一个网格,从x=-10到x=10,从z=-10到z=10),但我无法使它在y坐标中迭代

。我的设想是,在y=0上方和下方各有十个平面网格,形成一个立方体。稍后,我也会将其扩展到y轴上的直线,但我以前已经半实现了这一点(与我现在遇到的问题相同),所以没什么大不了的

有人能告诉我我的代码有什么问题吗?这似乎是一个相当简单的问题,但我已经在这上面浪费了几个小时,非常感谢您的帮助

以下是一些免责声明:

我知道GLUT是一种古老的技术,并且大多数代码都不推荐使用,但是这个项目并不是这样的

在某个时候,我需要遍历并更改z坐标和x坐标中的“-10到10”常数,但是一旦我让y坐标工作起来,这个方法应该很简单

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

grid_range = 10

def DrawGLScene( ):

    i = 0
    j = 0
    fl_range = float(grid_range)

    while (j <= (grid_range*2) ): 
        while (i <= (grid_range*2) ):
            # x grid
            glColor3f( 0.0, 1.0, 0.0 )
            glBegin( GL_LINES )
            glVertex3f( grid_range - i, grid_range - j, -10 )
            glVertex3f( grid_range - i, grid_range - j, 10 )
            glEnd( )

            # z grid
            glColor3f( 0.0, 0.0, 1.0 )
            glBegin( GL_LINES )
            glVertex3f( -10, grid_range - j, grid_range - i )
            glVertex3f( 10, grid_range - j, grid_range - i )
            glEnd( )

        i += 1
    j += 1
从OpenGL.GL导入*
从OpenGL.GLUT导入*
从OpenGL.GLU导入*
网格_范围=10
def DrawGLScene():
i=0
j=0
fl_范围=浮动(网格_范围)

虽然(j看起来您只需要在循环中将“i”变量重置为零。也有可能您的i+=1和j+=1缩进不够,但这可能只是一个复制/粘贴问题。 为了调试这样的问题,我经常添加打印并尽可能简化代码。

这是您的代码的最低版本,它打印i和j而不是绘制东西。
(下面的“打印”适用于Python2.x。如果您使用的是Python3,请在打印行中添加括号)


以下是一些关于python循环的额外背景知识,以防有所帮助:



第一行马上就解决了这个问题。谢谢!我在“j+=1”之后添加了“I=0”,现在就完美了。我知道我遗漏了一些基本的东西。还感谢Python循环文档,因为它们在某些时候可能会有用。太好了!很高兴您能使用它-从代码中获取图形输出总是很有趣的
grid_range = 10

i = 0 
j = 0 

while (j <= (grid_range * 2)):

    # Reset i to 0 after completing each loop below.
    i = 0 

    while (i <= (grid_range * 2)):

        # OpenGL calls go here.

        print j, i 

        i += 1
    j += 1
grid_range = 10

for j in range(grid_range * 2 + 1):

    for i in range(grid_range * 2 + 1):

        # OpenGL calls go here.

        print j, i