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