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