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

TECNM - Transformación Geométrica en Python, Guías, Proyectos, Investigaciones de Computación Gráfica y Animación

Práctica de laboratorio donde se realiza un proyecto en Python utilizando la librería Pillow para el procesamiento de imágenes, logrando dibujar figuras tridimensionales en un canva plasmando cambios en la posición, orientación y escala de la misma.

Tipo: Guías, Proyectos, Investigaciones

2022/2023

A la venta desde 16/06/2024

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

26 documentos

1 / 6

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: Transformación Geométrica.
Fecha: 25 de octubre del 2023
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga TECNM - Transformación Geométrica en Python 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: Transformación Geométrica.

Fecha: 25 de octubre del 2023

Introducción

La transformación geométrica de un objeto es esencial en el campo de la computación gráfica para simular cambios en la posición, orientación y escala de un objeto en un entorno tridimensional. En esta práctica, el objetivo es proyectar el cambio de punto de vista mediante traslación y rotación de la cámara es crucial para crear representaciones visuales realistas. En Python, se pueden emplear diversas bibliotecas para llevar a cabo estas transformaciones. En este caso, utilizaremos las librerías PIL ( Pillow ) para manipular imágenes , numpy para operaciones numéricas y math para cálculos matemáticos. Además, se hará uso de una librería personalizada llamada graflib para simplificar el proceso de aplicación de transformaciones geométricas y el manejo de canvas.

Desarrollo

Para comenzar, es necesario importar las librerías necesarias para lograr la transformación geométrica. En este caso serían las siguientes: Figura 1. Importación de librerías. El siguiente paso es definir una función que ayudará a que nuestra figura pueda realizar escala de un punto en tres dimensiones , obteniendo matrices de transformación. Esta función tiene por nombre scaleP3D y se muestra su estructura en la siguiente figura: Figura 2. Función scaleP3D para escalar un punto. También necesitaremos otras funciones que nos ayudarán a rotar nuestra figura en los ejes (x, y, z). Estas funciones tendrán como parámetro un punto y alpha.

Una vez concluida nuestra secuencia de funciones, definiremos la clase ‘ Cubo’ la cual corresponde a la figura tridimensional que queremos proyectar en nuestro canvas. Primero inicializamos los atributos de nuestro cubo, los cuales son el nombre, las coordenadas de los vértices y el color con el que se delineara cada rectángulo dentro de este. Figura 5. Atributos del cubo y los triángulos que lo conforman. Dentro de nuestra clase se definirán algunos métodos que aplicarán transformaciones a los vértices del cubo, como traslación, rotación en los ejes (x, y, z) y la escala. Figura 6. Métodos para aplicar las transformaciones a nuestro cubo.

Concluyendo nuestra clase, fuera de esta se definirán las propiedades de nuestro canvas, o imagen, como se muestra en la siguiente figura: Figura 7. Propiedades del canvas. Por último, llamaremos a la clase cubo múltiples veces dándole diferentes valores a las rotaciones y translaciones, para después invocarlos y renderizarlo en nuestro lienzo usando la función renderObject que proviene de nuestra librería graflib. Figura 8. Función para renderizar y proyectar cubos en nuestro canvas. Como conclusión, obtuvimos el siguiente resultado en nuestro canvas: Figura 9. Resultado del cubo en diferentes perspectivas.