По заданию, нужно написать код для вращающейся пирамиды с квадратным (треугольным) основанием.
Написал код по аналогии с примером и он не работает. В учебном примере кода, с кубом, работает, а мой, аналогичный, пирамида - не работает. Помогите разобраться. Пайтон версия 3.8.8
Код примера, куб, который работает:
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
def Cube(vertices, edges):
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(vertices[vertex])
glEnd()
#<img src="http://grafika.me/files/les_screens...2-24-12-22-21-_online-video-cutter.com__0.gif" width="650" height="488" alt="" title="" />
def main():
vertices = (
(1.0, -1.0, -1.0),
(1.0, 1.0, -1.0),
(-1.0, 1.0, -1.0),
(-1.0, -1.0, -1.0),
(1.0, - 1.0, 1.0),
(1.0, 1.0, 1.0),
(-1.0, -1.0, 1.0),
(-1.0, 1.0, 1.0)
)
edges = (
(0, 1),
(0, 3),
(0, 4),
(2, 1),
(2, 3),
(2, 7),
(6, 3),
(6, 4),
(6, 7),
(5, 1),
(5, 4),
(5, 7)
)
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, -1.0, -10)
glRotatef(20, 10, 0, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(1, 0, 1, 0)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube(vertices, edges)
pygame.display.flip()
pygame.time.wait(10)
main()
Код пирамиды, мой, который не работает:
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
def Pyramid(vertices, edges):
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(vertices[vertex])
glEnd()
def main():
vertices = (
(1.0, 0.0, 1.0),
(1.0, 0.0, -1.0),
(-1.0, 0.0, -1.0),
(-1.0, 0.0, 1.0),
(0.0, 1.0, 0.0)
)
edges = (
(0, 1),
(0, 2),
(0, 3),
(0, 4),
(1, 2),
(1, 4),
(3, 2),
(3, 4)
)
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, -1.0, -10)
glRotatef(20, 10, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(0, 1, 0)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Pyramid(vertices, edges)
pygame.display.flip()
pygame.time.wait(10)
main()
Помогите разобраться начинающему
Написал код по аналогии с примером и он не работает. В учебном примере кода, с кубом, работает, а мой, аналогичный, пирамида - не работает. Помогите разобраться. Пайтон версия 3.8.8
Код примера, куб, который работает:
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
def Cube(vertices, edges):
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(vertices[vertex])
glEnd()
#<img src="http://grafika.me/files/les_screens...2-24-12-22-21-_online-video-cutter.com__0.gif" width="650" height="488" alt="" title="" />
def main():
vertices = (
(1.0, -1.0, -1.0),
(1.0, 1.0, -1.0),
(-1.0, 1.0, -1.0),
(-1.0, -1.0, -1.0),
(1.0, - 1.0, 1.0),
(1.0, 1.0, 1.0),
(-1.0, -1.0, 1.0),
(-1.0, 1.0, 1.0)
)
edges = (
(0, 1),
(0, 3),
(0, 4),
(2, 1),
(2, 3),
(2, 7),
(6, 3),
(6, 4),
(6, 7),
(5, 1),
(5, 4),
(5, 7)
)
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, -1.0, -10)
glRotatef(20, 10, 0, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(1, 0, 1, 0)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube(vertices, edges)
pygame.display.flip()
pygame.time.wait(10)
main()
Код пирамиды, мой, который не работает:
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
def Pyramid(vertices, edges):
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(vertices[vertex])
glEnd()
def main():
vertices = (
(1.0, 0.0, 1.0),
(1.0, 0.0, -1.0),
(-1.0, 0.0, -1.0),
(-1.0, 0.0, 1.0),
(0.0, 1.0, 0.0)
)
edges = (
(0, 1),
(0, 2),
(0, 3),
(0, 4),
(1, 2),
(1, 4),
(3, 2),
(3, 4)
)
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, -1.0, -10)
glRotatef(20, 10, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glRotatef(0, 1, 0)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Pyramid(vertices, edges)
pygame.display.flip()
pygame.time.wait(10)
main()
Помогите разобраться начинающему