Proyecto 1 - Facultad de Ciencias - Universidad Central de Venezuela

Anuncio
UNIVERSIDAD CENTRAL DE VENEZUELA
FACULTAD DE CIENCIAS
ESCUELA DE COMPUTACIÓN
ALGORITMOS Y ESTRUCTURAS DE DATOS
Proyecto 1: Atlas de Texturas
Una textura (en el área de computación gráfica) es una imagen del tipo bitmap (una imagen
en mapa de bits) utilizada para cubrir la superficie de un objeto virtual, ya sea tridimensional o
bidimensional. Un objeto virtual puede tener asociado varias texturas. Por ejemplo, para un avatar,
podemos tener la textura de la cara, el cuerpo, las piernas, pies, cabello, etc.
Por comodidad, se suelen colocar todas las texturas de un mismo objeto en una sola textura (textura
atlas). El objetivo de utilizar la textura atlas es simplificar el número de objetos de textura a
manipular. Simplemente con cargar una imagen estaremos cargando todas las texturas de un objeto
complejo.
Ejemplo de Textura atlas
Su tarea Consiste en lo siguiente: dado un conjunto de imágenes que representan texturas,
determinar la textura atlas más pequeña que incluya a todas las texturas. La textura atlas más
pequeña es la que tiene la menor cantidad de píxeles, y que pueda almacenar todas las texturas.
Entrada:
La primera línea de entrada será un entero N representando la cantidad de imágenes 1 ≤ N ≤ 32.
Luego seguirán N líneas, cada una indicando el ancho y el alto de la imagen, seguido de un carácter
C que identifica a la imagen unívocamente. Asuma que 1 ≤ ancho, alto ≤ 16, mientras que C puede
ser cualquier carácter ASCII comprendido en A-Z y ‘0’-‘9’.
Salida:
La Primera línea de salida consistirá en 2 enteros separados por un espacio en blanco, que indican el
ancho y alto de la textura atlas resultante, luego debe imprimir una matriz de caracteres
representando el estado final de dicha textura. Cada celda de la matriz contiene el identificador C de
la textura correspondiente, o bien el carácter # que constituye un pixel no utilizado por ninguna
textura (Ver ejemplos). En caso de existir varias soluciones óptimas (con la misma cantidad de
píxeles de la textura atlas como por ejemplo 10x2 o 4x5, o que las texturas se puedan ubicar de
manera distinta dentro de la textura atlas) basta con imprimir cualquiera de las soluciones óptimas.
Ejemplo: A continuación un par de casos de pruebas.
Entrada
4
22A
22B
14C
14D
Salida
44
AACD
AACD
BBCD
BBCD
Entrada
2
421
112
Salida
52
11112
1111#
Consideraciones:
• El programa debe ser realizado en C++ y empleando esquemas de backtracking.
• Si existen varias soluciones óptimas, imprimir cualquiera.
• Las texturas pueden ser rotadas 90 grados para buscar su colocación en el atlas. Por ejemplo, una
textura de 5x2 puede ser colocada dentro del atlas en un espacio de 2x5 si lo amerita.
• Solamente se requiere la “Salida” del problema en el formato indicado. Cualquier otra
información adicional se considerará como erróneo la solución planteada.
• Debe emplear Programación Orientada a Objetos en su programa.
• El proyecto deberá ser realizado de forma individual.
• El código fuente debe estar intradocumentado adecuadamente.
• Será compilado y evaluado en el compilador g++ (Linux). Si el proyecto no compila no será
corregido.
• Se debe entregar un informe de como máximo 3 páginas en .PDF que contenga: planteamiento del
problema, análisis, explicación de la solución, algoritmo y limitaciones del sistema. El informe
tiene un valor de 5/20 puntos del proyecto.
• La revisión del proyecto no es obligatoria, únicamente para aquellas personas que la deseen o sea
solicitado por el grupo docente.
• El proyecto debe entregarse a más tardar el día 15 de Enero de 2014 a través de la página
www.ciens.ucv.ve/portalasig. Se habilitará la manera de cargar el proyecto dentro de la plataforma
del portal. Después del 15 de Enero, el sistema no permitirá la entrega de proyectos.
• No se aceptará el proyecto después del 15 de Enero a las 11:59pm, y se considerará como no
entregado.
• Las copias entre proyectos tendrán una calificación de 0 puntos, además de una sanción para todos
los involucrados.
Descargar