api:documentation:grafik:animation
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
api:documentation:grafik:animation [2021/01/06 17:57] – [Beispiel 3: Fliegende Bälle] Martin Pabst | api:documentation:grafik:animation [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 14: | Zeile 14: | ||
* Die Bewegung des Rechtecks ist sehr weich (ohne Ruckeln), da die '' | * Die Bewegung des Rechtecks ist sehr weich (ohne Ruckeln), da die '' | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
new World(1000, 1000); | new World(1000, 1000); | ||
Zeile 36: | Zeile 36: | ||
===== Beispiel 2: Hin- und herbewegende Rechtecke ===== | ===== Beispiel 2: Hin- und herbewegende Rechtecke ===== | ||
* Das '' | * Das '' | ||
- | * Falls Du das Programm mit niedriger Geschwindigkeit startest, werden nur sehr wenige Quadrate gezeichnet, das Hauptprogramm läuft nicht mehr weiter. Die Ursache liegt darin, dass der Interpreter der Ausführung der '' | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
new World(1000, 1000); | new World(1000, 1000); | ||
Zeile 74: | Zeile 73: | ||
$$x_{neu} = x + v_{x, neu}\cdot\Delta t$$ | $$x_{neu} = x + v_{x, neu}\cdot\Delta t$$ | ||
$$y_{neu} = y + v_{y, neu}\cdot\Delta t$$ | $$y_{neu} = y + v_{y, neu}\cdot\Delta t$$ | ||
- | Das $g$ in der zweiten Gleichung ist die Erdbeschleunigung $g = 9, | + | Das $g$ in der zweiten Gleichung ist die Erdbeschleunigung $g = 9, |
- | Als Spieleprogrammierer wollen wir natürlich, dass der Algorithmus möglichst schnell abläuft. Wir setzen daher $$\Delta t = 1$$ und passen dafür die Anfangsgeschwindigkeit und die Beschleunigung etwas an. Da sich $v_x$ nicht ändert, ist also nur noch folgendes zu tun: | + | Als Spieleprogrammierer wollen wir natürlich, dass der Algorithmus möglichst schnell abläuft. Wir setzen daher $$\Delta t = 1 s$$ und passen dafür die Anfangsgeschwindigkeit und die Beschleunigung etwas an. Da sich $v_x$ nicht ändert, ist bei jedem Zeitschritt |
$$v_{y, neu} = v_y + g$$ | $$v_{y, neu} = v_y + g$$ | ||
$$x_{neu} = x + v_x$$ | $$x_{neu} = x + v_x$$ | ||
$$y_{neu} = y + v_{y, neu}$$ | $$y_{neu} = y + v_{y, neu}$$ | ||
- | Als Physiklehrer | + | Als Physiklehrer |
+ | === Erzeuger-Objekt === | ||
+ | Im [[# | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
new World(800, 1000); | new World(800, 1000); | ||
Zeile 121: | Zeile 122: | ||
</ | </ | ||
+ | ===== Beispiel 4: Feuerwerk ===== | ||
+ | Dieses Beispiel habe ich als Wiederholungsübung für meine zehnten Klassen im Schuljahr 2020/21 geschrieben. Damals war wegen er Corona-Epidemie das Sylvesterfeuerwerk ausgefallen. | ||
+ | {{ youtube> | ||
+ | < | ||
+ | <div class=" | ||
+ | <script type=" | ||
+ | new Feuerwerk(); | ||
+ | |||
+ | class Feuerwerk extends Actor { | ||
+ | |||
+ | | ||
+ | if(Math.random() < 0.03) { | ||
+ | |||
+ | int funkenzahl = Math.floor(Math.random() * 50 + 30); | ||
+ | int farbe = Color.randomColor(128); | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | new Funke(x, y, farbe, lebensdauer); | ||
+ | } | ||
+ | | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | class Funke extends Circle { | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | super(x, y, 4); | ||
+ | double winkel = Math.random() * 2 * Math.PI; | ||
+ | double v = Math.random() * 15 + 5; | ||
+ | vx = v * Math.cos(winkel); | ||
+ | vy = v * Math.sin(winkel); | ||
+ | setFillColor(farbe); | ||
+ | this.lebensdauer = lebensdauer; | ||
+ | } | ||
+ | |||
+ | | ||
+ | lebensdauer--; | ||
+ | move(vx, vy); | ||
+ | vy = vy + 0.2; | ||
+ | if(lebensdauer < 30) { | ||
+ | | ||
+ | } | ||
+ | if(isOutsideView() || lebensdauer < 0) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
api/documentation/grafik/animation.1609952278.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)