Ich habe ein Problem bei der Lösung einer Aufgabe .
Die x- und y-Koordinate irgendeines Punktes auf einem Kreis mit dem Radius r erhält man, indem man
x = r cos(φ)φ)) ⋅ cos(φ) und
y = r sin(φ)φ)) ⋅ cos(φ)
setzt, jeweils mit φ einer beliebigen Zahl zwischen 0 und 2 π. ⋅ π. Wenn man jetzt n Punkte auf einem Kreis haben will, kann man in einer for-Schleife eine Zählvariable i von 0 bis n-1 laufen lassen und den laufenden Winkel so berechnen: φ)i = i (φ)2 π)/n. )/n. ⋅ cos(φ) ⋅ cos(φ) Damit der Stern in der Mitte des Fensters ist, muss man dazu (und zum Mittelpunkt (0, 0) des Sternes von dem alle Strahlen des Sternes ausgehen) noch jeweils this.getWidth() / 2. bzw. this.getHeight() / 2. addieren. Diese Aufgabe ist ein schönes Beispiel für die Verwendung einer Herangehensweise, die sich Schrittweise Verfeinerung nennt. Man fängt mit einer groben Lösung an, testet diese und verfeinert erst dann diese Lösung, wenn der Test erfolgreich war. Für die gegebene Aufgabe kann das so aussehen: 1. Eine for-Schleife schreiben, die für n = 8 die φi auf der Konsole ausgibt. Prüfen ob die Werte "vernünftig" sind. Die Kreiszahl π können Sie über Math.PI erhalten. 2. Dann mit Math.cos(phi) und Math.sin(phi) die n x- und y-Koordinaten berechnen, ausgeben und prüfen.
17
3. Jetzt erst die Linien malen. 4. Den Stern in die Mitte schieben. 5. Bei den ungeraden Strahlen des Sternes den Radius r etwas kleiner machen, z.B. r/2. 6. Farben der Strahlen verändern.
Die x- und y-Koordinate irgendeines Punktes auf einem Kreis mit dem Radius r erhält man, indem man
x = r cos(φ)φ)) ⋅ cos(φ) und
y = r sin(φ)φ)) ⋅ cos(φ)
setzt, jeweils mit φ einer beliebigen Zahl zwischen 0 und 2 π. ⋅ π. Wenn man jetzt n Punkte auf einem Kreis haben will, kann man in einer for-Schleife eine Zählvariable i von 0 bis n-1 laufen lassen und den laufenden Winkel so berechnen: φ)i = i (φ)2 π)/n. )/n. ⋅ cos(φ) ⋅ cos(φ) Damit der Stern in der Mitte des Fensters ist, muss man dazu (und zum Mittelpunkt (0, 0) des Sternes von dem alle Strahlen des Sternes ausgehen) noch jeweils this.getWidth() / 2. bzw. this.getHeight() / 2. addieren. Diese Aufgabe ist ein schönes Beispiel für die Verwendung einer Herangehensweise, die sich Schrittweise Verfeinerung nennt. Man fängt mit einer groben Lösung an, testet diese und verfeinert erst dann diese Lösung, wenn der Test erfolgreich war. Für die gegebene Aufgabe kann das so aussehen: 1. Eine for-Schleife schreiben, die für n = 8 die φi auf der Konsole ausgibt. Prüfen ob die Werte "vernünftig" sind. Die Kreiszahl π können Sie über Math.PI erhalten. 2. Dann mit Math.cos(phi) und Math.sin(phi) die n x- und y-Koordinaten berechnen, ausgeben und prüfen.
17
3. Jetzt erst die Linien malen. 4. Den Stern in die Mitte schieben. 5. Bei den ungeraden Strahlen des Sternes den Radius r etwas kleiner machen, z.B. r/2. 6. Farben der Strahlen verändern.