Sto provando a generare una galassia a spirale sotto forma di coordinate xy (2D) - ma la matematica non è il mio forte seme.Looping attraverso una formula che descrive una spirale per generare le coordinate XY
ho spigolato seguente da un excellent source su spirali:
Il raggio r (t) e l'angolo t sono proporzionali per il simpliest spirale, la spirale di Archimede. Pertanto l'equazione è:
(3) Equazione polare: r (t) = a [a è costante].
Da questo consegue
(2) forma parametri: x (t) = a cos (t), y (t) = a sin (t),
(1) Centrale equazione: x² + y² = a² [ arc tan (y/x)] ².
This question sorta di toccato generazione galassia, ma le risposte sono state disperse e ancora eccessivamente complesso per quello che mi serve (aka, la mia mente matematica-muto non può capirli).
In sostanza, quello che devo fare è passare una formula a spirale in PHP ~ 5000 volte per generare punti su una griglia XY 513x513. La dimensione della griglia e il numero di punti necessari potrebbero cambiare in futuro. Ancora meglio sarebbe pesare quei punti verso l'origine delle spirali sia in frequenza e quanto lontano possano allontanarsi dall'esatta formula matematica, analogamente a come effettivamente appare una galassia.
Questo documento matematico parla di a formula that describes the structure of spiral galaxies.
Ciò che mi ha completamente perso è come tradurre una formula matematica in qualcosa che posso scorrere in PHP!
Grazie per il tuo aiuto, Chris. Questo ha esattamente risposto alla mia domanda per quanto riguarda il looping di un'equazione parametrica. Il mio prossimo compito è quello di modificare la formula per aderire a una griglia discreta, che non sono sicuro sia possibile. – Nick
Il valore massimo di x (t) non può superare la metà della larghezza della griglia, assumendo che si centra la spirale. Quindi, il valore di 'a' deve essere <=' gridWidth/(upperBoundOf $ t * 2) '. L'intervallo che scegli per t determina quante spirali disegni. Ad esempio, se t va da 0 a 2PI, si forma un ciclo. Da 0 a 50 sono quasi 8 loop. Ecco perché t deve essere lasciato come variabile, e solo tu puoi scegliere un valore adatto (nessuno, ma tu sai quanti loop vuoi). La dimensione del passo del ciclo for è determinata da 'rangeDi $ t/numDesiredPointsToDraw' – goat