Sto provando a elaborare un algoritmo che determinerà i punti di svolta in una traiettoria di coordinate x/y. Le seguenti figure illustrano cosa intendo: verde indica il punto di partenza e rosso l'ultimo punto della traiettoria (l'intera traiettoria consiste di ~ 1500 punti): calcolare punti di svolta/punti di articolazione in traiettoria (percorso)
Nella figura seguente, sono aggiunti dai mano possibile () svolte globali che un algoritmo potrebbe tornare:
Ovviamente, la vera svolta è sempre discutibile e dipenderà l'angolo che si specifica che deve trovano tra i punti. Inoltre un punto di svolta può essere definito su scala globale (cosa ho cercato di fare con i cerchi neri), ma potrebbe anche essere definito su una scala locale ad alta risoluzione. Sono interessato ai cambiamenti globali (generali) della direzione, ma mi piacerebbe vedere una discussione sui diversi approcci che si potrebbero utilizzare per separare le soluzioni globali e locali.
Quello che ho provato finora: distanza
- calcolare tra i punti successivi
- angolo calcolare tra i punti successivi
- sguardo come i cambiamenti distanza/angolo tra i punti successivi
Purtroppo questo non mi dà risultati robusti. Probabilmente ho calcolato anche la curvatura su più punti, ma è solo un'idea. Apprezzerei davvero qualsiasi algoritmo/idea che potrebbe aiutarmi qui. Il codice può essere in qualsiasi linguaggio di programmazione, matlab o python sono preferiti.
EDIT ecco i dati grezzi (nel caso qualcuno voglia di giocare con lui):
Problema molto interessante, ma non sono sicuro che questo forum sia il posto giusto per chiederlo. Vedo molti modi soggettivi per definire un punto di svolta nella traiettoria, quindi per esempio su quale scala lo vedi. Quando guardi molto da vicino posso vedere molti diversi punti di svolta. Il modo di procedere sarebbe forse una sorta di levigatura dei punti su entrambi i lati di ciascun punto (o semplicemente tracciare una linea usando n punti) e prendere una decisione sull'angolo tra quelle due linee rette. Quindi avresti "solo" due parametri (angolo n e min), nonostante gli algoritmi di raddrizzamento. Forse questo aiuta comunque? – Alex
@Alex Sono consapevole della soggettività di questo problema. Continuo a pensare che questo potrebbe essere un problema di interesse generale e mi piacerebbe vedere la gente discutere i diversi approcci che si potrebbero usare per separare i punti di svolta locali rispetto a quelli globali. – memyself