Page 208 - 6734
P. 208

def on_draw(self): # під час необхідності
           перерисування

           glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) #
           очистити буфери кольору і глибини
                   glMatrixMode(GL_MODELVIEW) # режим матриці
           вигляду
                   glPushMatrix() # запам'ятати глобальну
           систему координат
                   glTranslatef(0, 0, -600) # перемістити
           систему координат вздовж Z
                   self.label.text='ax=%d ay=%d'%(self.x,self.y)
           # змінити надпис
                   self.label.draw() # нарисувати надпис
                   glRotatef(self.x, 1, 0, 0) # повернути в
           новій системі координат навколо осі X
                   glRotatef(self.y, 0, 1, 0) # повернути в
           новій системі координат навколо осі Y
                   self.drawAxes() # нарисувати осі
                   self.drawObject() # нарисувати об'єкт
                   glPopMatrix() # відновити глобальну систему
           координат

               def drawAxes(self): # рисує осі X,Y,Z
                   glBegin(GL_LINES) # розмежовує вершини
           примітива (лінії)
                   for r,g,b,x,y,z in [(1,0,0,1000,0,0),
           (0,1,0,0,1000,0), (0,0,1,0,0,1000)]:
                       glColor3f(r, g, b) # колір наступної
           вершини
                       glVertex3f(-x, -y, -z) # перша вершина
                       glVertex3f(x, y, z) # друга вершина
                   glEnd() # завершити список вершин примітива

                                         207
   203   204   205   206   207   208   209   210   211   212   213