Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:inheritance:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
klassen2:inheritance:start [2020/12/13 21:27] – [Mathematiksche Grundlagen] Martin Pabstklassen2:inheritance:start [2022/02/17 10:34] (aktuell) – [Aufgabe: Starfield] Martin Pabst
Zeile 157: Zeile 157:
 <script type="text/plain" title="FlyingRectangle.java"> <script type="text/plain" title="FlyingRectangle.java">
 new World(800, 800); new World(800, 800);
 +SystemTools.setSpeed(200);
 +
 while(true) { while(true) {
    new FlyingRectangle();    new FlyingRectangle();
 } }
- 
  
  
Zeile 169: Zeile 170:
    public FlyingRectangle() {    public FlyingRectangle() {
       super(360, 760 - 40, 80, 80);       super(360, 760 - 40, 80, 80);
-      setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2);  // zufällige Farbe setzen+      setFillColor(Color.randomColor(50));  // zufällige Farbe setzen 
 +      setAlpha(Random.randdouble(0.2, 0.8)); // Zufällige opacity ("Undurchsichtigkeit"setzen
  
-      vx = Math.random() * 10 - 5; +      vx = Random.randdouble(-5,5)      // Zufallszahl zwischen -5 und 5 
-      vy = Math.random() * (-20) - 6;+      vy = Random.randdouble(-26, -6)   // Zufallszahl zwischen -26 und -6
  
    }    }
Zeile 251: Zeile 253:
 Die Geschwindigkeit der Sterne in x- und y-Richtung ist zufällig. Eine Zufallszahl zwischen bspw. 2 und 10 erzeugt man folgendermaßen: Die Geschwindigkeit der Sterne in x- und y-Richtung ist zufällig. Eine Zufallszahl zwischen bspw. 2 und 10 erzeugt man folgendermaßen:
 ``` ```
-vx = Math.random()*8 + 2; +vx = Math.randdouble(2, 10)
-vy = Math.random()*8 + 2;+vy = Math.randdouble(2, 10);
 ``` ```
-# Erklärung: +
-``Math.random()`` erzeugt bei jedem Aufruf eine "frische" Zufallszahl im Intervall [0;1[. Multipliziert man diese mit 8, so erhält man eine Zufallszahl im Intervall [0;8[. Addiert man 2 hinzu, so erhält man eine Zufallszahl im Intervall [2;10[.+
 </script> </script>
 <script type="text/plain" title="Tipp 4" data-type="hint"> <script type="text/plain" title="Tipp 4" data-type="hint">
Zeile 265: Zeile 266:
 Die Formel zur zufälligen Bestimmung der Geschwindigkeit in Tipp 3 hat einen Nachteil: Die Geschwindigkeiten haben nicht nur verschiedene Richtungen (gut!) sondern auch sehr unterschiedliche Beträge (schlecht!), d.h. die Sterne fliegen unterschiedlich schnell. Viel besser ist es, mit **Poloarkoordinaten** zu arbeiten, das heißt: Wir bestimmen zuerst den Betrag ``v`` der Geschwindigkeit zufällig, dann den Winkel ``w`` (also ihre Richtung). Danach berechnen wir aus ``v``und ``w`` die benötigten Komponenten ``vx``und ``vy``. Die Formel zur zufälligen Bestimmung der Geschwindigkeit in Tipp 3 hat einen Nachteil: Die Geschwindigkeiten haben nicht nur verschiedene Richtungen (gut!) sondern auch sehr unterschiedliche Beträge (schlecht!), d.h. die Sterne fliegen unterschiedlich schnell. Viel besser ist es, mit **Poloarkoordinaten** zu arbeiten, das heißt: Wir bestimmen zuerst den Betrag ``v`` der Geschwindigkeit zufällig, dann den Winkel ``w`` (also ihre Richtung). Danach berechnen wir aus ``v``und ``w`` die benötigten Komponenten ``vx``und ``vy``.
 ``` ```
-double v = Math.random()*8 + 2; // Betrag der Geschwindigkeit zwischen 2 und 10 +double v = Random.randdouble(2, 10); // Betrag der Geschwindigkeit zwischen 2 und 10 
-double w = Math.random()*2*Math.PI; // Winkel zwischen 0 und 2*PI+double w = Random.randdouble(0, 2*Math.PI); // Winkel zwischen 0 und 2*PI
 vx = v * Math.cos(w); vx = v * Math.cos(w);
 vy = v * Math.sin(w); vy = v * Math.sin(w);
Zeile 283: Zeile 284:
  
 ==== Skizze: ==== ==== Skizze: ====
 +{{ :klassen2:inheritance:pasted:20201213-214225.png?500 }}
 <HTML> <HTML>
  
Zeile 295: Zeile 296:
  
    public Raute(double mitteX, double mitteY,     public Raute(double mitteX, double mitteY, 
-   double diagonaleX, double diagonaleY) {+                double diagonaleX, double diagonaleY) {
          
       super(true);       super(true);
  
-      addPoint(mitteX + diagonaleX/2, mitteY);       +      addPoint(mitteX + diagonaleX/2, mitteY);   // rechter Eckpunkt       
-      addPoint(mitteX, mitteY - diagonaleY/2);       +      addPoint(mitteX, mitteY - diagonaleY/2);   // oberer Eckpunkt 
-      addPoint(mitteX - diagonaleX/2, mitteY);       +      addPoint(mitteX - diagonaleX/2, mitteY);   // linker Eckpunkt 
-      addPoint(mitteX, mitteY + diagonaleY/2);      +      addPoint(mitteX, mitteY + diagonaleY/2);   // unterer Eckpunkt
  
    }    }
Zeile 319: Zeile 320:
 Die Programmiersprache stellt bisher nur Objekte zum Zeichnen von Rechtecken, Kreisen, Polygonen und Sprites zur Verfügung. Ich zeige Dir, wie man durch Erweiterung der Klasse Polygon leicht weitere Objektklassen erstellen kann. Im Folgenden entwickeln wir eine Klasse "Stern". Die Programmiersprache stellt bisher nur Objekte zum Zeichnen von Rechtecken, Kreisen, Polygonen und Sprites zur Verfügung. Ich zeige Dir, wie man durch Erweiterung der Klasse Polygon leicht weitere Objektklassen erstellen kann. Im Folgenden entwickeln wir eine Klasse "Stern".
  
-==== Mathematiksche Grundlagen ====+==== Mathematische Grundlagen ====
 {{ :klassen2:inheritance:stern-erklaerung.png?600}} {{ :klassen2:inheritance:stern-erklaerung.png?600}}
  
Zeile 383: Zeile 384:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'Vererbung6'}">+<div class="java-online" style="height: 400px; width: 70%" data-java-online="{'withBottomPanel': true, 'id': 'Vererbung6'}">
  
 <script type="text/plain" title="Hauptprogramm.java"> <script type="text/plain" title="Hauptprogramm.java">
Zeile 430: Zeile 431:
  
 </HTML> </HTML>
 +
 +===== Feuerwerk =====
 +Das Beispiel "Feuerwerk" [[:api:documentation:grafik:animation#beispiel_4feuerwerk|findest Du hier]].
  
klassen2/inheritance/start.1607891239.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki