Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Iluminar Polígonos en Visual Studio Code - Prof. Clemente Torres, Guías, Proyectos, Investigaciones de Computación Gráfica y Animación

El proceso de desarrollo de un proyecto en visual studio code que utiliza la biblioteca pillow para manipular imágenes y aplicar sombreado a polígonos. Se explica cómo importar las clases necesarias, organizar el código y utilizar la función drawshadedtriangle para descomponer una figura en triángulos y aplicar sombreado utilizando un centroide.

Tipo: Guías, Proyectos, Investigaciones

2022/2023

A la venta desde 16/06/2024

mayra-mendez-17
mayra-mendez-17 🇲🇽

26 documentos

1 / 7

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TECNOLÓGICO NACIONAL DE MÉXICO
Instituto Tecnológico de Ensenada
Graficación
Nombre: Mayra Dayana Méndez Robles.
No. Control: 21760616.
Profesor: Eddie Helbert Clemente Torres.
Tema: Iluminar Polígonos.
Fecha: 15 de septiembre de 2023
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Iluminar Polígonos en Visual Studio Code - Prof. Clemente Torres y más Guías, Proyectos, Investigaciones en PDF de Computación Gráfica y Animación solo en Docsity!

TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico de Ensenada

Graficación

Nombre: Mayra Dayana Méndez Robles.

No. Control: 21760616.

Profesor: Eddie Helbert Clemente Torres.

Tema: Iluminar Polígonos.

Fecha: 15 de septiembre de 2023

Introducción

En el proceso de desarrollo de nuestro proyecto en el entorno de programación Visual Studio Code, hemos realizado una serie de acciones esenciales. En primer lugar, hemos importado la biblioteca Pillow y la hemos renombrado como PIL, lo que nos permitirá trabajar de manera más efectiva con imágenes en nuestras prácticas. Además de Pillow, hemos importado específicamente las clases Image e ImageDraw de esta biblioteca, elementos cruciales para la manipulación de las imágenes generadas por nuestro código. Adicionalmente, hemos incorporado otras bibliotecas necesarias para nuestro proyecto. Primero, hemos importado la biblioteca math, que es estándar en Python. Luego, hemos agregado la importación de la biblioteca numpy para realizar operaciones numéricas más avanzadas. Para mantener un código organizado y funcional, hemos reunido partes de nuestro código anterior en un solo script, lo que nos permite importar fácilmente las funciones necesarias y mantener la continuidad de nuestro desarrollo actual.

Desarrollo

Para comenzar, se ha importado la librería Pillow por lo que se ha renombrado como PIL para facilitar su uso en el código. Esta biblioteca es esencial para manipular imágenes en nuestras prácticas. Además de Pillow, se ha importado específicamente las clases Image e ImageDraw de esta biblioteca, las cuales son cruciales para trabajar con las imágenes generadas a través de nuestro código. También se han importado las librerías math y la librería numpy para realizar operaciones numéricas más avanzadas. Figura 1. Importación de librerías En la primera función drawShadedTriangle, se reciben varios parámetros, incluyendo P0, P1 , P2, color, y canvas. Esta función descompone una figura en triángulos y luego los ilumina mediante un degradado utilizando un punto central ( centroide ). En la primera sección del código, se inicializan las variables h0, h1, y h2 con valores predeterminados. Estos valores son (1, 0, 0), lo

En las líneas siguientes, se identifican los bordes más cortos mediante la concatenación de listas. Esto implica que se agrupan los puntos de los bordes cortos en listas para facilitar su manejo y procesamiento posterior. Figura 4. Interpolación de lados cortos. Para identificar los bordes más cortos en los lados derecho e izquierdo del triángulo, se efectúa una comparación de las coordenadas x de los puntos medios entre los bordes cortos. Estos cálculos se basan en el uso de la función floor , que redondea hacia abajo los valores de los puntos medios de cada lista de puntos medios interpolados que se generaron previamente en la sección anterior del código. Figura 5. Determinación de izquierdos y derechos. A través de un primer ciclo que barre horizontalmente desde y0 hasta y2 - 1 , se lleva a cabo un proceso de redondeo para las coordenadas x en el primer lado izquierdo y, de manera similar, para el lado derecho. De esta manera, se determinan los valores de h mediante una interpolación de los valores de hl y hr.

Para realizar el sombreado, se utiliza la intensidad calculada previamente en h segment. Esta intensidad proviene de la interpolación de los valores de h en el lado izquierdo y derecho en los rangos xl y xr. En última instancia, cada píxel dentro del rango establecido calcula un color sombreado multiplicando el color original por el valor de la intensidad de sombreado correspondiente al píxel. El resultado de esta multiplicación se almacena en shaded_color. Finalmente, se llama a la función que permite el dibujo de los píxeles en las coordenadas (x, y) en el lienzo correspondiente. Figura 6. Operación matemática para sombreado. En la parte final del código, se establecen los tamaños del lienzo de manera que puedan ser especificados como parámetros cuando se llama al lienzo (canvas). También se crea un conjunto de puntos que servirán como vértices iniciales, representados por coordenadas ‘ x’ y ‘ y’. Además, se define el color de línea que se utilizará en la figura. Para este bloque de código, es necesario calcular un centroide que debe mantenerse en un punto fijo en la figura. Para lograrlo, se utilizan los puntos en la lista puntos, y se calcula el promedio de sus coordenadas tanto en el eje x como en el eje y. Ambos promedios se almacenan en la variable puntoc , que representa la coordenada central de la figura. Luego, se utiliza un ciclo while que itera tantas veces como la cantidad de puntos en la figura. En cada iteración, se llama a la función drawShadedTriangle para que pinte el sombreado en forma de triángulos en la figura. Los parámetros que se pasan a esta función son los vértices del triángulo, el color y el lienzo (canvas) en sí mismo. De esta manera, se repite esta acción para cada fracción de la figura, pintando la figura en secciones de triángulos.

Conclusión

En resumen, hemos llevado a cabo una serie de acciones importantes en nuestro proyecto de desarrollo en Visual Studio Code. Hemos configurado las bibliotecas necesarias, importado clases cruciales y organizado nuestro código de manera eficiente. Además, hemos trabajado en la implementación de una función llamada drawShadedTriangle , que descompone una figura en triángulos y aplica sombreado utilizando un centroide. Esta función se basa en el cálculo de pesos de iluminación y la interpolación de valores para lograr un efecto de sombreado deseado. En la parte final del código, hemos definido el tamaño del lienzo y el conjunto de puntos que forman los vértices iniciales de la figura, además de especificar el color de línea. Luego, mediante un ciclo, hemos aplicado la función drawShadedTriangle repetidamente para iluminar la figura en secciones de triángulos. En conjunto, estas acciones nos permiten avanzar en nuestro proyecto y alcanzar los resultados deseados.