Trova la linea retta più lunga tra due punti sulla superficie del poligono


8

La mia forma è un poligono leggermente concavo e mi piacerebbe conoscere il diametro massimo. Immagino una linea retta tra due punti sulla superficie del poligono, in modo tale che la linea non passi al di fuori del poligono.

Esiste un algoritmo generale per questo?

Nel mio caso sono interessato al 2D. Le mie forme sono tumori nelle immagini mediche. Quindi possiamo anche assumere: 1 il centroide è sempre all'interno del poligono. 2 un'alta densità di vertici, ovvero il vertice successivo è sempre vicino al precedente.


1
Ci sono pinze rotanti ma funziona solo per poligoni convessi. Altrimenti puoi usarlo come base per una soluzione di forza bruta.
maniaco del cricchetto,

3
Bene, se O (n ^ 2) non è un problema, prova tutte le coppie di punti
joojaa,

2
In realtà è un po 'più coinvolto: immagina 2 stanze collegate da uno stretto corridoio. Il diametro più grande finirà sui muri nelle diverse stanze e non finirà in nessun punto.
maniaco del cricchetto,

1
Stai cercando un algoritmo che funzioni nel caso più generale o può essere limitato, ad esempio, al caso 2D? Questo potrebbe essere più facile da risolvere con alcune ulteriori informazioni o restrizioni sull'input. Usi la parola poligono che può suggerire solo in 2D, anche la domanda che hai collegato suggerisce il caso 2D. Inoltre, è sufficiente considerare le distanze vertice-vertice o hai bisogno di risultati corretti per casi come il maniaco del cricchetto menzionato nel suo commento ?
Nero,

2
Inoltre, sono preoccupato per una forma a C che ha uno spessore molto stretto, ma un grande interno aperto; e quindi un ampio raggio di curvatura. Il suo diametro (come lo definiresti) sarebbe molto piccolo perché sarebbe solo un corto che segue la curvatura del C. Eppure un nodulo di cancro delle dimensioni delle dimensioni interne sarebbe abbastanza preoccupante. Quindi forse è lo scafo convesso di cui vuoi calcolare il diametro.
Wyck,

Risposte:


1

Non ho una risposta esatta per questo, in quanto la risposta è tutt'altro che banale. Suggerirei di dare un'occhiata alla geometria computazionale in quanto questo è chiaramente un problema di visibilità - la mia ipotesi è che esiste già una soluzione. La mia idea sarebbe: per ogni segmento di linea nel poligono trovare le parti visibili degli altri segmenti di linea e quindi selezionare la coppia di punti più distanti. Link ispiratore: Wikipedia sul "poligono di visibilità" .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.