7 Stimmen

Starfield Bildschirmschoner Gleichungen

Für diejenigen, die sich nicht mehr genau daran erinnern können, wie der alte Windows Starfield-Bildschirmschoner aussah, gibt es hier ein YouTube-Video: http://www.youtube.com/watch?v=r5AoFiVs2ME

Im Moment kann ich zufällige Partikel ("Sterne") innerhalb eines bestimmten Radius erzeugen. Was ich habe Probleme zu tun ist, herauszufinden, die beste Art und Weise der Erreichung der betroffenen in der oben verlinkten Video gesehen.

Frage: Angenommen, ich habe die Koordinaten (Vektoren) für meine zufällig erzeugten Partikel. Wie kann ich ihnen am besten eine Richtung (Vektor) geben, damit sie sich ähnlich wie im alten Bildschirmschoner über den Bildschirm bewegen?

Danke!

4voto

Spoike Punkte 115938

Sie scheinen sich vom Zentrum zu entfernen. Du könntest versuchen, den Vektor vom Mittelpunkt des Bildschirms zur erzeugten Partikelposition zu berechnen? Verwenden Sie dann die gleiche Richtung, um das Partikel zu bewegen und beschleunigen Sie das Partikel, bis es außerhalb des Bildschirms ist.

4voto

eykanal Punkte 25058

Ein grundlegender Algorithmus, mit dem Sie arbeiten können:

  1. Erzeugen Sie Sterne an einem zufälligen Ort mit einer 3-D-Gauß-Verteilung (am wahrscheinlichsten in der Mitte des Bildschirms, weniger wahrscheinlich, je weiter Sie sich vom Bildschirm entfernen). Beachten Sie, dass der Bewegungsvektor des Sterns durch diesen Startpunkt bestimmt wird... die Bewegung verläuft effektiv entlang der Linie, die durch den Ursprungspunkt und den Startort gebildet wird, nach außen.

  2. Weisen Sie jedem neu erzeugten Stern eine Entfernung zu. Beachten Sie, dass die Entfernung unabhängig von der Startposition ist.

  3. Bewegen Sie den Stern in einer geraden Linie mit exponentiell zunehmender Geschwindigkeit und verringern Sie gleichzeitig seine Entfernung. Sie müssen diese Parameter selbst einstellen.

  4. Der Stern sollte verschwinden, wenn er den Rand des Bildschirms passiert, unabhängig von der Geschwindigkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X