Usando le curve di Bezier quadratiche per generare una grotta che rimanga entro determinati limiti

4

Sto lavorando a un progetto che genera una serie di curve quadratiche di Bezier e le collega insieme, mantenendo la pendenza dalla fine di un segmento all'inizio della successiva per rendere la transizione uniforme. Il problema è che mentre il percorso è scorrevole, tende a uscire frequentemente dallo schermo.

Il modo in cui è fatto al momento:

P0 = new Point(0, gapStart);  
P2 = new Point(wallWidth, gapEnd);  
P1 = getAnchorPoint();

dove:
GapStart è il P2.y della curva precedente
wallWidth è una costante gapEnd è l'unico aspetto casuale della generazione di grotte È il valore di Y a cui la curva finirà.

La funzione getAnchorPoint prende i punti 0 e 2 e genera un punto di ancoraggio in modo che la pendenza all'inizio di questo segmento sia uguale alla fine del segmento precedente.

Quindi la domanda principale è, quali valori può essere gapEnd per garantire che la curva successiva abbia un gapEnd che non invierà la curva dallo schermo?

In altre parole, come posso determinare i valori minimo e massimo di gapEnd in modo che la prossima curva sia sicura?

Inoltre, è importante che questi valori non impongano la seguente curva ad essere impossibile: cioè non possono consentire alla curva successiva di non avere una possibile soluzione che consentirebbe una generazione continua della curva.

Immagine del processo di generazione di grotte

    
posta Ethan Roseman 06.08.2011 - 03:45
fonte

1 risposta

1

Penso che sarebbe più semplice usare le curve cubiche di Bezier o le B-Spline.

Le curve di Bezier cubiche funzionano con due punti di controllo e consentono di specificare una pendenza senza influenzare l'altra. Per far rispettare la continuità C1 devi semplicemente allineare due punti di controllo. Puoi modificare il peso di una coppia di punti di controllo regolando la loro distanza dal loro punto di curva comune.

B-Spline funzionano con una sequenza di punti e interpolano una curva (o vicino a). Sono molto più facili da usare quando si ha una sequenza di punti.

    
risposta data 06.08.2011 - 11:57
fonte

Leggi altre domande sui tag