250 likes | 496 Views
Cubic A-spline Visualizer : Una herramienta para la visualización de curvas A-spline cúbicas. Wilfredo Morales Lezca * Javier Moreno Alemán * Sofía Behar Jequín * Jorge Estrada Sarlabous **. * University of Havana, CUBA ** ICIMAF, CUBA.
E N D
Cubic A-spline Visualizer: Una herramienta para la visualización de curvas A-spline cúbicas. Wilfredo Morales Lezca* Javier Moreno Alemán* Sofía Behar Jequín * Jorge Estrada Sarlabous** * University of Havana, CUBA ** ICIMAF, CUBA
Antecedentes Desarrollo de bases teóricas de un esquema A-spline cúbico a partir del cual se aporta un conjunto de algoritmos que resuelven eficientemente un conjunto de problemas de CAGD.
Bondades • Interpolación de puntos con vectores tangentes y valores de curvatura prescritos, sin imponer restricciones como las que aparecen en trabajos anteriores ( (Baj01), (Meek03), etc.) • Cada sección del A-spline cuenta con un parámetro libre empleado para interpolar un punto adicional o para controlar la distancia de la sección del • A-spline al segmento que une sus puntos extremos. • Control local del cálculo de los parámetros que determinan cada sección del A-spline lo que aporta una gran flexibilidad para cambiar los datos de entrada y, consecuentemente, actualizar la curva A-spline . • Solución del problema y graficación de su solución secuencialmente en tiempo real.
Inconvenientes • Los puntos sobre la curva son generados sin respetar el orden del recorrido de la curva. • Para generar una buena aproximación del gráfico de la curva es necesario calcular un número muy grande de puntos.
Pendientes • Contar con herramientas apropiadas para el ploteo de curvaturas de las curvas A-spline. • Cálculo de las curvas d-offset asociadas al A-spline • Estudio del fairness.
Objetivos del Trabajo • Elaboración de un nuevo algoritmo para generar puntos sobre la curva A-spline de forma jerárquica. • Resolver los dos inconvenientes ya señalados. • Generar eficientemente una sucesión de aproximaciones lineales a la curva A-spline, al gráfico de su ploteo de curvatura y a la curva d-offset asociada.
Algoritmo de Trabajo Subproblemas • Dados dos puntos del A-spline , generar un punto intermedio sobre la curva. • Dado un punto de la curva, calcular puntos sobre la curva d-offset. • Dado un punto sobre la curva, calcular la curvatura en dicho punto.
Subproblema 1 • Dados dos puntos del A-spline , generar un punto intermedio sobre la curva.
Subproblema 1 • Dados dos puntos del A-spline , generar un punto intermedio sobre la curva.
Subproblema 2 • Dado un punto de la curva, calcular puntos sobre la curva d-offset. } d } d
Subproblema 3 • Dado un punto sobre la curva, calcular la curvatura en dicho punto.
Una herramienta para la visualización de curvas A-spline cúbicas Cubic A-splineVisualizer
Detalles de implementación ¡Cómo se hizo, cómo se está haciendo?
Lenguaje • C# 4.0 • Código robusto • Fácil comprensión • sustentable • extendido • .Net Framework 4.0 • En constante actualización y revisión • Plataforma Mono en los sistemas Unix
Plataforma • Visual Studio 10.0 • Cómodo ambiente de desarrollo con un amplio conjunto de herramientas • Tecnología WPF • Desarrollo de interfaces de interacción en Windows • Se busca una interfaz simple e intuitiva • Amplia infraestructura y potencia gráfica
Características • Los elementos son presentados utilizando Direct3D • Permitiendo descargar algunas de las tareas de gráficos al GPU • Liberando el CPU • Proporcionando una vía para mostrar gráficos complejos, con menos costos en recursos, de memoria y procesamiento.
Módulos ¿Quiénes lo hacen?
UI • Entrada de datos de manera intuitiva • Características • Métodos • Interacción con el usuario • Visualización • Eventos • Lanzado cuando algunos de los valores es modificado, aprovechando el control local de la curva
Computo • En demanda • Mantener el estado actual de la curva A-spline que se está procesando
Graficación • Caja negra • IVisualizer • IEnumerable<Point> GetPoints(AsplineSection a) • ¿Por qué no usar Point[] o LinkedList<Point>? • Lazy • Obtención de puntos de manera jerárquica • Blossom
Demo versión en desarrollo ¿Cómo usarlo?