Sternenzelt am Ubuntu-Himmel
Soooo, heute habe ich endlich das Sternenfeld fertig bekommen. Die Programmierung hat echt sehr viel Spaß gemacht und C++ ist eine wirklich effiziente Sprache. Trotz meiner virtuellen Ubuntu-Maschine bin ich recht zügig voran gekommen – mit dem Hyper-V Enhanced Session Mode kann man ja easy Clipboards austauschen.
Meinen ersten Pixel habe ich ja schon auf dem Bildschirm entdeckt. Jetzt sollten es aber 1000 Stück sein. Die 1000 Sterne haben wir in einem Vector<vec3> erzeugt und anschließend die Koordinaten der Sterne zufällig generiert. Dabei mussten die Werte in einem bestimmten Intervall liegen: x und y zwischen -1 und 1; z liegt jedoch nur zwischen größer 0 und kleiner gleich 1.
Anschließend wurde es interessant, denn wir mussten die 3D-Werte ind 2D-Werte umrechnen. Das geht anhand der folgenden mathematischen Formel:

Mit den 2D-Werten konnten die Sterne auch schon direkt auf dem Bildschirm gezeichnet werden. Hierfür haben wir auch Hilfestellungen und Skeletton-Code erhalten. Anschließend musste noch die Bewegung der Sterne erzeugt werden. Hierfür haben wir eine Update-Funktion implementiert, die regelmäßig aufgerufen wird (bei Unity ist es bei jedem Frame, bei SDL bin ich mir gerade nicht sicher). Auf jeden Fall sehr häufig in der Sekunde. Dadurch kann man sich die Millisekunden von dem letzten Aufruf zum aktuellen notieren, die Differenz berechnen und mit einem Geschwindigkeits-Koeffizienten multiplizieren. Dieser Wert wird dann widerum von z abgezogen (die Achse, die in den Himmel “zeigt”). Somit entsteht der Eindruck, dass sich die Sterne auf die Bildschirmfläche zubewegen (siehe Video unten).
Joa, das wars auch schon. Hat wirklich Spaß gemacht und ich hätte mir gewünscht mehr über die grafische Ausgabe von wissenschaftliche Daten zu lernen – aber vielleicht kommt das nochmal. Als nächstes können wir uns nämlich für einen Pfad entscheiden und der spannendste beschäftigt sich mit der Unity Game Engine und der Animation und Transformation von 3D Objekten. Also bis dahin!
No Comment