0% encontró este documento útil (0 votos)
16 vistas5 páginas

A1U3 - Reporte de Código

AAA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas5 páginas

A1U3 - Reporte de Código

AAA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

NOMBRE DE

ACTIVIDAD
A1U3 - Reporte de código
PRESENTA
Axel Nicodemus Olmedo Bautista

MATERI
A
Graficacion

NO DE
CONTROL
225570095

ZIHUATANEJO GUERRERO,

MÉXICO

FECH
A
24/10/2024

Manzana 30, Lote 1, Col. El Limón, C.P. 40880, Zihuatanejo,


Gro.

2
import pygame
from [Link] import *
from [Link] import *
from [Link] import *
import math
vertices = [
[1, -1, 1],
[-1, -1, 1],
[-1, -1, -1],
[1, -1, -1],
[0, 1, 0]
]
edges = [
(0, 1), (1, 2), (2, 3), (3, 0),
]
colors = [
(1, 0, 0),
(0, 1, 0),
(0, 0, 1),
(1, 1, 0),
(1, 0, 1),
(0, 1, 1),
(1, 0.5, 0),
(0.5, 0, 0.5),
]
def draw_pyramid():
glBegin(GL_LINES)
for i, edge in enumerate(edges):
glColor3fv(colors[i % len(colors)])
for vertex in edge:
glVertex3fv(vertices[vertex])
glEnd()
def main():
[Link]()
display = (800, 600)
[Link].set_mode(display, DOUBLEBUF | OPENGL)
gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)
glTranslatef(0.0, 0.0, -5)
while True:
for event in [Link]():
if [Link] == [Link]:
[Link]()
quit()
glRotatef(1, 3, 1, 1
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

3
draw_pyramid()
[Link]()
[Link](10)
main()

4
Desglose del Código:
1. Importaciones:

o pygame, [Link], y [Link] son importados para manejar la ventana, los


eventos y las funciones de renderizado 3D.

o math se importa, aunque no se utiliza en el código, posiblemente se pensó para


futuras modificaciones.

2. Definición de Vértices y Aristas:

o vertices: Define los puntos 3D de la pirámide. Los primeros cuatro vértices


forman la base cuadrada (ubicados en el plano y = -1), y el último vértice [0, 1,
0] representa la punta de la pirámide.

o edges: Describe las conexiones entre los vértices para crear las aristas de la
pirámide, tanto para la base como para los lados que conectan la base con la punta.

3. Colores:

o colors: Una lista de colores RGB (rojo, verde, azul, etc.). Estos se utilizan para
colorear cada arista de la pirámide, alternando los colores para cada línea según la
lista.

4. Función draw_pyramid():

o Se encarga de dibujar las aristas de la pirámide usando GL_LINES, que es un modo


de dibujo de OpenGL para líneas.

o Itera sobre las aristas (edges) y para cada una selecciona un color de colors.

o glVertex3fv se utiliza para especificar las coordenadas de cada vértice de la arista.

5. Función main():

o Inicializa pygame y configura la ventana para el renderizado.

o Utiliza gluPerspective para establecer una perspectiva de 45 grados, con una


proporción de aspecto basada en la resolución de la ventana y un rango de
visualización desde 0.1 hasta 50.0 unidades de distancia.

o glTranslatef mueve la vista hacia atrás en el eje z (-5), para que la pirámide esté
completamente visible.

o En un bucle infinito:

▪ Detecta eventos de pygame para cerrar la ventana si se presiona la X.

5
▪ Aplica una rotación de 1 grado por fotograma sobre un vector (3, 1, 1),
haciendo que la pirámide gire de manera continua.

▪ Limpia la pantalla (glClear) antes de dibujar la pirámide.

▪ Llama a draw_pyramid() para renderizar la pirámide.

▪ Actualiza la pantalla ([Link]()) y espera 10 milisegundos


para controlar la velocidad del bucle.

Explicación de la Visualización y Propósito:


• Visualización Generada:

o El código produce una pirámide de base cuadrada en un entorno 3D, donde las líneas
que forman sus aristas son coloreadas de forma cíclica con diferentes colores de la
lista.

o La pirámide rota continuamente en torno a un eje (definido por los valores 3, 1, 1),
lo que proporciona una visualización dinámica de su forma.

o La rotación permite observar la pirámide desde diferentes ángulos, ayudando a


entender su estructura tridimensional y el efecto de la perspectiva en la
representación gráfica.

• Propósito:

o Este código es útil como una demostración básica de gráficos 3D usando pygame y
OpenGL. Permite entender cómo se definen formas 3D, cómo se aplican
transformaciones (como la rotación) y cómo se visualizan estas en una ventana
gráfica.

o Es especialmente adecuado para fines educativos, como la introducción a conceptos


de renderizado 3D, geometría y el uso de pygame junto con OpenGL para la creación
de gráficos interactivos.

También podría gustarte