Tengo un camino formado por una lista de puntos 2D. Quiero convertirlos en una tira de triángulos para renderizar una línea texturizada con un grosor específico (y otras cosas similares). Así que, esencialmente, la lista de puntos 2D debe convertirse en una lista de vértices que especifique el contorno de un polígono que, si se representa, representará la línea. El problema es manejar las uniones de esquina, mitras, gorras, etc. El polígono resultante debe ser "perfecto" en el sentido de que no haya sobregiro, juntas limpias, etc. para que pueda ser extruido o manipulado.¿Cómo puedo renderizar líneas 2D gruesas como polígonos?
¿Hay algún recurso simple que pueda proporcionar información sobre algoritmos, código o más información sobre cómo hacerlo de manera eficiente?
Absolutamente NO deseo una biblioteca de vectores en 2D completa (cairo, antigrain, OpenVG, etc.) con curvas, arcos, guiones y todas las campanas y silbatos. He estado investigando en varios árboles fuente para implementaciones OpenVG y otras cosas para encontrar algo de información, pero todo es terriblemente intrincado.
Definitivamente estoy dispuesto a codificarlo yo mismo, pero hay muchos casos degenerados (segmentos pequeños + anchuras gruesas + esquinas agudas) que crean todo tipo de problemas de unión. Incluso un poco de ayuda me ahorraría horas tratando de lidiar con todos ellos.
EDITAR: Aquí hay un ejemplo de uno de esos casos degenerados que causa fealdad si simplemente fuera de vértice a vértice. Rojo es el camino original. Los bloques de color naranja son rectángulos dibujados en un ancho específico alineado y centrado en cada segmento.
http://www.freeimagehosting.net/uploads/52dc639727.png
He estado queriendo esto también. Lo mezclé en el prototipo con cuadros simples entre los puntos, pero eventualmente tendrá que ser arreglado. Afortunadamente su pregunta dibuja las respuestas correctas. De cualquier manera, vuelve con nosotros y cuéntanos lo que finalmente hiciste. –
En respuesta a su imagen, no divide en dos los ángulos, va a perpendicular a sus líneas. –
Sí, lo sé. Eso es pre-whatever-join-algorithm-gets-applied. Solo estoy ilustrando un caso problemático, no lo que sucede cuando realmente le aplicas algo. –