Gymnasium Löbau/Vertiefungsklasse 2015/Turtlegrafik (II)
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
== Die Turtle trifft Entscheidungen ==
Wir wollen ein beliebiges N-Eck ''mehrfarbig'' zeichnen.
<code id="5ccaf2b835734">
function n_eck(turtle, x, n) {
for (var i = 1; i <= n; i++) {
if (i % 2 == 0)
turtle.penColor(255, 0, 0);
else
turtle.penColor(0, 0, 255);
turtle.forward(x);
turtle.right(360 / n);
}
}
</code>
<canvas w="400" h="300"></canvas>
<run id="5ccaf2b835908">
canvas1.clear();
turtle1.move(100, 200);
n_eck(turtle1, 70, 10);
</run>
Syntax der neuen Sprachelemente:
<ul>
<li>''Zweiseitige'' Verzweigungen:
<pre>
if <Bedingung> {
//Falls-Anweisung(en)
}
else {
//Sonst-Anweisung(en)
}
</pre>
</li>
<li>
Verzweigungen können auch ''einseitig'' sein, d.h. folgende Syntax haben:
<pre>
if <Bedingung> {
//Falls-Anweisung(en)
}
</pre>
</li>
<li>
Mit den Standardfunktionen <tt>Math.floor</tt> und <tt>Math.round</tt> kann der ganzzahlige Anteil bzw. der ganzzahlig gerundete Wert der Variablen <tt>zahl</tt> ermittelt werden:
<pre>
ganz = Math.floor(zahl);
gerundet = Math.round(zahl);
</pre>
</li>
<li>
Die Anweisung
<pre>rest = zahl % n;</pre>
gibt den Rest der ganzzahligen Division der Variablen <tt>zahl</tt> und <tt>n</tt> an.
</li>
<li>
=== Ein Beispiel aus der Mathematik ===
<code id="5ccaf2b8357db">
function GeradTest(n) {
if (n % 2 == 0)
return n + " ist eine gerade Zahl.";
else
return n + " ist eine ungerade Zahl.";
}
</code>
<run id="5ccaf2b835988">
GeradTest(27);
</run>
</li>
</ul>
== Vom Pentagramm zum "N-Spitz" ==
Experimentiere mit der folgenden Prozedur. Variiere dazu die Parameter und verändere die Farbwerte.
<code id="5ccaf2b835867">
function n_spitz(turtle, x, n) {
var winkel;
if (n % 2 == 0)
winkel = 180 - 360 / n;
else
winkel = 180 - 180 / n;
for (var i = 1; i <= n; i++) {
turtle.penColor(Math.round(i * 250 / n), 0, Math.round(250 - 250 / n * i));
turtle.forward(x);
turtle.right(winkel);
}
}
</code>
<canvas w="400" h="300"></canvas>
<run id="5ccaf2b835a2f">
canvas2.clear();
turtle2.move(200, 250);
n_spitz(turtle2, 200, 35);
</run>
Kannst Du ''allgemein'' beschreiben, welche "N-Spitze" ''nicht'' exakt gezeichnet werden?
<!-- Keine exakte Darstellung für alle N, die den Primfaktor 2 nur einmal enthalten -->
== Aufgaben ==
Die Prozeduren zu den nachfolgenden Aufgaben können entweder unter dem eigenen Benutzernamen oder auf der unten verlinkten Lösungsseite implementiert werden.
<ol>
<li>
=== Strich- und Zickzacklinie ===
Schreibe je eine Prozedur zur Darstellung einer Strich- bzw. Zickzacklinie. Diese Linienarten sollen zunächst wie in der Abbildung einfarbig sein.
[[Datei:Farbrosette1.gif|miniatur|Farbrosette mit Quadraten]]
<blockquote>[[Bild:Linien1.GIF]]</blockquote>
Gestalte nun die Linienarten mit wechselnden Farben.
</li>
<li>
=== Mehrfarbige Rosetten ===
Entwickle eine Prozedur, mit der Rosetten in wechselnden Farben gezeichnet werden können.<br />
Diese Rosetten sollen wie in [[Gymnasium Löbau/Vertiefungsklasse 2013/Turtlegrafik (I)|Turtlegrafik (I)]] aus gedrehten regelmäßigen N-Ecken gebildet werden.
</li>
</ol>
Zu den [[Gymnasium Löbau/Vertiefungsklasse 2015/Turtlegrafik-Lösungen (II)|Lösungen der Aufgaben]].