Всего на сайте:
282 тыс. 988 статей

Главная | Информатика

Пример 3., fromOpenGL.GL import* fromOpenGL.GLU import* fromOpenGL.GLUT import*..  Просмотрен 43

fromOpenGL.GL import*

fromOpenGL.GLU import*

fromOpenGL.GLUT import*

importsys

globalxrot # величина вращения по оси X

globalyrot # величина вращения по оси Y

globalambient # рассеянное освещение

globalgreencolor # цвет ёлки

globaltreecolor # цвет ствола

globallightpos # положение источника света

definit():

globalxrot # величина вращения по оси X

globalyrot # величина вращения по оси У

globalambient

globalgreencolor

globaltreecolor

globallightpos

xrot = 0.0

yrot = 0.0

ambient = (1.0, 1.0, 1.0, 1) # цвет и яркость

greencolor = (0.2, 0.8, 0.0, 0.8)

treecolor = (0.9, 0.6, 0.3, 0.8)

lightpos = (1.0, 1.0, 1.0)

glClearColor(0.65, 0.0, 1.0, 1.0) # фон

gluOrtho2D(-1.0, 1.0, -1.0, 1.0) # границы

glRotatef(-90, 1.0, 0.0, 0.0) # смещение по X

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient) # освещение

glEnable(GL_LIGHTING)

glEnable(GL_LIGHT0)

glLightfv(GL_LIGHT0, GL_POSITION, lightpos) # положение света

defspecialkeys(key, x, y): # отработка нажатий клавиш

globalxrot

globalyrot

xrot -= 2.0 * (key==GLUT_KEY_UP) # уменьшение угла вращения по X

xrot += 2.0 * (key == GLUT_KEY_DOWN) # увеличение угла по X

yrot -= 2.0 * (key == GLUT_KEY_LEFT) # уменьшение угла по Y

yrot += 2.0 * (key == GLUT_KEY_RIGHT) # увеличение угла по Y

glutPostRedisplay()

defdraw(): # перерисовка

globalxrot

globalyrot

globallightpos

globalgreencolor

globaltreecolor

glClear(GL_COLOR_BUFFER_BIT) # очистка экрана

glPushMatrix() # сохранение положения обзора

glRotatef(xrot, 1.0, 0.0, 0.0) # вращение по Х на xrot

glRotatef(yrot, 0.0, 1.0, 0.0) # вращение по У на xrot

glLightfv(GL_LIGHT0, GL_POSITION, lightpos) # вращение ист-ка света

# ствол

glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, treecolor)

glTranslatef(0.0, 0.0, -0.7) #сдвиг на -0.7

glutSolidCylinder(0.1, 0.2, 20, 20) # цилиндр

# Ёлка

glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, greencolor)

glTranslatef(0.0, 0.0, 0.2) #сдвиг 0.2

glutSolidCone(0.5, 0.5, 20, 20) # конус

glTranslatef(0.0, 0.0, 0.3)

glutSolidCone(0.4, 0.4, 20, 20) # конус

glTranslatef(0.0, 0.0, 0.3)

glutSolidCone(0.3, 0.3, 20, 20) # конус

glPopMatrix() # положение обзора

glutSwapBuffers() # на экран

# вывод окна с заданными параметрами и названием

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB)

glutInitWindowSize(300, 300)

glutInitWindowPosition(50, 50)

glutInit(sys.argv)

glutCreateWindow(b"It's a Christmas Tree!")

glutDisplayFunc(draw) # вызов перерисовки

glutSpecialFunc(specialkeys) # вызов отработки клавиш

init()

glutMainLoop()

Результат работы программы:

Предыдущая статья:Пример 2., fromOpenGL.GL import* fromOpenGL.GLU import* importpygame frompygam.. Следующая статья:Преобразование изображения куба
page speed (0.0451 sec, direct)