K (Rollen mit Reibung)
K (Rollen mit Reibung)
 
Zeile 75: Zeile 75:
  
 
Setze den Reibungskoeffizienten von Ball und Boden jeweils auf 0.3 . Beide Objekte haben von <code>EduActor</code> die Methode <code>setzeReibung(double reibungsKoeffizient)</code> geerbt. Lasse den Ball nun erst noch einmal prellen, da sich Änderungen von Reibung (und auch Elastizität) nur dann tatsächlich verändern, wenn die Objekte sich NICHT berühren !!! <br>
 
Setze den Reibungskoeffizienten von Ball und Boden jeweils auf 0.3 . Beide Objekte haben von <code>EduActor</code> die Methode <code>setzeReibung(double reibungsKoeffizient)</code> geerbt. Lasse den Ball nun erst noch einmal prellen, da sich Änderungen von Reibung (und auch Elastizität) nur dann tatsächlich verändern, wenn die Objekte sich NICHT berühren !!! <br>
(Setze z.B den Mittelpunkt des Balls z.B. auf (0,0) um ihn hoch zu heben.) <br>
+
(Setze z.B den Mittelpunkt des Balls auf (0,0) um ihn hoch zu heben.) <br>
 
Gib dem Ball nun einen Stoß von der Seite, so dass er zu rollen beginnt. Er hat hierzu von <code>EduActor</code> die Methode <code>wirkeImpuls(double x, double y)</code> geerbt. Rufe z.B. <code>wirkeImpuls(200, 0)</code> auf.
 
Gib dem Ball nun einen Stoß von der Seite, so dass er zu rollen beginnt. Er hat hierzu von <code>EduActor</code> die Methode <code>wirkeImpuls(double x, double y)</code> geerbt. Rufe z.B. <code>wirkeImpuls(200, 0)</code> auf.
 
Der Ball rollt nach rechts, wird langsamer und bleibt schließlich stehen.
 
Der Ball rollt nach rechts, wird langsamer und bleibt schließlich stehen.

Aktuelle Version vom 12. Juni 2023, 06:29 Uhr


Dies ist ein Tutorial für die Edu-Variante der Engine Alpha 4.x. Eine Übersicht aller Edu-Tutorials siehst du hier.

Inhalt

In diesem Tutorial:

  • Erstellst du Grafik-Objekte von vorgegebenen Klassen
  • Veränderst du den Zustand der Objekte durch Methoden-Aufrufe

Zeichnen im Grafikfenster

Das Koordinatensystem ist mittig zentriert. Die x-Achse zeigt nach rechts und die y-Achse nach oben, so wie du es aus dem Mathematikunterricht kennst. Stelle dir das Grafikfenster vor wie ein zweidimensionaler Blick in die Welt. Stelle dir für 1 Längeneinheit immer 1 Meter vor, dann wird später auch die Physik funktionieren, wie du es vom Phsikunterricht her kennst :-)

in BlueJ interaktiv erstelltes Haus

Koordinatensystem zeigen oder verbergen

Das Koordinatensystem des Grafikfensters kann angezeigt oder ausgeblendet werden. Hierfür stellt die Klasse SPIEL eine Methode zeigeKoordinatensystem(boolean zeigen) zur Verfügung. rufe sie auf und übergib ihr den Wert true um das Ko-Sy zu zeigen. Übergib ihr den Wert false und das Ko-Sy wird verschwinden. true und false müssen klein geschrieben werden und werden NICHT in Anführungszeichen geschrieben.

Wand

So gehtst du in BlueJ vor. Klicke auf das Video um es zu vergrößern.

Erstelle in deiner IDE interaktiv ein Objekt der Klasse RECHTECK und nenne es 'Wand': In BlueJ klickst du dazu mit der rechten Maustaste auf die Klassenkarte von RECHTECK und wählst new RECHTECK(). Rufe interaktiv auf dem Objekt entsprechende Methoden auf, so dass die Wand größer wird, weiß ist und in der unteren Mitte des Grafikfensters liegt: In BlueJ klickst du mit der rechten Maustaste auf die rote Objektkarte des Objekts und wählst geeignete Methoden aus. Beachte bei eventuell nötigen Eingaben, dass Texte (anders als Zahlen) in Anführungszeichen gesetzt werden müssen. Kommazahlen haben einen Dezimalpunkt (kein Komma).

Dach

Erstelle nun ein neues Objekt der Klasse DREIECK und nenne es Dach. Gelingt es dir, das Dach auf das Haus zu setzen und rot zu färben? Suche nach geeigneten Methoden ...

Anregung zum Experimentieren

  • Zeichne in dein Haus noch eine Türe und ein Fenster.
  • Stelle neben das Haus noch einen Baum.

