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:52] – [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 70: | Zeile 69: | ||
===== Beispiel 3: Fliegende Bälle ===== | ===== Beispiel 3: Fliegende Bälle ===== | ||
Jetzt wird's Zeit für ein anspruchsvolleres Beispiel: Wir wollen Bälle simulieren, die vom der Mitte des unteren Bildschirmrandes aus hochgeworfen werden und sich unter dem Einfluss der Gravitationskraft möglichst " | Jetzt wird's Zeit für ein anspruchsvolleres Beispiel: Wir wollen Bälle simulieren, die vom der Mitte des unteren Bildschirmrandes aus hochgeworfen werden und sich unter dem Einfluss der Gravitationskraft möglichst " | ||
- | $$v_{x, neu} = vx$$ | + | $$v_{x, neu} = v_x$$ |
- | $$v_{y, neu} = vy + a\cdot\delta t$$ (Gravitation) | + | $$v_{y, neu} = v_y - g\cdot\Delta t$$ |
- | $$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$$ |
- | Als Spieleprogrammierer wollen wir natürlich, | + | Das $g$ in der zweiten Gleichung ist die Erdbeschleunigung $g = 9, |
- | $$v_{y, neu} = vy + a$$ (Gravitation) | + | Als Spieleprogrammierer wollen wir natürlich, |
- | $$x_{neu} = x + vx$$ | + | $$v_{y, neu} = v_y + g$$ |
+ | $$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 120: | 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.1609951921.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)