Los temas de memoria que se enumeran a continuación son temas en el área de modelamiento
geométrico en dos (2-D) y tres dimensiones (3-D). En general, para el desarrollo de los temas
propuestos se necesita implementar: (1) componentes básicas comunes a todos los programas
que generan triangulaciones (2D o 3D) o mallas mixtas (2D y 3D), (2) algoritmos sobre
polígonos y poliedros no convexos, y (3) algoritmos de refinamiento (agregar puntos y elementos
a una malla), de derefinamiento (eliminar elementos de una malla) y suavizamiento (mover puntos
en una malla). (4) algoritmos de visualizacion. La mayoría de los temas mencionados más abajo
se desarrollan en el contexto de proyectos Fondecyt y, por lo tanto, el alumno puede recibir algo
de financiamiento por su trabajo.
Todos los temas deben ser implementados usando un buen estilo de programación orientada a
objetos (uso de patrones de diseno). El lenguaje estandar será C++, pero tambien puede ser
desarrollado en java cuando son memorias independientes del software ya desarrollado.
1) Visualizador de mallas mixtas 3D (tetraedros, prismas, piramides y cuboides).
Entre las funcionalidades debe incluir visualizar (a) solo la superficie, (b) todos los elementos
(c) los indices de los vertices y elementos, (d) estadisticas de acuerdo a distintos criterios: angulo
diedro, angulo solido, etc, (e) dado un vertice, sus elementos vecinos, dado un arco sus elementos
vecinos, y (f) elementos transparentes. El formato de las mallas sera uno conocido como offset pero
extendido para almacenar elementos. Como referencia mirar los visualizadores actuales GeomView y
TetView. Usar opengl.
2) Extender/mejorar un generador de mallas de superficies en los siguientes aspectos:
Mejorar la implementacion de algoritmos de mejoramiento y refinamiento de mallas,
imlementar un algoritmo para suavizar la superficie de una malla, implementar un algoritmo
de deformacion de la geometria iterativo. El lenguaje usado es c++.
3) Extender/mejorar un programa para animacion de caras. (c++)
4) Desarrollo de una plataforma para la creacion de familias de generadores de mallas. La
plataforma debe estar compuesta de componentes que puedan ser intercambiables para generar
facilmente un nuevo producto. Las componentes pueden modelar procesos, elementos de la malla, o
contenedores. Lenguaje: Java y c++.
5) Re-ingenieria de un software 3D de generacion de mallas. Actualizar el modelo orientado
a objetos disponible, agregar una interfaz grafica, agregar nuevos criterios y regiones de refinamiento, etc.
6) Re-diseñar usando patrones de diseño, re-implementar (c++) y extender un generador de mallas en
tres dimensiones que usa elementos tales como tetraedros, prismas, cuboides y piramides. La estructura
de datos para almacenar los elementos esta basada en octrees. Este tema da para varias memorias.
Algunos de los problemas a abordar son los siguientes:
(a) Diseño global del generador de mallas basado en patrones de diseño
(b) Diseño e implementacion de algoritmos para generar una primera malla a partir de la geometria,
(c) Implementación de un algoritmo para detectar condiciones fractales y generar una partición
apropiada para estas,
(d) Diseño e implementación de algoritmos robustos para reconocer en configuraciones de puntos
los elementos primitivos mencionados anteriormente,
(e) Algoritmos para generar arcos o caras paralelas a la superficie del objetos en una malla inicial
ya generada de elementos primitivos.
7) Aplicaciones en astronomia. Estos van desde el analisis de estructuras geometricas, tanto en dos como
tres dimensiones, el desarrollo de una pagina web que permita accesar de manera simple un software
desarrollado para detectar clusters de galaxias, hasta el desarrollo de
aplicaciones paralelas
para analizar grandes volumenes de datos. Trabajo co-guiado con el Prof. Luis Campusano.