Dato un set di punti S (x, y, z)
. Come trovare il convex hull
di quei punti?Come trovare lo scafo convesso in uno spazio tridimensionale
Ho provato a capire l'algoritmo da here, ma non ho potuto ottenere molto.
Si dice:
Primo progetto tutti i punti sul piano XY piano, e trovare un bordo che è sicuramente sullo scafo selezionando il punto con alto coordinata y e poi eseguendo un'iterazione confezione regalo per determinare l'altro estremo del bordo. Questa è la prima parte dello scafo incompleto. Costruiamo quindi lo scafo in modo iterativo. Considera questo primo vantaggio; ora trovi un altro punto per formare la prima faccia triangolare dello scafo. Lo facciamo selezionando il punto in modo tale che tutti gli altri punti si trovino alla destra di questo triangolo, se visti in modo appropriato (proprio come nell'algoritmo del gift-wrapping, in cui abbiamo scelto un bordo in modo tale che tutti gli altri punti si trovino alla destra di quel bordo). Ora ci sono tre bordi nello scafo; per continuare, ne scegliamo uno di loro arbitrariamente, e di nuovo scansioniamo tutti i punti per trovare un altro punto per costruire un nuovo triangolo con questo bordo, e ripetilo fino a quando non ci sono più bordi. (Quando creiamo una nuova faccia triangolare, aggiungiamo due spigoli al pool, tuttavia, dobbiamo prima controllare se sono già stati aggiunti allo scafo, nel qual caso li ignoriamo.) Ci sono O (n) facce, e ogni iterazione richiede O (n) tempo poiché dobbiamo esaminare tutti i punti rimanenti, dando O (n2).
Qualcuno può spiegarlo in un modo più chiaro o suggerire un approccio alternativo più semplice.
Si prega di lasciare un commento se qualcosa non è chiaro. – anon
Sembra che l'OP cerchi aiuto per gli scafi 3D, ma le tue (belle!) Descrizioni sono per scafi 2D ... –
Beh, se capisci 2d, il 3D è una generalizzazione molto semplice;) – anon