



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
1 / 6
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
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.
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.