Übungen zur Animation & Simulation SS 21 Prof. Dr. Stefan Müller et al. Übungsblatt 1 Aufgabe 1 (Die Newton schen Gesetze) Nennen und erklären Sie die Newton schen Gesetze. Aufgabe 2 (Kräfte und numerische Integration) A2.1 Wie ist das Gewicht eines Astronauten mit Masse m auf der Erde und im Weltraum bei Null-Gravitation? Beschreiben sie die Situationen mit den korrekten physikalischen Einheiten. A2.2 Abbildung 1: Angriff der fliegenden Untertassen In ferner Zukunft hat die Menschheit das Weltall erobert. Bösartige Außerirdische neiden uns den Erfolg und greifen Ihr Raumschiff mit Traktorstrahlen (http://de.wikipedia.org/wiki/traktorstrahl) an. Um den Angriff abzuwehren müssen Sie die entstehenden Kräfte in obiges Bild einzeichnen sowie die Gesamtheit aller auf das Raumschiff wirkenden Kräfte berechnen. Sie können das Raumschiff als Massepunkt betrachten. A2. Welche physikalische Größe wird durch die Einwirkenden Kräfte beeinflusst? Berechnen Sie diese Größe. 11. Juni 21 Seite 1
A2.4 F D F N F G α Abbildung 2: inclined plane Eine Kiste mit Masse m=2steht auf einer schiefen Ebene. Die Gravitationsbeschleunigung ist g=1 m s 2 und wirkt entlang der negativen y-achse. Es sei α=6. Wie berechnen sich die Vektoren F N und F D aus F G und α? A2.5 Berechnen Sie die Position der Kiste nach Euler-Integrationsschritten ( ) mit einem Zeitschritt ( von) t =.1s. Die initiale Position der Kiste ist r =, die initiale Geschwindigkeit ist v =, die ( ) 4 Hangabtriebskraft ist F D = (dies ist nicht das Ergebnis der vorherigen Teilaufgabe) 2 11. Juni 21 Seite 2
Aufgabe (Euler und Kardan Winkel) A.1 A.2 Obiges Objekt wird durch die Kardan Winkel R x,r y,r z =( 45,9,9) gedreht. Welches der drei unteren Bilder beschreibt die Situation nach der Drehung? (1) (2) () A. Wie werden zwei durch Kardan Winkel beschriebene Rotationen (ϕ 1 x,ϕ1 y,ϕ1 z ), (ϕ2 x,ϕ2 y,ϕ2 z ) konkateniert? 11. Juni 21 Seite
Aufgabe 4 (Achsen-Winkel Rotationen) n A ϕ r r A4.1 Obiges Bild zeigt eine Achsen-Winkel Rotation. Gegeben sind der Vektor r, der normalisierte Vektor n sowie der Winkel ϕ. Wie berechnen sich A,, und. Wozu braucht man die Vektoren, und? A4.2 Wie wird der rotierte Punkt r berechnet? 11. Juni 21 Seite 4
Aufgabe 5 (Quaternionen) Ein Punkt r= wird um die Achse a= 2 um 6 rotiert. A5.1 Wandeln Sie den Punkt r in das ihm entsprechende Quaternion um. A5.2 Berechnen Sie das Rotationsquaternion für die Achse a und den Winkel ϕ=6. A5. Mit welcher mathematischen Operation werden Rotationen mittels Quaternionen realisiert? A5.4 Ein Punkt p wird zuerst mittels dem Quaternion q 1, danach mittels Quaternion q 2 rotiert. Wie können diese beiden Rotationen durch ein einziges Quaternion beschrieben werden? 11. Juni 21 Seite 5
Aufgabe 6 (Programmieraufgabe) Für die Programmieraufgabe sollten Sie sich die neueste Version des Frameworks von der Webseite zur Veranstaltung herunterladen. Sie sollen nun das alptraumartige Paralleluniversum der bösartigen außerirdischen Angreifer aus Aufgabe 2 simulieren. Die Klasse Uebung stellt die Ausgangsbasis für das Programm dar. Sie beinhaltet verschiedene D- Modelle, sowie ein Array aus Massepunkten. Machen Sie sich zunächst mit der Klasse MassPoint vertraut. Sie finden in Uebung die Funktion keypressed, welche die Benutzereingaben in die Ausrichtung des Raumschiffes und in eine Antriebskraft umwandelt. Die Steuerung des Raumschiffes ist an den Spieleklassiker Asteroids (http://de.wikipedia.org/wiki/asteroids) angelehnt. A6.1 Implementieren sie nun das Euler Integrationsverfahren. Hierzu steht die Klasse NumericIntegration zur Verfügung. Die Klasse beeinhaltet eine Zeiger auf ein Array von Massepunkten, welcher in Uebung::init gesetzt wird. Überlegen Sie sich, wie Sie am Ende der numerischen Integration mit der auf den Massepunkt wirkenden Kraft verfahren müssen. A6.2 Sie sollten nun das Raumschiff steuern können und durch die Weiten des Raumes treibende Schweine erkennen können. Um die Szenerie noch surrealer erscheinen zu lassen, sollen sie nun lilafarbene Kühe um eine Achse rotieren lassen. die Klasse Uebung stellt hierfür entsprechende Datenfelder zur Verfügung. Die Rotation der Kühe soll mittels Quaternionen realisiert werden. Implementieren sie daher in der Funktion Quaternion::getRotationQuaternion die Berechnung eines Rotationsquaternions zu gegebener Achse und Winkel. Der Winkel soll in Grad übergeben werden. Überlegen Sie sich, ob sie den Winkel so ohne weiteres an die trigonometrischen Funktionen der C-Mathebibliothek übergeben können. Als nächstes müssen sie die Rotation eines Punktes mit einem Rotationsquaternion in der Funktion Vector::rotate implementieren. Hierzu brauchen Sie noch die Funktion Quaternion::conjugate, welche Sie ebenfalls implementieren müssen. 11. Juni 21 Seite 6