Quindi ho un programma javascript che attualmente riceve punti casuali, genera un valore casuale x, y, z attorno al punto centrale, entro il raggio r
var maxArms = 3;
var i = 0;
var color = [];
for(var arm = 0; arm <= maxArms; arm++) {
var perArm = (numStars/maxArms);
var perPoint = Math.ceil((r/10)/5);
var actualPoints = ((r/10)/5);
perPoint = (perArm/(actualPoints+(actualPoints/4)));
var angle = 8;
for (var ra = 0; ra < 412; ra += 2) {
for (var p = 0; p < (580-ra); p++) {
var an = Math.random() * Math.PI * 2;
var pX = x(ra,angle) + ((Math.cos(an) * (Math.random()*512)) * (Math.random() > .5 ? 1 : -1)),
pY = y(ra,angle) + ((Math.cos(an) * (Math.random()*512)) * (Math.random() > .5 ? 1 : -1)),
pZ = Math.random() * ((r/2)-p) * (1 / ra) * (Math.random() > .5 ? 1 : -1),
particle = new THREE.Vertex(
new THREE.Vector3(pX, pZ, pY)
);
innerRing.vertices.push(particle);
var h = Math.random() * (291 - 185) + 185,
s = Math.random() * (66 - 34) + 34,
v = Math.random() * (100 - 72) + 72;
color[i] = new THREE.Color(0xffffff);
color[i].setHSV(h / 360, s / 100, v / 100);
i++;
}
}
}
Ora sto cercando di trovare un modo piuttosto che posizionare le cose in un punto qualsiasi del raggio, per ottenere i punti a spirale, in un numero definito di "Spiral Arms", sono sicuro che questo richiederà qualcosa con Sine e Cosine, ma ho passato ore a cercare di capire come utilizzare queste funzioni per fare ciò di cui ho bisogno e non sono sicuro di come farlo.
Quello che sto cercando è una variabile per il numero di braccia numArms
e voglio avere la funzione sopra per prendere il numero di braccia e creare un numero uguale di punti in ciascun braccio, e ciascun arco di braccio fuori dal punto centrale 0,0
in un movimento a spirale.
Ha senso?
Ho trovato altre domande e risposte diverse su google su come creare una spirale, oltre a come trovare punti casuali (come mostrato sopra) ma nulla che possa aiutarmi a trovare punti casuali attorno alle braccia a spirale, ma una volta avere i punti per la spirale non sono sicuro di come ottenere le coordinate casuali x, y, z attorno alla spirale.
Inoltre, se è possibile, per renderlo così all'inizio di ogni braccio ci sono più punti che alla fine del braccio.
Sì, so che il mio script non è ottimizzato correttamente, ma al momento sto cercando più funzioni.
Ho allegato un'immagine di ciò che attualmente viene generato con il codice sottostante, così come un campione di una galassia a spirale, anche se non voglio che il centro sia grande come la seconda immagine.
Modifica
Ho apportato alcune modifiche allo script di generazione, anche se piuttosto sciatto, inizia a far sì che le stelle arrivino dal centro come una spirale, ma inevitabilmente si ingrandisce e non sembra più una spirale, ho provato a giocare con tutti le variabili ( ra
e angle
) ma non rendono la spirale migliore, cosa posso fare?
Generazione corrente:
Generazionediesempio: