Senza avere il tempo di provare in realtà questo, ho potuto immagine qualcosa di simile:
- iterare tutte le linee e calcolare le piste.
- Ordinare le linee in base alle loro pendenze
- Se due linee hanno una pendenza approssimativamente simile, esse sono parallele o la stessa linea con uno spazio vuoto (ad esempio le linee quasi verticali a sinistra). Per capire quale, calcolare dove intercetteranno l'asse x o y. Se intercettano nello stesso punto, sono la stessa linea e devono essere uniti in un'unica riga. In caso contrario, inserirli in una serie di linee (approssimativamente) parallele.
- Confrontare ogni serie di linee parallele l'una con l'altra e calcolare se si intersecano (possibilmente fuori dallo schermo).
- Applicare un criterio dipendente dall'applicazione per scegliere il migliore.
Il tempo di esecuzione dipende molto dal numero di linee rilevate e dal numero di serie di linee parallele. Potresti migliorare un po 'considerando solo le linee con una lunghezza minima, giocando con la soglia per le quali le linee sono considerate parallele, ecc.
fonte
2014-06-18 20:37:36
hai bisogno di definire "migliore". È più grande? Se sì, perimetrale o area? È più delineato? ho le più piccole lacune ect. – Hammer
Una buona domanda costruttiva, ma non ne ho idea :( –
Buona domanda, sarei molto interessato a una risposta! – tim