Physik der Engine

Dynamaische und statische Objekte mit Elastizität und Reibung

Du kannst Objekte der Engine Alpha mit wenigen Aktionen einer internen Physik unterwerfen. Sie unterliegen dann wahlweise der Schwerkraft oder prallen voneinander ab. Hierzu werden von einer gemeinsamen Oberklasse namens EduActor diverse Methoden zur Verfügung gestellt, über die dann alle Objekte verfügen. Wir verwenden hier beispielhaft:

  • macheDynamisch() : Unterwirft das Objekt der Schwerkraft.
  • macheStatisch() : Lässt das Objekt wie eine "unendlich schwere Mauer" wirken. Dynamische Objekte prallen davon ab.
  • macheSensor() : Frisch erzeugte Objeke sind Senoren. Damit kann man "dynamisch" oder "statisch" wieder rückgängig machen.
  • setzeElastizitaet(double elastizitaet) : setzt die Elastizität der Objekte. Sie verhalten sich dann wie "Gummibälle".
  • setzeReibung(double reibungsKoeffizient) : Setzt den Reibungskoeffizienten der Objekte. Damit kann man "rutschen" oder "gleiten" beeinflussen.

Dynamischer Ball

Dynamischer Ball und Boden als Sensor

Erzeuge ein Objekt der Klasse RECHTECK und nenne es Boden. Seine Breite soll 20 und seine Höhe 0.5 sein. Den Mittelpunkt setzt du auf (0|-8). Erzeuge außerdem ein Objekt der Klasse KREIS und nenne es Ball. Mache es dynamisch indem du seine Methode macheDynamisch() aufrufst. In BlueJ machst du eine Rechtsklick auf die rote Objektkarte und geht zu "geerbt von EduActor" und bei Bedarf weiter über "weitere Methoden" bis du sie findest. Der Ball unterliegt nun der Schwerkraft und fällt nach unten. Aber er ignoriert noch den Boden.

Statischer Boden

Mache den Boden statisch. Er stellt dafür die Methode macheStatisch() zur Verfügung. Mache nun den Ball (den du nicht mehr im Grafikfenster siehst) zunächst wieder zum Sensor. Setze seinen Mittelpunkt nun auf (0|-8). Der Ball erscheint nun an dieser Stelle und fällt nicht nach unten. Mache den Ball jetzt wieder dynamisch. Er fällt nach unten und wird von dem Boden aufgefangen, weil statische Objekte auf aktive Objekte wie eine "Mauer mit unendlicher Masse" wirken.

Elastischer Ball

Dynmaischer, elastischer Ball und statischer Boden

Setze nun die Elastizität des Balls auf den Wert 0.6 . Er hat von EduActor die Methode setzeElastizitaet(double elastizitaet) geerbt. Setze den Mittelpunkt des Balls nun wieder auf (0|8). Er prellt auf dem Boden mit immer kleineren Sprüngen, bis er schließlich still liegen bleibt. Elastische Objekte prallen von anderen (dynamischen oder passiven) Objekten ab.

Rollen mit Reibung

Setze den Reibungskoeffizienten von Ball und Boden jeweils auf 0.3 . Beide Objekte haben von EduActor die Methode setzeReibung(double reibungsKoeffizient) geerbt. Lasse den Ball nun erst noch einmal prellen, da sich Änderungen von Reibung (und auch Elastizität) nur dann tatsächlich verändern, wenn die Objekte sich NICHT berühren !!!
(Setze z.B den Mittelpunkt des Balls auf (0,0) um ihn hoch zu heben.)
Gib dem Ball nun einen Stoß von der Seite, so dass er zu rollen beginnt. Er hat hierzu von EduActor die Methode wirkeImpuls(double x, double y) geerbt. Rufe z.B. wirkeImpuls(200, 0) auf. Der Ball rollt nach rechts, wird langsamer und bleibt schließlich stehen.

Anregungen zum Experimentieren

Dynamisches, elastisches Dreieck mit aktivierter Rotation auf statischem Boden
  • Spiele mit den Werten bei der Elastizität herum. Kannst du den Ball "dauerhaft" springen lassen (ohne Höhenverlust)?
  • Spiele mit den Werten für die Reibung herum. Kannst du "Glatteis" simulieren?
  • Erzeuge ein weiteres Objekt er Klasse DREIECK, mache es elastisch, drehe es um etwa 10 Grad und rufe außerdem seine von EduActor geerbte Methode setzeRotationBlockiert(boolean blockiert) auf und übergib den Wert false. Mache das Dreieck nun dynamisch. Wie verhält es sich?


Das Tutorial ist beendet. Das nächste ist Vererbung . Wenn du Feedback für uns hast, melde dich gerne.