Eu tenho alguns arquivos de mapa que consistem em 'polilinhas' (cada linha é apenas uma lista de vértices) representando túneis e quero tentar encontrar a 'linha central' do túnel (mostrada, aproximadamente, em vermelho abaixo).
Eu tive algum sucesso no passado usando a triangulação de Delaunay, mas gostaria de evitar esse método, pois ele não permite (em geral) a modificação fácil / frequente dos dados do meu mapa.
Alguma idéia de como eu posso fazer isso?
Estou trabalhando em C ++ bastante bruto.
Respostas:
Você desenhou uma boa aproximação à Transformação do eixo medial. A triangulação de Delaunay realmente oferece uma boa abordagem. (O principal desafio é que partes do MAT são parábolas, não apenas segmentos de linha.)
Encontrei referências ao código de trabalho (geralmente em C / C ++, lembro-me) na literatura acadêmica. Faça uma pesquisa no Google Scholar e procure por documentos mais antigos (os mais recentes parecem se concentrar nos cálculos 3D).
fonte
Pode valer a pena olhar para "esqueletos poligonais".
Há alguns exemplos de fontes C ++ em http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Straight_skeleton_2/Chapter_main.html
fonte