Non c'è davvero una soluzione semplice al problema, specialmente con le curve (beziers e spline). Oltre alla complessità del ritaglio poligonale, c'è una notevole sfida nel ricostruire le curve troncate (supponendo che si desideri che il risultato del ritaglio rimanga come beziers e spline e non solo approssimazioni della linea appiattita).
Ho recentemente rilasciato un aggiornamento beta * alla mia libreria di ritaglio di poligoni 'Clipper' che esegue il clipping linea-poligono e linea (dove anche le linee possono essere curve). Tuttavia, mentre la libreria principale è scritta in Delphi, C++ & C#, il nuovo codice beta è finora solo in Delphi che potrebbe non essere di aiuto. Tuttavia se osservate il codice vedrete perché dichiaro che non esiste una soluzione 'semplice'.
- Modifica 15 luglio 2011: Questo 'aggiornamento' mai andato oltre questa versione beta ed è ora semplicemente 'proof-of-concept'. Ora è basato su una vecchia versione della mia libreria Clipper e necessiterebbe di una maggiore riscrittura per essere mantenibile ed estensibile. (A un certo punto io possa rivisitare ma sono attualmente intento a migliorare ulteriormente la libreria di base.) Tuttavia, questo codice Delphi 'proof-of-concept' può essere scaricato here
fonte
2010-10-15 16:41:41
Grazie.Quale metodo hai usato per tagliare le curve? – Buzz
L'approccio che ho preso era inizialmente quello di appiattire le curve (ed etichettare ciascun segmento appiattito) poiché l'algoritmo di ritaglio funziona solo sulle linee. Una volta trovate le intersezioni, i segmenti etichettati vengono utilizzati per identificare i sottosegmenti della curva (l'algoritmo di de Casteljau). Quindi si tratta di riapplicare l'algoritmo di de Casteljau alla curva originale, ma solo alle porzioni della curva che contengono le intersezioni. Ha senso? –
Sì. Ha senso. Grazie! – Buzz