Ho un percorso composto da un elenco di punti 2D. Voglio trasformarle in una striscia di triangoli per rendere una linea strutturata con uno spessore specificato (e altre cose simili). Quindi in sostanza l'elenco di punti 2D deve diventare un elenco di vertici che specificano il contorno di un poligono che, se reso, dovrebbe rendere la linea. Il problema consiste nel gestire i join, le miters, i cappucci ecc. Il poligono risultante deve essere "perfetto" nel senso di non sovrascrivere, pulire join, ecc. In modo che possa essere facilmente estruso o altrimenti utilizzato.Come si restituiscono le linee 2D spesse come poligoni?
Esistono semplici risorse in grado di fornire informazioni dettagliate sull'algoritmo, codice o ulteriori informazioni su come farlo in modo efficiente?
NON voglio assolutamente una libreria vettoriale 2D a tutti gli effetti (cairo, antigrain, OpenVG, ecc.) Con curve, archi, trattini e tutti i campanelli e fischietti. Ho scavato in più alberi sorgente per implementazioni OpenVG e altre cose per trovare qualche intuizione, ma è tutto terribilmente complicato.
Sono decisamente disposto a codificarlo da solo, ma ci sono molti casi degenerati (segmenti piccoli + larghezze spesse + angoli acuti) che creano tutti i tipi di problemi di join. Anche un piccolo aiuto mi avrebbe risparmiato ore di provare a trattare con tutti loro.
EDIT: Ecco un esempio di uno di quei casi degenerati che causano la bruttezza se si dovesse semplicemente passare dal vertice al vertice. Il rosso è il percorso originale I blocchi arancioni sono rettangoli disegnati con una larghezza specificata allineata e centrata su ciascun segmento.
http://www.freeimagehosting.net/uploads/52dc639727.png
Anch'io volevo questo. L'ho ritoccato nel prototipo con semplici scatole tra i punti, ma alla fine dovrà essere corretto. Spero che la tua domanda tragga le giuste risposte. In ogni caso, torna da noi e dicci cosa hai fatto alla fine. –
In risposta alla tua immagine, non stai bisecando gli angoli, stai andando perpendicolare alle tue linee. –
Sì, lo so. Questo è pre-qualunque sia l'algoritmo di join che viene applicato. Sto solo illustrando un caso problematico, non quello che succede quando in realtà si applica qualcosa ad esso. –