Spline-Modellierung und Simulation einer Achterbahn
Transcrição
Spline-Modellierung und Simulation einer Achterbahn
Bachelorarbeit Spline-Modellierung und Simulation einer Achterbahn Florian Martin ABGABEDATUM Betreuer: Prof. Dr. Klaus Höllig Universität Stuttgart, Fakultät 8 Fachbereich Mathematik, IMNG Das Titelbild zeigt die Achterbahn Silver Star im Europa Park Rust (siehe auch Seite 5). 2 Inhaltsverzeichnis 1 Einleitung 4 Einleitung 4 2 Mathematische Grundlagen 7 Mathematische Grundlagen 2.1 B-Splines . . . . . . . . . . . . . . . . 2.2 Splines . . . . . . . . . . . . . . . . . . 2.3 Spline-Interpolation . . . . . . . . . . . 2.3.1 eindimensionale Interpolation . 2.3.2 Dreidimensionale Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 11 11 13 3 Physikalische Grundlagen 15 Physikalische Grundlagen 3.1 Kinematik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Kinetik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 17 4 Programmvorstellung rollercoasterdesigner 19 Programmvorstellung rollercoasterdesigner 4.1 Spline Repräsentation und Interpolation . 4.1.1 Spline Repräsentation . . . . . . . 4.1.2 Spline-Interpolation . . . . . . . . . 4.2 Simulation . . . . . . . . . . . . . . . . . . 4.2.1 Lösen der DGL . . . . . . . . . . . 4.3 rollercoasterdesigner . . . . . . . . . . 4.3.1 rollercoasterdesigner_1d . . . . 4.3.2 rollercoasterdesigner_3d . . . . 19 19 19 20 20 21 22 23 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Fazit 33 Fazit 33 Anhang 34 Literatur 35 3 Kapitel 1 Einleitung Seit dem Bau der ersten Achterbahnen im 17. Jahrhundert, als man auf Holzkonstruktionen Wasser schüttete, welches gefror und die Leute darauf hinunter schlitterten [15], hat sich in der Entwicklung und im Design von neuen Achterbahnen einiges getan. Aber auch die Geschwindigkeit, in der neue Achterbahnen entstehen, steigt rapide an. 5665 Einträge umfasst die Datenbank der »rollercoaster database« [10] heute, das sind rund 1000 mehr als vor zwei Jahren und 2000 mehr als vor sechs Jahren. Vor fast genau 200 Jahren wurden in Frankreich die ersten Achterbahnen gebaut, in denen die Wagen auf der Bahn befestigt waren (siehe Abbildung 1.1). Als erste Ach- Abbildung 1.1: Erste Achterbahn mit befestigten Wagen terbahn Deutschlands entstand 1908 die »Riesen-Auto-Luftbahn« [14] in München und heutzutage stehen in Deutschland 135 Achterbahnen. Deutschlands bekannteste Achterbahn der »Silver Star« (siehe Abbildung 1.2) steht im Europa Park Rust in der Nähe von Freiburg und ist gleichzeitig mit 73 m Deutschlands höchste und auch längste Achterbahn. Weltweit ist die mit 139 m fast doppelt so hohe »Kingda Ka« in Jackson, USA (siehe Abbildung 1.3) die höchste Achterbahn und besitzt mit einer 127 m langen und 90 Grad steilen Abfahrt die längste der Welt. In Punkto Geschwindigkeit wird sie nur von der »Formula Rossa« in Dubai getoppt (siehe Abbildung 1.3), welche Höchstgeschwindigkeiten von bis zu 240 km/h erreicht. 4 5 Abbildung 1.2: Silver Star Mit den Mitteln der Mathematik und Physik soll nun die Aufgabe sein, solch eine Achterbahn zu modellieren und die Fahrt darauf zu simulieren. Während der Fahrt sollen Informationen, wie Geschwindigkeit, Beschleunigung und die wirkenden Kräfte angezeigt werden. Als Modellierungswerkzeug bedient man sich der Spline-Kurven. Diese finden heutzutage vor allem im Bereich von CAD (computer-aided design) und beim Arbeiten mit Grafiken Anwendung, werden aber auch als Modellierungswerkzeug z.B. bei Finiten Elementen benutzt [8]. Zuerst von Schoenberg als Bezeichner für glatte, zusammengesetzte Kurven benutzt [16], wurden sie später als Hilfsmittel zur Modellierung in der Automobilindustrie hauptsächlich von de Casteljau (Citroën) [4], de-Boor (General Motors) und Bézier (Renault) [2, 3] entwickelt. Sie bieten gegenüber Polynomen und z.B Bézier-Kurven eine Reihe von Vorteilen. Zum einen hat eine lokale Änderung der Kurve keine globalen Auswirkungen zur Folge. Schließlich möchte man nicht, dass bei einer Änderung in der Mitte der Bahn das Ende höher ist als gedacht. Desweiteren lässt sich eine Vielzahl von Punkten durch eine Spline-Kurve mit geringem Grad, z.B. 3, interpolieren. Mittels Polynominterpolation würde ein Polynom von großer Ordnung, in den meisten Fällen der um eins verringerten Anzahl der Punkte, enstehen. Gerade bei kleinen Abständen zwischen den Punkten hätte dies eine starke Oszillation der Kurve zur Folge und die Bahn wäre nicht für die Beförderung von Menschen geeignet. Abbildung 1.3: links: Formula Rossa, rechts: Kingda Ka 6 KAPITEL 1. EINLEITUNG Ein letzter Grund, der für Spline-Kurven spricht, sind leicht zu implementierende Algorithmen zur Auswertung und Differentiation. Diese können durch geschicktes Rechnen mit Matrizen auch schnell umgesetzt werden. Für die oben beschriebene Aufgabe werden zunächst in Kapitel 2 die wichtigsten Aspekte der Spline-Theorie aufgeführt und anschließend in Kapitel 3 mittels Teilgebieten der Physik eine Differentialgleichung hergeleitet, die den zeitlichen Ablauf der Fahrt beschreibt. Um dem Benutzer nicht nur vorgefertigte Achterbahnen zur Verfügung zu stellen, wird ihm die Möglichkeit gegeben, eigene Achterbahnen zu modellieren und zu simulieren. Dies wurde in zweierlei Programmen in MATLAB umgesetzt, und deren Beschreibung und Bedienung widmet sich Kapitel 4. Kapitel 2 Mathematische Grundlagen In den folgenden zwei Kapiteln sollen zunächst die theoretischen Grundlagen geschaffen werden, mit deren Hilfe die Darstellung und Simulation einer Achterbahn als Spline-Kurve durchgeführt werden. Aus der Spline-Theorie werden zunächst in Kapitel 2.1 B-Splines eingeführt und darauf aufbauend Splines definiert und verschiedene Algorithmen vorgestellt (Kapitel 2.2). Im letzten Kapitel 2.3 erfolgt eine Einführung in die Interpolation mit Hilfe von Splines sowohl bei 1-dimensionalen, als auch bei 3-dimensionalen Punkten. 2.1 B-Splines Bevor eine Spline-Funktion bzw. - Kurve definiert werden kann, sind zunächst Basisfunktionen von Nöten. Zu diesem Zweck werden die notwendigen Grundzüge der B-Spline Theorie aufgeführt, beruhend auf dem Buch von Höllig und Hörner [9], das die Thematik der B-Splines und Splines in einem größeren Maße behandelt. Definition 2.1 (B-Spline) Sei ξ : · · · ≤ ξ−1 ≤ ξ0 ≤ ξ1 ≤ · · · ein Knotenvektor, d.h. eine monoton wachsende Folge reeller Zahlen, dann werden die dazugehörigen B-Splines bnk,ξ vom Grad n durch die folgende Rekursion beschrieben: n−1 n , bnk,ξ = γkn bn−1 + (1 − γk+1 )bk+1 k γkn (x) = x − ξk ξn+k − ξk wobei mit der charakteristischen Funktion gestartet wird: ( 1 x ∈ [ξk , ξk+1 ) b0k,ξ (x) = 0 sonst Im Folgenden wird die Konvention verwendet, dass ein B-Spline immer auf einer Knotenfolge ξ definiert ist, wodurch der Index am B-Spline, der die Knotenfolge repräsentiert, nicht mehr angegeben wird. 7 8 KAPITEL 2. MATHEMATISCHE GRUNDLAGEN Im Unterkapitel über die Theorie der Splines wird unter anderem die Ableitung eines Splines hergeleitet, dafür ist die Kenntnis der Ableitung eines B-Splines notwendig. Da die B-Spline Theorie kein Hauptbestandteil der Arbeit ist, wird der folgende Satz nicht bewiesen. Satz 2.1 (Ableitung) Die Ableitung eines B-Splines bnk ist eine gewichtete Linearkombination von BSplines vom Grad n − 1: n−1 n + αk+1 bk+1 , (bnk )0 = αkn bn−1 k αkn = n ξk+n − ξk Verschwindet der Nenner ξk+n − ξk , so wird der entsprechende Term weggelassen. Abbildung 2.1: kubischer B-Spline mit Knoten 0, 1, 2, 3, 4 (blau) und seine Ableitung(rot) 2.2 Splines Nachdem mit den B-Splines eine notwendige Grundlage von Splines geschaffen wurde, können diese nun definiert werden. Da die allgemeine Definition eines Splines für die Aufgabe nicht notwendig ist, wird eine eingeschränkte Definition eingeführt, die im oben genannten Buch unter dem Begriff »Standard Spline Raum« untersucht wird. Definition 2.2 (Spline) Ein Spline p vom Grad ≤ n zu einer endlichen Knotensequenz ξ : ξ0 , ..., ξn+m (m ≥ n) ist eine Linearkombination der B-Splines bn0,ξ , ..., bnm−1,ξ : p(x) = m−1 X k=0 ck bnk,ξ (x), x ∈ [ξn , ξm ] 9 2.2. SPLINES Innerhalb der zur Arbeit gehörigen Programme werden für die Darstellung der Achterbahn als Spline lediglich die Punkte des Parameterintervalls D = [ξn , ξm ] angegeben. Um die Basisfunktion definieren zu können, werden daher zusätzlich 2n äußere Knoten benötigt. Dieses Problem wird durch die folgende Wahl gelöst: ξn−l = ξn − l · (ξn+1 − ξn ), ξm+l = ξm + l · (ξm − ξm−1 ) mit l = 1, ..., n. Zum Lösen der Differentialgleichung, welche die zeitliche Abfolge eines Wagens auf einer Achterbahn darstellt, werden zwei Algorithmen der Spline-Theorie benötigt: Zunächst die Differentiation eines Splines und anschließend die Auswertung an einem Punkt. Satz 2.2 (Differentiation eines Spline) m−1 P Die Ableitung eines Spline p = ck bnk ist ein Spline vom Grad n − 1 mit der k=0 Knotensequenz ξ 0 : ξ1 , ..., ξm+n−1 und den Koeffizienten n dk = αk,ξ (ck − ck−1 ), n αk,ξ = n ξk+n − ξk Folglich gilt p0 = m−1 X n−1 dk bk,ξ k=1 Beweis: Nach Definition gilt: p 0 = = m−1 P ck bnk 0 k=0 m−1 P ck (bnk )0 k=0 Setzt man die Formel zur Ableitung eines B-Splines aus Satz 2.1 ein und spaltet die Summe auf, so ergibt sich p0 = m−1 X + ck αkn bn−1 k k=0 m−1 X n−1 n ck αk+1 bk+1 (2.1) k=0 Der Summand für k = 0 in der ersten Summe ist nicht mehr relevant, da er auf dem Parameterintervall D = [ξn , ξm ] komplett verschwindet und erhöht man den Index der zweiten Summe um eins, so folgt, dass der letzte Summand, welcher bei ξm startet, nicht mehr relevant ist. Damit lässt sich Gleichung 2.1 schreiben als 0 p = m−1 X k=1 ck αkn bkn−1 + m−1 X k=1 ck−1 αkn bn−1 k 10 KAPITEL 2. MATHEMATISCHE GRUNDLAGEN Abbildung 2.2: kub. Spline(blau) mit Ableitung(rot) und man erhält die gesuchte Formel 2 Nachdem bewiesen wurde, dass es sich bei der Ableitung eines Splines wieder um einen Spline handelt, fehlt als letztes Bauteil zum effizienten Arbeiten ein Algorithmus zur Auswertung eines Spline. Dazu wird der Algorithmus von de-Boor [1] benutzt, der den Algorithmus von de-Casteljau für Bézier Kurven verallgemeinert. Satz 2.3 (Auswertung eines Splines) m−1 P Sei p = ck bnk ein Spline vom Grad n und x ein Wert aus dem Parameterintervall k=0 D = [ξn , ξm ], genauer x ∈ [ξl , ξl+1 ) mit l ≥ n, l < m. Dann lässt sich p(x) durch die Bildung von Konvexkombinationen der Koeffizienten der B-Splines berechnen, die an x nicht Null sind: 1. Man setzt p0k = ck , k = l − n, ..., l 2. Für i = 0, ..., n − 1 bildet man pi+1 = γkn−i pik + (1 − γkn−i )pik−1 , k = l − n + i + 1, ..., l k wobei γkn−i = x − ξk ξk+n−i − ξk 3. Als finalen Wert pnl erhält man p(x). Beweis: Für den Beweis benutzt man die Formel zur Auswertung eines BSplines aus Definition 2.1 und beschränkt die Darstellung des Splines auf die BSplines, deren Koeffizienten relevant für den Wert an der Stelle x sind: p(x) = l X k=l−n ck bnk (x) = l X k=l−n p0k bnk (x) 11 2.3. SPLINE-INTERPOLATION Setzt man die Rekursionsformel für den B-Spline ein, ergibt sich p(x) = l X n )bn−1 p0k (γkn bkn−1 (x) + (1 − γk+1 k+1 (x)) k=l−n Analog zum Beweis von Satz 2.2 spaltet man die Summe auf und vollführt eine Indexverschiebung in der zweiten Summe, somit gilt p(x) = l X p0k γkn bkn−1 l+1 X + k=l−n (1 − γkn )p0k−1 bn−1 k k=l−n+1 Der erste B-Spline in der ersten Summe und der letzte in der zweiten Summe sind nicht mehr relevant für den Wert von p an x und man erhält wieder die gleichen Summationsindizes: p(x) = l X (p0k γkn + (1 − γkn )p0k−1 ) bn−1 {z } k | k=l−n+1 p1k Vollführt man diesen Schritt n mal, bleibt lediglich der B-Spline b0l = 1[l,l+1) übrig mit Koeffizient pnl , der damit genau dem Wert p(x) entspricht. 2 2.3 Spline-Interpolation Mit der bisher vorgestellten Spline-Theorie sind alle Voraussetzungen gegeben, um eine Achterbahn als Spline-Kurve darzustellen. Jedoch soll das Programm dem Benutzer die Möglichkeit geben, eine eigene Achterbahn zu kreieren. Einerseits im eindimensionalen Fall durch Setzen von Punkten, andererseits im dreidimensionalen Fall durch die Wahl von vordefinierten Bauteilen. In beiden Fällen kommt die Interpolation mit Splines zum Einsatz, sodass in dem folgenden Kapitel die dafür notwendige Theorie vorgestellt wird. 2.3.1 eindimensionale Interpolation Es seien Werte fk ∈ R an entsprechenden Punkten xk mit k = 0, ..., M und x0 < x1 < · · · < xM gegeben, und gesucht ist eine Spline-Funktion p(x) = m−1 X ck bnk (x), k=0 die diese Werte an den Stützstellen xk interpoliert. Am geeignetsten für diese Aufgabe ist der natürliche Spline-Interpolant: 12 KAPITEL 2. MATHEMATISCHE GRUNDLAGEN Definition 2.3 (natürliche Spline-Interpolant) Der natürliche Spline-Interpolant für Werte fk an Stützstellen xk mit k = 0, ...M ist ein kubischer Spline p, welcher an den Stützstellen xk zweimal stetig differenzierbar ist und zusätzlich die Randbedingungen p00 (x0 ) = 0, p00 (xM ) = 0 erfüllt. Unter den angegebenen Bedingungen existiert ein natürlicher Spline-Interpolant [9] und es soll nun der Frage nachgegangen werden, wie aus gegebenen Punkten der Spline berechnet wird. Aus der Definition folgt direkt, dass es sich um einen kubischen Spline handelt und man setzt die Dimension m des Splines auf M + 3. Desweiteren wählt man die Interpolationspunkte xk als Knoten für den Spline: xk = ξk+3 . Somit ist das Parameterintervall auf D = [x0 , xM ] festgelegt und als Wahl der äußeren Punkt benutzt man, wie im Folgenden von Definition 2.2 beschrieben, äquidistante Fortsetzungen der äußersten Knotenintervalle. Als letztes müssen die Koeffizienten ck der B-Splines berechnet werden, was über ein lineares Gleichungssystem Ac = f erfolgt. Die Interpolationsbedingung p(xi ) = fi liefert M + 1 Gleichungen m−1 X ck b3k (xi ) = fi k=0 Die fehlenden zwei Gleichungen erhält man über die Randbedingungen, die an den natürlichen Spline-Interpolanten gestellt sind: p00 (x0 ) = 0, p00 (xM ) = 0 Setzt man in die zweite Ableitung die Randpunkte ein, so bleiben nur der erste bzw. letzte Koeffizient übrig, da B-Splines vom Grad 1 am mittleren Knoten ausgewertet 1 ergeben. Somit folgen die zwei Gleichungen: c0 − 2c1 + c2 = 0 und cm−3 − 2cm−2 + cm−1 = 0 Schlussendlich ist c = (c0 , ..., cm−1 )T , f = (0, f0 , ..., fM , 0)T und A = (ai )m−1 i=0 mit i=0 (1, −2, 1, 0, ..., 0) 3 3 ai = (b0 (xi−1 ), ..., bm−1 (xi−1 )) 0 < i < m − 1 (0, ..., 0, 1, −2, 1) i=m−1 Beispiel: Es seien die Interpolationspunkte xi fi 0 2 4 1 2 0 13 2.3. SPLINE-INTERPOLATION gegeben, dann besitzt das Gleichungssystem die Form 6 −12 6 0 0 c0 0 1 4 1 0 0 c1 1 1 0 1 4 1 c2 = 2 0 6 0 0 1 4 1 c3 0 0 0 6 −12 16 c4 0 Der entstehende Spline-Interpolant ist in Abbildung 2.3 dargestellt. Abbildung 2.3: natürlicher Spline Interpolant 2.3.2 Dreidimensionale Interpolation Der Unterschied zum vorherigen Kapitel ist, dass nun lediglich Punkte fk ∈ R3 m−1 P mit k = 0, ..., M gegeben sind und eine Spline-Kurve p = ck bnk mit ck ∈ R3 k=0 gesucht wird, welche die Punkte interpoliert. Genau wie im eindimensionalen Fall wird wieder ein natürlicher Spline-Interpolant erzeugt, mit dem Unterschied, dass die Kontrollpunkte dreidimensional sind. Um diesen Interpolanten zu bekommen, wird eine eindimensionale Interpolation in jeder Variable vorgenommen, insgesamt also 3 Interpolationen und am Schluss werden die Kontrollpunkte entsprechend in einen Vektor geschrieben. Bevor die Gleichungssysteme erzeugt werden können, müssen zunächst Knotenpunkte aus den gegebenen Punkten erzeugt werden. Dazu wird kanonisch ξ3 = 0 gesetzt und die folgenden Knoten bis ξm durch die Rekursion ξi+4 = ξi+3 + ||fi+1 − fi ||2 , i = 0, ..., M − 1 berechnet. Die äußeren Knoten werden wieder analog wie im eindimensionalen Fall erzeugt und als rechte Seite im Gleichungssystem dienen die entsprechenden Einträge der Vektoren fi . 14 KAPITEL 2. MATHEMATISCHE GRUNDLAGEN Beispiel: Interpoliert man die Punkte cos(π/2 · i) pi = sin(π/2 · i) , i = 0, ..., 8 i mit einem natürlichen Spline-Interpolanten ergibt sich das Bild Abbildung 2.4: natürlicher Spline-Interpolant 3-dim. Punkte Kapitel 3 Physikalische Grundlagen In Kapitel 2 wurde die Grundlage geschaffen, um eine Achterbahn als Spline-Kurve zu repräsentieren. Darauf aufbauend dient das folgende Kapitel zur Herleitung einer Differentialgleichung, welche die Bewegung eines Wagens auf einer vorgegebenen Kurve beschreibt. Hierfür werden zunächst in Kapitel 3.1 die benötigten Grundlagen aus der Kinematik beruhend auf dem Physik Lehrbuch von Gerthsen und Vogel [7] und dem Lehrbuch zur Technischen Mechanik 3 [5] aufgeführt und schließlich in Kapitel 3.2 mit Hilfe der Kinetik die Gleichung hergeleitet. 3.1 Kinematik Das Programm, das zur Simulation einer Fahrt auf einer Achterbahn dient, betrachtet den Wagen als einen Massenpunkt, d.h. seine Masse ist in einem Punkt zentriert und für seine Bewegung ist nur sein Ort relevant [6]. Die gesamte Bewegung ist abhängig von der Zeit und ein Ortsvektor r(t) beschreibt die Lage zum Zeitpunkt t, dabei wird als Inertialsystem die kartesischen Koordinaten mit Ursprung 0 gewählt: x(t) r(t) = y(t) = x(t) · ex + y(t) · ey + z(t) · ez z(t) Bei der Bewegung auf einer Bahn lässt sich die mittlere Geschwindigkeit zwischen zwei Punkten r(t1 ) und r(t2 ) als der Quotient der Verschiebung ∆r = r(t2 ) − r(t1 ) und dem zeitlichen Unterschied t2 −t1 berechnen. Durch den Grenzübergang t2 → t1 erhält man die (momentante) Geschwindigkeit v, welche von sehr viel größerer Bedeutung ist. Bei Vorgabe der Bahn r ist die Geschwindigkeit zum Zeitpunkt t somit definiert als r(t + ∆t) − r(t) d = r(t) = ṙ ∆t→0 ∆t dt v(t) = lim (3.1) Aus Gleichung 3.1 wird klar, dass es sich bei der Geschwindigkeit um einen Vektor handelt, der aufgrund seines Hintergrunds als Ableitung tangential zur Kurve 15 16 KAPITEL 3. PHYSIKALISCHE GRUNDLAGEN Abbildung 3.1: a) Inertialsystem mit Ortsvektor r b) Berechnung der Geschwindigkeit [5] ist. Damit lässt sich die Geschwindigkeit auch schreiben als v = ṙ = |v| · eT (3.2) wobei eT den Tangentialvektor an die Kurve und |v| den Betrag der Geschwindigkeit beschreiben. Betrachtet man die Geschwindigkeit zu zwei Zeitpunkten t1 , t2 kann man wie im oberen Fall den Quotienten aus ∆v = v(t2 ) − v(t1 ) und t2 − t1 bilden und erhält die mittlere Beschleunigung. Wiederum lässt sich der Grenzübergang bilden und man erhält die Formel zur Berechnung der (momentanen) Beschleunigung: d d2 v(t + ∆t) − v(t) = v(t) = 2 r(t) = r̈ ∆t→0 ∆t dt dt a(t) = lim (3.3) Nimmt man das gerade gewonnene Ergebnis und verwendet für die Definition der Geschwindigkeit Gleichung 3.2, so ergibt sich die Darstellung r̈ = |v̇|eT + |v|ėT (3.4) Diese Darstellung entspricht der Zerlegung der Beschleunigung in Tangentialbeschleunigung aT = v̇eT und Normalbeschleunigung aN = |v|ėT , welche von Huygen entdeckt wurde [17]. Bei der Tangentialbeschleunigung ändert sich der Betrag der Geschwindigkeit, aber die Richtung bleibt erhalten und bei der Normalbeschleunigung ändert sich die Richtung und nicht der Betrag. Letztere steht somit senkrecht zur Bahn (siehe Abbildung 3.2). 17 3.2. KINETIK v1 v1 a v2 v2 v1 v2 a Abbildung 3.2: links: Tangentialbeschleunigung, rechts: Normalbeschleunigung [7] 3.2 Kinetik Nachdem die grundlegenden kinematischen Begriffe Geschwindigkeit und Beschleunigung eingeführt wurden, werden mit deren Hilfe die Kräfte ausgedrückt, die auf den Massenpunkt wirken und damit seine Bewegung veranlassen. Die Entwicklung erfolgt dabei analog zu dem durch Prof. Dr. Rill erstellten Dokument zum Entwurf von Achterbahnen [12]. Im Folgenden bezeichne m die Masse des Massenpunktes. Die Hauptgrundlage der Kinetik sind die drei Newton’schen Gesetze, von welchen für diese Zwecke das zweite ausreichend ist: 2. Newton’sche Gesetz: Die zeitliche Änderung des Impulses ist gleich der auf den Massenpunkt wirkenden Kraft. Unter Verwendung der Formel für den Impuls p = mv und unter der Annahme, dass die Masse konstant ist, ergibt sich folgende wichtige Formel für die Kraft F F = d d mv = m v = m v̇ = m a dt dt (3.5) Somit lässt sich die Kraft berechnen, die auf den Massenpunkt wirkt F = = 3.4 = = = ma m r̈ m(|v̇| eT + |v| ėT ) m aT + m aN G + FN wobei Reibkraft und der Luftwiderstand vernachlässigt wird. Somit setzt sich die Kraft auf den Massenpunkt aus der Gewichtskraft G und der Normalkraft FN zusammen. Multipliziert man diese Gleichung mit dem Tangentialvektor an der Kurve 18 KAPITEL 3. PHYSIKALISCHE GRUNDLAGEN eT , ergibt sich unter Verwendung des Standardskalarproduktes (a · b = b < a, b >) (m r̈) · eT = eT · G + eT · FN = eT · G + m |v| eT · ėT Aus der Definition der Normalbeschleunigung folgt, dass ėT senkrecht zur Bahn und somit senkrecht zu eT liegt. Damit kürzt sich der zweite Summand heraus (3) (m r̈) · eT = eT · G = −m · g · eT und als finale Gleichung erhält man (3) r̈ · eT = −g · eT (3.6) (3) wobei eT die dritte Komponente des tangentialen Einheitsvektors darstellt und g die Schwerebeschleunigung 9, 81 m/s2 . Mit Gleichung 3.6 lässt sich nun die Differentialgleichung für die Bewegung eines Massenpunktes auf einer Achterbahn, welche durch eine Spline-Kurve p repräsentiert wird, herleiten. Gesucht ist eine monoton steigende Funktion ϕ : [0, tf ] → [ξn , ξm ] welche den zeitlichen Ablauf der Fahrt repräsentiert, d.h. p(ϕ(t)) mit t ∈ [0, tf ] repräsentiert die physikalisch korrekte Fahrt (ausgenommen Luftwiderstand und Reibung) eines Massenpunktes auf p. Dabei stellt tf den Endzeitpunkt der Simulation dar. Die Bahngleichung r(t) = p(ϕ(t)) wird nun in Gleichung 3.2 und 3.4 eingesetzt: ṙ(t) = ϕ̇(t) · p0 (ϕ(t)) (3.7) r̈(t) = (ϕ̇(t))2 · p00 (ϕ(t)) + ϕ̈(t) · p0 (ϕ(t)) (3.8) Den tangentialen Einheitsvektor an die Kurve erhält man durch Normierung des Vektors aus Gleichung 3.7 und somit sind alle Komponenten für Gleichung 3.6 bestimmt: ϕ̇(t) · p0(3) (ϕ(t)) ϕ̇(t) · p0 (ϕ(t)) (ϕ̇(t)) · p (ϕ(t)) + ϕ̈(t) · p (ϕ(t)) · = −g · ϕ̇(t)· ||ϕ̇(t) · p0 (ϕ(t))||2 ||ϕ̇(t) · p0 (ϕ(t))||2 2 00 0 vollständig gekürzt und sortiert erhält man die Differentialgleichung (p0 (ϕ) · p0 (ϕ))ϕ̈ = −(p00 (ϕ) · p0 (ϕ))ϕ̇ − g · p0(3) (ϕ) mit Anfangsbedingungen ϕ(0) = ξn , ϕ̇(0) = 0 (3.9) Kapitel 4 Programmvorstellung rollercoasterdesigner Die Hauptaufgabe der Arbeit, die Simulation einer Fahrt auf einer Achterbahn, welche durch eine Spline-Kurve repräsentiert wird, wurde mittels MATLAB in zwei Programme umgesetzt. Der Grundgedanke hinter den Programmen war, nicht nur vorgefertigte Achterbahnen zu simulieren, sondern dem Benutzer auch die Möglichkeit zu geben eine eigene Bahn zu designen; einerseits als planare Kurve und andererseits als dreidimensionale Kurve. Der Unterschied liegt dabei in der Art und Weise wie die Bahn konstruiert wird, im ersten Fall durch einfaches Setzen der Punkte, durch welche die Bahn fährt und im anderen Fall durch die Auswahl von vorgefertigten Bauteilen, die auf die eine oder andere Art angepasst werden können. Zunächst wird in Kapitel 4.1 auf die Implementierung von Splines in MATLAB eingegangen, anschließend erfolgt in Kapitel 4.2 die Simulation und abschließend werden die Funktionsweise und Bedienung der zwei Programme in Kapitel 4.3 erläutert. 4.1 4.1.1 Spline Repräsentation und Interpolation Spline Repräsentation Bevor mit der Interpolation von Punkten oder Lösen von Differentialgleichungen angefangen werden kann, muss zunächst eine geeignete Repräsentation von Splines in MATLAB gefunden werden. MATLAB bietet mit den Befehlen bspline und spline die Möglichkeit einen B-Spline zu einer gegebenen Knotensequenz bzw. den Spline, welcher bestimmte Daten interpoliert, zu bekommen. Jedoch liegt der Nachtteil in dem Aspekt, dass die Speicherung als stückweises Polynom durchgeführt wird. Diese Speicherstruktur ist sehr viel weniger intuitiv als die folgende, welche Definition 2.2 widerspiegelt und somit auch die Möglichkeit zur Anwendung der vorgestellten Algorithmen bietet: p.deg = 3; 19 20 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER p.knot = [0,0,1,1,4,4,6,9,10,10,10]; p.coef=[3,−1,4,−6,9,5,−7]; p.dim = 7; Die erste Eigenschaft gibt den Grad n des Splines an, die zweite die Knotensequenz ξ auf welcher der Spline definiert ist, die dritte Eigenschaft spiegelt die Koeffizienten ck wieder und die letzte Eigenschaft entspricht der Variablen m aus Definition 2.2. Die Eigenschaft dim entspricht gerade der Länge des Arrays mit den Koeffizienten, wurde jedoch aus Kontrollgründen eingeführt. Aufbauend auf dieser Definition wurden die Algorithmen zur Auswertung (2.3) und Differentiation (2.2) in den folgenden Dateien implementiert: • spline_eval.m - Wertet einen Spline p, der in der obigen Darstellung vorhanden ist an einer Stelle t aus. Dabei wird der Algorithmus von de-Boor aus Satz 2.3 benutzt und geschickt durch Matrixoperationen ausgeführt. Für das Lösen der Differentialgleichung 3.9 mit MATLAB wurde die Funktion angepasst, so dass auch eine Auswertung außerhalb des Parameterintervalls möglich ist, wobei hier lediglich der Wert p(ξn ) bzw. p(ξm ) zurückgegeben wird. Der Grund hierfür wird in Kapitel 4.2 erläutert. • spline_diff.m - Leitet einen Spline p ab und gibt den Spline q, welcher der Ableitung entspricht, zurück. • spline_length_1d.m bzw. spline_length_3d.m - Ermittelt die Länge der Spline-Funktion bzw. Kurve durch eine Iteration, welche den Spline stückweise linear interpoliert und endet, falls die Differenz zum vorherigen Wert kleiner als eine Toleranz (10−3 ) ist. 4.1.2 Spline-Interpolation In Kapitel 2.3 wurde das Verfahren vorgestellt, wie sowohl im eindimensionalen, als auch im dreidimensionalen Fall Punkte durch einen kubischen Spline interpolieren werden können. Dies wurde in den MATLAB Dateien natural_spline.m und natural_spline_3d.m realisiert. Beide Dateien erzeugen einen natürlichen SplineInterpolanten, wie er in Definition 2.3 definiert wurde. Dabei werden zunächst die bekannten Parameter deg und dim gesetzt und anschließend die Knotensequenz erzeugt. Im dreidimensionalen Fall geschieht dies extern in der Datei get_knots wie in Kapitel 2.3.2 beschrieben. Als letzter Schritt wird das Gleichungssystem erstellt und gelöst, in der Funktion natural_spline_3d geschieht dies gleichzeitig mit drei rechten Seiten. Die Spline-Interpolanten auf den Abbildungen 2.3 und 2.4 aus Kapitel 2.3 wurden mit Hilfe dieser Dateien erstellt und mit dem vorgestellten Programm ausgewertet. 4.2 Simulation Nach der Einführung einer geeigneten Spline-Repräsentation und der Möglichkeit Splines durch die Vorgabe von Punkten zu erzeugen, widmet sich dieses Unterka- 4.2. SIMULATION 21 pitel der Simulation der Fahrt auf einem vorgegebenen Spline. Dies wird durch die Lösung der in Kapitel 3.2 hergeleiteten Differentialgleichung 3.9 ermöglicht. In der Programmstruktur ist hierfür die Datei get_movie.m verantwortlich. Benötigt wird dazu ein Spline p und ein Startzeitpunkt t0. Der Hintergrund des Startzeitpunktes ist, dass beim Zeichnen der Achterbahn eine Steigung direkt am Anfang als »Kettenlift« [13] erkannt wird. Dieser wird vom Programm selber durch eine gleichmäßige Fahrt simuliert, so dass der Startpunkt für das Lösen der Differentialgleichung erst beginnt, wenn der Wagen auf der Spitze der Steigung ist. Beginnt die Bahn mit einem Gefälle, so ist der Startzeitpunkt ξn . 4.2.1 Lösen der DGL MATLAB bietet für das Lösen von Differentialgleichungen verschiedene Löser an, der gebräuchlichste ist ode45. Dieser beruht auf einem expliziten Runge-KuttaVerfahren vom Grad 4 und 5 [11] und bietet im Fall von stabilen Gleichungen eine gute Fehlertoleranz. Als Parameter benötigt das Verfahren eine Funktion f, welche die rechte Seite widerspiegelt, einen Vektor t, der die Zeitpunkte angibt, an denen die Lösung ausgewertet werden soll bzw. einen Vektor [t0 t1], der die Zeitintervallgrenzen t0 und t1 enthält und als letztes einen Vektor mit den Anfangsbedingungen. In der Datei get_movie.m erfolgt der Aufruf durch [t,y]=ode45(@(x,y) f(x,y,p),timerange,initialvalues); Der Löser ist darauf konzipiert Differentialgleichungen vom Grad eins zu lösen, d.h. ẏ = f (t, y) Im Fall von Gleichung 3.9 liegt eine Differentialgleichung zweiten Grades vor, daher wird die Umformung einer Gleichung zweiten Grades in eine vom Grad eins angewandt: ŷ(t) = (y(t), ẏ(t))T ; ŷ˙ = (ẏ, ÿ)T = f (t, (y, ẏ)) Der Parameter initialvalues ist somit ein Array bestehend aus der Anfangsbedingung aus Gleichung 3.9: initialvalues = [t0,0]; Die rechte Seite der Differentialgleichung wurde in eine separate Datei f.m hineingeschrieben. Sie erhält als fixen dritten Parameter den Spline p, auf dem die Fahrt simuliert werden soll und von Seiten des Lösers wird beim Aufruf der Zeitpunkt t und ein Vektor y übergeben, welcher die Werte y(t) und ẏ(t) enthält. Anhand diesen Informationen wird mit der Gleichung für die rechte Seite ÿ(t) berechnet und zusammen mit dem Wert für ẏ als Vektor zurückgegeben. Als letzter Parameter bleibt die Angabe der Zeitpunkte timerange, an denen die Lösung ausgewertet werden soll. Die rechte Seite von Gleichung 3.9 sieht vor, den Spline an ϕ(t) auszuwerten, daher kann es vorkommen, dass bei einem zu großen Zeitintervall ϕ(t) außerhalb des Parameterintervalls liegt. Dort lässt sich der Spline 22 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER naturgemäß nicht auswerten, deshalb wurde das Problem folgendermaßen gelöst: Zum einen wurde, um eine Fehlermeldung zu verhindern, die Spline-Auswertung angepasst und es ist durchaus möglich außerhalb des Parameterintervalls auszuwerten, wenn auch nur der Wert an ξn bzw. ξm ausgegeben wird. Zum anderen wird die folgende Iteration durchgeführt: 1. Starte mit 1 Sekunde als Zeitintervall. 2. Löse die Differentialgleichung. 3. Schaue den maximalen Wert der Lösung an: – Befindet er sich nicht am Ende, dann fährt die Achterbahn teilweise rückwärts. Schneide daher alles nach dem Maximum ab und ENDE – Ist das Maximum am Ende, so prüfe, ob es größer als die rechte Grenze des Parameterintervalls ist, wenn ∗ JA : Schneide alle Werte ab, die größer als die rechte Grenze sind und ENDE ∗ NEIN : Erhöhe das Zeitintervall um 1 Sekunde und gehe zu 2. Nach dieser Iteration ist sichergestellt, dass der Wagen anhält wenn seine Geschwindigkeit verschwindet oder er das Ende der Bahn erreicht hat. Anschließend lassen sich mit den Formeln 3.7 und 3.8 Geschwindigkeit und Beschleunigung während der Fahrt berechnen. Die Kräfte zu den jeweiligen Zeitpunkten erhält man mit dem zweiten Newton’schen Gesetz und der Aufteilung in Gewichts- und Normalkraft. 4.3 rollercoasterdesigner Mit der bisher erarbeiteten Theorie und der programmiertechnischen Umsetzung wurden die schon erwähnten Programme zum Design und zur Simulation von Achterbahnen entwickelt. Im Folgenden soll aufgeführt werden, wie sie zu bedienen sind und an der einen oder anderen Stelle was hinter der Oberfläche steckt. Nach dem Start von rollercoasterdesigner bieten sich zwei Auswahlflächen (siehe Abbildung 4.1), mit deren Hilfe das jeweilige Programm gestartet wird. Zum einen ein eindimensionaler Designer rollercoasterdesigner_1d (siehe Kapitel 4.3.1), bei dem durch das Setzen der Punkte der Bahnverlauf bestimmt wird und zum anderen der dreidimensionale Designer rollercoasterdesigner_3d (siehe Kapitel 4.3.2), der mehrere Bauteile zur Auswahl bietet, welche aneinander gesetzt werden können. Außerdem stellt dieser auch eine real existierende Achterbahn zur Verfügung, welche in einem kleineren Maßstab simuliert werden kann. 4.3. ROLLERCOASTERDESIGNER 23 Abbildung 4.1: Auswahlmenü zum Start der Programme 4.3.1 rollercoasterdesigner_1d Nach dem Start des Programms bietet sich zunächst die Startoberfläche (siehe Abbildung 4.2) und es müssen zunächst zwei Punkte gesetzt werden, dabei muss beachtet werden, dass der zweite Punkt nicht links des ersten Punkts liegt. Das Programm interpoliert die zwei Punkte daraufhin mit einem Spline und es verändert sein Aussehen in die normale Arbeitsoberfläche (siehe Abbildung 4.3). Abbildung 4.2: Startoberfläche Diese enthält die Zeichenoberfläche (a), auf der durch bestimmte Mausklicks das Aussehen der Kurve verändert werden kann und auf welcher die Simulation der Fahrt durchgeführt wird. Das zugrundeliegende Koordinatensystem besitzt die Maße [0, 20] × [0, 10], diese Größe und auch die des Koordinatensystems im zweiten Programm resultieren daher, dass die entstehenden Zahlen für Geschwindigkeit, Länge der Bahn, u.a. nicht zu klein, aber auch nicht zu groß sind. Außerdem können 24 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER die Längen der Bauteile im zweiten Programm mit Werte im Bereich von 0 bis ca. 20 ohne umrechnen übernommen werden. Unterhalb der Zeichenoberfläche befinden sich zwei Buttons (b) mit der folgenden Funktionsweise: • Reset: Durch Drücken des »Reset«-Knopfes wird der aktuell gezeichnete Spline wieder gelöscht und es kann ein neuer kreiert werden. Simuliert man die Fahrt auf der Achterbahn, so verschwindet der Button und ein anderer tritt an seine Stelle: • Edit Mode: Während der Simulation werden die Punkte, die man gesetzt hat, nicht angezeigt. Außerdem wird eine Steigung am Anfang der Achterbahn in einer anderen Farbe gezeichnet und das Panel (siehe Abschnitt über das Ändern der Kurve) zur Auswahl des Bearbeitungsmodus verschwindet. Um diese Änderung rückgängig zu machen, dient der »Edit Mode« Button. • Exit: Beendet das Programm. Abbildung 4.3: Arbeitsoberfläche des Programms Ändern der Kurve Um das Aussehen der gezeichneten Kurve zu ändern, wurden mehrere Möglichkeiten implementiert, die allesamt durch intuitives Klicken durchgeführt werden können. 4.3. ROLLERCOASTERDESIGNER 25 Zunächst muss dabei der richtige Modus im Panel (c) mit Überschrift »Mode« gewählt werden (siehe Abbildung 4.4). Abbildung 4.4: Panel zur Auswahl des Editiermodus Ein wichtiger Aspekt, der bei allen Modi beachtete werden muss, ist folgender: Da es sich bei der Darstellung um einen natürlichen Spline-Interpolanten (kubisch) handelt, wirkt sich eine Änderung an einem Punkt auf bis zu 3 B-Splines und ihre Koeffizienten aus, daher kommt es bei der Wahl von zu großen Abständen zwischen den Punkten zu ungewollten Änderungen. Dies lässt sich durch die Wahl von kleineren Abständen vermeiden. Nach dem Start und dem Setzen der ersten zwei Punkte befindet sich das Programm im »Add Point (Extension)«-Modus. In diesem Modus kann durch das Klicken in den freien Raum, der rechts des letzten Punktes liegt einer neuer Punkt gesetzt werden. (siehe Abbildung 4.5). Abbildung 4.5: Add Point (Extension) Modus In diesem Modus kann kein Punkt gesetzt werden, dessen zugehöriger x-Wert innerhalb oder links des bisherigen Parameterintervalls liegt. Um diesen Schritt durchzuführen muss in den Modus »Add Point (Refinement)« gewechselt werden. Dieser Modus erzeugt beim beliebigen Klicken auf der Zeichenoberfläche einen neuen Punkt durch den die Achterbahn fährt. Liegt der x-Wert des 26 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER Punktes im Parameterintervall, so wird der Punkte zwischen die zwei anliegenden Punkte eingefügt (siehe Abbildung 4.6). Das Programm bestimmt dabei die zwei Punkte rechts und links mit dem kleinsten Abstand und fügt ihn an dieser Stelle ein. MATLAB lässt leider das Klicken auf die Kurve und in einer kleinen Umgebung der schon vorhandenen Punkte nicht zu, weshalb es dort nicht möglich ist neue Punkte zu setzen. Abbildung 4.6: Add Point (Refinement) Modus Um einen schon gesetzten Punkt zu löschen, wird der »Delete«-Modus benutzt. Hierfür muss lediglich in eine Umgebung des Punktes geklickt werden, der gelöscht werden soll (siehe Abbildung 4.7), daraufhin bestimmt das Programm denjenigen Punkt der zum Ort des Klicks den kleinsten Abstand besitzt, und löscht diesen. Wie gerade beschrieben, lässt sich der Punkt, der gelöscht werden soll, nicht direkt anwählen. Als letzter Modus bietet das Programm den »Move Point«-Modus. Dieser dient dazu einen schon gesetzten Punkt zwischen den zwei angrenzenden Punkten zu versetzen. Hierzu wählt man einen Punkt durch Drücken der linken Maustaste aus, woraufhin er rot gezeichnet wird um zu verdeutlichen mit welchem Punkt man gerade arbeitet. Nun lässt sich der Punkt durch erneutes Drücken der linken Maustaste versetzen und befindet er sich am gewünschten Platz, so wird der Punkt durch Drücken der rechten Maustaste deselektiert (siehe Abbildung 4.8). Simulation und Speichern Nachdem mit den vorgestellten Modi eine Kurve gestaltet wurde, kann anschließend eine Fahrt simuliert werden. Dazu bietet das Programm zunächst die Möglichkeit 4.3. ROLLERCOASTERDESIGNER 27 Abbildung 4.7: Delete Modus das Gewicht des Wagens zu verändern (e). Jedoch besitzt das Gewicht keinerlei Einfluss auf die Fahrt, lediglich die Stärke der Kräfte erfahren eine Änderung. Während der Simulation zeigt das Programm in der Zeichenoberfläche die aktuelle Geschwindigkeit (in m/s), die aktuelle Tangentialbeschleunigung (in m/s2 ) und die wirkende Normalkraft (in N ) an. Hierbei werden pro Sekunde 24 Werte angezeigt, dabei ist es schwer die genauen Werte abzulesen, daher lässt sich mit einem Schieberegler (d) die Abspielgeschwindigkeit anpassen. MATLAB bietet mit dem Befehl getframe eine komfortable Möglichkeit Bilder hintereinander zu speichern und anschließend mit einer bestimmten Anzahl an Bildern pro Sekunde (FPS) abzuspielen. Der Befehl besitzt den Nachteil, dass die abzuspielenden Bilder zunächst erzeugt werden müssen, um sie zu speichern und anschließend abspielen zu lassen. Dies führt dazu, dass in diesem Fall die Kurve doppelt abgefahren wird, zunächst in einer Schleife um die Bilder zu speichern und anschließend mit der richtigen Anzahl an FPS. Deshalb wurde dieses Problem mit den Befehlen tic und toc gelöst: plot(..); f1 = tic; [..] f2 = toc(f1); pause(1/24 − f2); plot(..); Nachdem die aktuelle Position des Wagens geplottet wurde, wird mit tic eine Stoppuhr gestartet, welche die Zeit bis zum Befehl toc misst. In dem Fall, dass ein Bild 1/24 Sekunden anzeigt werden muss, wird mit dem pause Befehl die restliche Zeit abgewartet, bis die nächste Position angezeigt wird. Am Ende der Simulation 28 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER Abbildung 4.8: Move Point Modus 4.3. ROLLERCOASTERDESIGNER 29 erscheint ein Panel (siehe Abbildung 4.9 bzw. (g)), welches verschiedene Statistiken der Fahrt anzeigt: Durchschnittsgeschwindigkeit, Höchstgeschwindigkeit (beides in m/s), Länge der Fahrt (in s), maximale Normalkraft (in N ) und die Länge der Kurve (in m). Abbildung 4.9: Statistiken Der oben erwähnte Befehl getframe wird im Zuge der Speicherung eingesetzt. Mit dem Button zum Speichern (f ) wird die Fahrt des Wagens in eine Matrix M gespeichert und anschließend mittels movie2avi in eine Datei mit vorher eingegebenem Namen gespeichert. 4.3.2 rollercoasterdesigner_3d Das zweite Programm bietet die Möglichkeit mittels vordefinierter Bauteile eine Achterbahn im dreidimensionalen Raum zu kreieren oder eine real existierende Achterbahn in das Programm zu laden. Bevor sich das richtige Programm öffnet, erscheinen nacheinander zwei Menüs (siehe Abbildung 4.10), in denen der Startpunkt und die Startrichtung angegeben werden muss, wobei der Startpunkt im Würfel [0, 20]3 liegen muss und die Startrichtung, also die Richtung, in welche die Achterbahn gebaut wird, in den Würfel zeigen sollte. Die Arbeitsoberfläche (siehe Abbildung 4.11) bietet im Vergleich zum ersten Abbildung 4.10: Startpunkt und -richtung Programm ähnliche Elemente. So entspricht der Simulationsteil mit Schieberegler, Simulationsbutton und Speicherbutton sowohl im Aussehen, als auch in der Funktionsweise den gleichen Elementen, wie sie oben beschrieben wurden. 30 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER Auch während der Simulation werden die gleichen Werte angezeigt, mit dem Unterschied, dass hierfür das Panel genutzt wird, in dem später die Statistiken angezeigt werden. Der Grund ist die Möglichkeit den Würfel, in dem sich die Kurve befindet, zu drehen, womit sich aber auch der eingeblendete Text mitdrehen würde. In diesem Fall wäre er nicht lesbar und somit nutzlos. Abbildung 4.11: Arbeitsoberfläche Erzeugen der Kurve Der größte Unterschied befindet sich in der Erzeugung der Kurve. Analog zum ersten Programm mit dem Setzen der Punkt wäre es eine große Herausforderung für den Benutzer innerhalb eines dreidimensionalen Objekts, das auf einer zweidimensionalen Scheibe abgebildet wird, den gewünschten Ort zu treffen. Eine weitere Möglichkeit, die in Betracht gezogen wurde, ist die Eingabe von Punkten. Dabei muss dem Benutzer jederzeit klar sein, wo er sich genau befindet, und die Vielzahl von Zahlen würden das Programm alles andere als benutzerfreundlich machen. Daher bietet das Programm in einem Popup-Menü (siehe Abbildung 4.12) dreierlei Bauelemente an, die folgendermaßen modifiziert werden können: 1. Line - Erzeugt eine Linie mit der eingegeben Länge und der Steigung aus dem Textfeld »Gradient«. Die Steigung wird in Gradmaß eingegeben und darf 4.3. ROLLERCOASTERDESIGNER 31 Abbildung 4.12: Verschiedene Bauelemente mit ihren Modifikationsmöglichkeiten betragsmäßig höchstens 89 betragen. Das Vorzeichen bestimmt die Richtung: positiv bedeutet nach oben und negativ nach unten. 2. Curve - Erzeugt eine Kurve mit dem gewünschten Radius und der Steigung analog wie im vorherigen Bauelement. Besitzt der Radius ein negatives Vorzeichen, so erhält man eine Rechtskurve und bei positivem Vorzeichen eine Linkskurve. Das letzte Feld »Angle« gibt den Drehwinkel der Kurve an. 3. Looping - Erzeugt einen Looping mit dem angegeben Durchmesser, dabei wird der Looping immer in die Ebene gestellt. D.h. wird der Looping aus einem Gefälle heraus gesetzt, so geht die Bahn in die Ebene über und anschließend in den Looping. Für die ersten beiden Bauteile erzeugt das Programm Drehmatrizen. Im ersten Fall wird lediglich der Richtungsvektor am Ende der Kurve um den jeweiligen Winkel nach oben bzw. unten gedreht und anschließend der Endpunkt, sowie zwei weitere Punkten mitinterpoliert. Im Fall der Kurve wird zunächst eine planare Kurve unabhängig der Steigung erzeugt (siehe Abbildung 4.13 links). Dazu bestimmt das Programm abhängig vom Radius den Mittelpunkt M und dreht den Verbindungsvektor um den Drehwinkel. Anschließend wird der Vektor zwischen dem Endpunkt der Kurve und dem Punkt E nach oben oder unten gedreht (siehe Abbildung 4.13 rechts). Abbildung 4.13: Erzeugung einer Kurve Mit den angrenzenden Buttons »Set Object« und »Remove last Object« lässt sich das ausgewählte Objekt setzen bzw. das letzte Objekt wieder löschen. Dies beschränkt sich nicht nur auf das zuletzt gesetzte, sondern kann solange durchgeführt 32 KAPITEL 4. PROGRAMMVORSTELLUNG ROLLERCOASTERDESIGNER werden, bis die Kurve vollständig verschwunden ist. Ist dem Benutzer die Erzeugung einer eigenen Kurve zu umständlich, bietet das Programm in einem Popup Menü (siehe Abbildung 4.14) die Auswahl einer realen Achterbahn, die in das Programm geladen werden kann. Dabei handelt es sich um die in der Einleitung vorgestellte Achterbahn »Silver Star« (siehe Abbildung 1.2). Abbildung 4.14: Auswahl verschiedener Achterbahnen Durch den Button »Options« gelangt man in ein Optionsmenü (siehe Abbildung 4.15). Dies bietet zum einen die Möglichkeit durch Jahrmarktsmusik die Atmosphäre während der Erzeugung einer Achterbahn zu verbessern, außerdem wird während der Simulation in einem Gefälle das Geschrei eingespielt, das typischerweise dabei entsteht. Zum anderen lässt sich ein 3D-Viewer anschalten, der bei der Simulation die Fahrt auf der Achterbahn aus Sicht des Wagens zeigt. Die Umgebung wird durch einen Würfel mit Himmel-, Horizont- und Bodentexturen dargestellt und während der Fahrt wird der Würfel entsprechend des Standortes verschoben, sodass eine Bewegung vorgetäuscht wird. Anschließend wird die Kamerasicht in die Richtung der Achterbahn an der aktuellen Stelle geschwenkt. Dieses Modul ist standardmäßig nicht aktiviert, da die Möglichkeiten von MATLAB in Bezug auf Ändern der Kamera und der Sicht sehr eingeschränkt ist. Da solch ein Tool nicht Umfang der Arbeit war, wurde es nach dem jetzigen Stand nicht mehr weiterentwickelt und ist daher als Alphaversion zu sehen. Abbildung 4.15: Optionsmenü Kapitel 5 Fazit Im Rahmen des Mathematikstudiums lernt man viele Facetten der Mathematik kennen, welche im Großen und Ganzen für Außenstehende nicht zugänglich sind. In den meisten Fällen setzt sich dies auf die Themen von Bachelorarbeiten fort, sodass allein der Titel für große Verwirrung sorgt. In diesem Fall wird diese These widerlegt, abgesehen von dem Wort »Spline« kann sich auch ein Nicht-Mathematiker unter »Modellierung und Simulation einer Achterbahn« etwas vorstellen. Betrachtet man das Ergebnis der Arbeit, die zwei MATLAB Programme, so kann damit jeder, der auch einen Computer bedienen kann, Achterbahnen designen und simulieren. Desweiteren ist das Ergebnis im Gegensatz zu einer Arbeit, die aus dem Beweisen von Aussagen oder untersuchen von mathematischen Objekten besteht, anschaulich darstellbar und ist nicht nur ein Hilfsmittel für den Beweis anderer Manifeste. Natürlich werden auch solche Arbeiten benötigt, aber entgegen dem alltäglichen Bild der Arbeit eines Mathematikers existieren doch auch anschaulich und für jedermann direkt benutzbare Arbeiten. Auch in Hinsicht des Anwendungsbereichs von Splines bietet sich mit der Arbeit ein neuer Blickwinkel: Wie in der Einleitung beschrieben werden Splines hauptsächlich in CAD-System zur Entwicklung von Bauteilen o.ä. genutzt und sind damit in nicht gerade benutzerfreundliche Software eingebettet. Da ist es doch erfreulich zu sehen, dass sich damit unter der Zuhilfenahme von etwas programmiertechnischem Aufwand auch ganze Achterbahnen darstellen und simulieren lassen - verpackt in ein fast selbsterklärendes Programm, das keinerlei fachspezifische Kenntnisse erfordert. Ein Dank geht an dieser Stelle an Herr Prof. Dr. Klaus Höllig für die Möglichkeit dieses Thema bearbeiten zu dürfen und die Programme entwickeln zu können. Die weiterentwickelten MATLAB- und LATEX-Kenntnisse werden sicherlich im folgenden Verlauf des Studiums von großer Hilfe sein. 33 Anhang Es folgt eine Liste der Programmdateien, die sich auf der beigelegten CD befinden. / data. .................................... enthält Bild- und Sounddateien himmel.jpg horizont.jpg screaming.wav theme.wave wiese.jpg audioplayerLoopingStopFcn.m b_spline_eval.m check_spline.m create_curve.m create_line.m create_looping.m f.m get_knots_3d.m get_movie.m natural_spline.m natural_spline_3d.m options.fig options.m rollercoaster_designer.fig rollercoaster_designer.m rollercoaster_designer_1d.fig rollercoaster_designer_1d.m rollercoaster_designer_3d.fig rollercoaster_designer_3d.m silverstar.m spline_diff.m spline_eval.m spline_length_1d.m spline_length_3d.m 34 Literatur [1] Carl de Boor. A Practical Guide to Splines. Springer-Verlag, 1978. [2] P. Bézier. Définition numérique des courbes et surfaces I. Automatisme XI, 1966. [3] P. Bézier. Définition numérique des courbes et surfaces II. Automatisme XII, 1967. [4] P. de Casteljau. “Courbes et surfaces a pôles”. In: Technical report, André Citroën Automobiles SA, Paris (1959). [5] Dietmar Gros u. a. Technische Mechanik 3. Springer Berlin Heidelberg, 2010. [6] T. Fließbach und H. Walliser. Arbeitsbuch zur Theoretischen Physik. Spektrum Akademischer Verlag Heidelberg, 2012. [7] Christian Gerthsen und Helmut Vogel. Physik. Springer Berlin Heidelberg, 1993. [8] Klaus Höllig. Finite Elements Methods with B-Splines. SIAM - Society for Industrial und Applied Mathematics, 2003. [9] Klaus Höllig und Jörg Hörner. “Approximation and Modeling with B-Splines”. 2012. [10] Duane Marden. rollercoaster database. url: http://rcdb.com/m/de. [11] Mathworks. Solve initial value problems for ordinary differential equations. url: http://www.mathworks.de/help/techdoc/ref/ode23.html#f92998792. [12] Prof. Dr. G. Rill i.A. MaurerSöhne GmbH. Dynamischer Entwurf von Achterbahnen. 1999. [13] Michael Pantenburg / Metamorph. Schwarzkopf Coaster net. url: http:// schwarzkopf.coaster.net/achterbahnen-detail-antriebe-GF.htm. [14] Lena Rosenthal. “Die Welt in Zahlen”. In: brand eins (Sep. 2006). [15] Adam Sandy. roller coaster history : the beginning. 2012. url: http://www. ultimaterollercoaster.com/coasters/history/start/. [16] I. J. Schoenberg. “Contributions to the problem of approximation of equidistant data by analytic functions”. In: Quart. Appl. Math (1946). [17] Dr. Carl Snell. Ueber Galilei als Begruender der mechanischen Physik und ueber die Methode derselben. 1864. 35 Erklärung Hiermit versichere ich, diese Bachelorrbeit selbstständig und nur unter Verwendung der im Literaturverzeichnis angegebenen Hilfsmittel angefertigt zu haben. Bietigheim-Bissingen, den ?????????????? Florian Martin