我不确定Python的语法在我的生活中是错误的。在
我在OSX上使用Python和PyOpenGL和GLUT来实现一个非常基本的程序:它的目的是在(0,0,0)周围绘制一个三维网格。我已经成功地在给定的高度生成了二维网格(所以在y=10处有一个网格,从x=-10到x=10,从z=-10到z=10),但是我不能让它迭代y坐标。在
This screenshot should help to show what I mean。我的设想是y=0以上有10个平面网格,下面有10个,形成一个立方体。稍后,我也会把它扩展到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
看起来你只需要在循环中将“i”变量重置为零。也可能是i+=1和j+=1缩进不够,但这可能只是一个复制/粘贴问题。 为了调试这样的问题,我经常添加打印并尽可能简化代码。
这里是您的代码的最小版本,它打印i和j而不是绘制东西。
(下面的“print”适用于python2.x。如果使用python3,请在打印行添加括号)
^{pr2}$另外,对于示例中的循环,使用“for”循环更简单。这样的方法应该有效:
下面是一些关于python循环的额外背景知识,以防有帮助:
http://docs.python.org/2/tutorial/controlflow.html
http://wiki.python.org/moin/ForLoop
相关问题 更多 >
编程相关推荐