1

これは特にPythonのループ構文のエラーであると確信していますが、何が問題なのかを一生理解することはできません。

私は非常に基本的なプログラムのためにPyOpenGLとGLUTを備えたOSXでPythonを使用しています:それは(0,0,0)の周りに3Dグリッドを描くことを目的としています。与えられた標高で2Dグリッドを作成することができました(したがって、y=10にx=-10からx=10まで、およびz=-10からz=10までのグリッドがあります)が、作成できませんy座標を反復処理します。

このスクリーンショットは、私が何を意味するかを示すのに役立つはずです。私の意図するシナリオは、これらのフラットグリッドが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
4

1 に答える 1

2

ループ内で「i」変数をゼロにリセットする必要があるようです。i +=1とj+= 1が十分にインデントされていない可能性もありますが、それは単にコピー/貼り付けの問題である可能性があります。このような問題をデバッグするために、私はしばしばプリントを追加し、コードを可能な限り単純化します。

これは、物を描く代わりにiとjを出力するコードの最小バージョンです。
(以下の「print」はpython 2.xで機能します。Python3を使用している場合は、印刷行に括弧を追加してください)

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


また、例のループでは、「for」ループを使用する方が簡単です。このようなものが機能するはずです:

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


役立つ場合に備えて、Pythonループに関する追加の背景を次に示します。

http://docs.python.org/2/tutorial/controlflow.html
http://wiki.python.org/moin/ForLoop

于 2013-03-26T05:43:39.043 に答える