Die Bewegungen der Planeten
Bisher ist die Position des Planeten direkt auf der Sonne. Wir müssen die wirkliche Position des Planeten noch abhängig von Entfernung und Rotationswinkel berechnen. Wir implementieren dazu eine update-Methode in der Klasse Planet, die das übernimmt.
Die Verwendung von draw() und update() für das Zeichnen und aktualisieren von Objekten ist ein übliches Muster in Processing.
public void update() {
x = entfernung * cos(winkel);
y = entfernung * sin(winkel);
}
Weißt Du noch, wie Kreiskoordinaten berechnet werden können? Eine Erklärung kannst Du in der Mathepedia nachlesen.
Rufe die neue Methode im Hauptprogramm (dem Tab "Sonnensystem") nach earth.draw(); auf, damit die Position der Erde passend aktualisiert wird.
void draw() {
background(0);
sol.draw();
// Hier die Erde aktualisieren und zeichnen.
erde.update();
erde.draw();
}
Schon besser. Nun lass uns etwas Bewegung ins Spiel bringen.
Sorge dafür, dass bei jedem update der Rotationswinkel des Planeten angepasst wird. Dazu hatten wir dem Planeten schon eine Geschwindigkeit als Eigenschaft mitgegeben. Addiere diese bei jedem update auf den Winkel.
🔎 Lösung
public void update() {
winkel += geschwindigkeit;
x = entfernung * cos(winkel);
y = entfernung * sin(winkel);
}
Das Ergebnis kann sich drehen sehen lassen:
Ergänze noch weitere Planeten mit unterschiedlichen Werten und schaue dir das wachsende Sonnensystem an. Studiere die Zustände der Objekte wieder im Debugger.
🧶 Sprinteraufgabe
Erweitere die Klasse Planet um weitere Attribute zur Darstellung:
- Ergänze ein Attribut für die Größe des Planeten.
- Zeige den Namen des Planeten unterhalb der Kugel an.
- Ergänze eine :snippet der Erde, die du an den Koordinaten des Planeten anzeigst. Das Bild sollte auch im Konstruktor übergeben werden können, damit du verschiedene Planeten darstellen kannst.