Domanda

Ho una serie di vertici (chiamati A) e vorrei trovare tutti i vertici di confine in modo tale che questa vertici di confine insieme è un contorno della forma.

Molti dei vertici in un sono ridondanti perché sono all'interno della forma, voglio sbarazzarsi di questi vertici.

La mia domanda è simile a per trovare i bordi (poligono) di vertici ma ho bisogno di lavoro per un caso poligono non convesso.

EDIT: Precisazione: Il sotto immagine è un poligono concavo. Questo è ciò che intende per non convesso. Se corro un algoritmo convesso su di esso, non sarebbe preservare la parte concava del poligono. (Se non mi sbaglio).

poligono concavo

Ho una serie di vertici all'interno e sul confine del poligono: [[X1, Y1], [x2, y2] ...] Voglio ridurre il set in modo che i vertici sono solo il contorno bordo della forma.

Altri suggerimenti

La tua descrizione è un po 'vago, ma è possibile che si sta cercando per l'algoritmo di costruire un Convex Hull di un insieme di punti. In poche parole, il convesso è la forma che si ottiene se si mette un elastico intorno a tutti i vertici.
Scrivere un algoritmo convesso in 2D non è terribilmente difficile e ci sono alcune librerie che lo fanno come Qhull

(La risposta è data anche nella domanda che si collega a che sembra essere un caso speciale della tua domanda)

Questa è una vecchia, domanda forse abbandonato, ma mi ha fatto pensare a questo proposito. Tu non stai cercando un convesso, si vuole mantenere la forma poligoni, ma solo sbarazzarsi di punti che si trovano in mezzo "bordi" lungo una linea.

La soluzione potrebbe essere quella di passo attraverso punti vicini e calcolare la pendenza lineare del primo e secondo, salvando quel valore pendenza, calcolare la pendenza del secondo e terzo, se la curva della pt1-PT2 è uguale a quello di PT2-pt3 quindi PT2 è ridondante nella formazione della linea e quindi può essere rimosso. Mantenere il collegamento in cascata fino a quando si finisce indietro a pt1.

Ciò garantirebbe la forma concava è mantenuta, ma irrilevanti punti extra vengono rimossi.

Il termine che stai cercando è scafo concava .

La forma più semplice del problema non è ben definita come convesso, perché il poligono concavo che copre punti dato non è unica. Tuttavia ci sono molte buone avvicina.

Una delle più semplici approccio è, si utilizza l'algoritmo di confezione regalo, ma invece di considerare tutti i punti ad ogni passo si considera solo k -Città più vicini del vertice corrente.

Qui k è il vostro iper-parametro per sintonizzare. Se k è troppo alto si ottiene il convesso. Se k è troppo basso si poligono risultante ha un sacco di concavità.


Ecco alcuni link correlati:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top