Klothoide

Berechnung und Darstellung einer Klothoide mit XY-Koordinaten

Zielgruppe sind StudentInnen und ambitionierte Informatik-Amateure

Fortgeschrittene Kenntnisse der Informatik und der Tabellen-Kalkulation sind hilfreich. Sie sollten mit einfachen Beispielen der Parameter-Darstellung (z.B. Kreis) vertraut sein, bevor sie versuchen, dieses Beispiel zu lösen.


Klothoide


Allgemeine Angaben sind mit jedem Standard Kalkulations-Programm anwendbar, spezielle Hinweise (z.B. Menü-Befehle) werden hier nur für LibreOffice und OpenOffice angegeben.

Berechnung einer Klothoide

Leonhard Euler
Quelle: Wikipedia (modif.)
Die Funktion wurde 1694 von Jakob I. Bernoulli (links) entdeckt und 1743 von Leonhard Euler (rechts) erstmals berechnet.

Die Berechnung erfolgt durch Reihen-Entwicklung.
Eine Tabellen-Kalkulation kann keine Programm-Schleifen durchführen. Daher muss man sich mit Standard-Methoden auf die einzelne Berechnung weniger Reihen-Elemente beschränken.
Mit Hilfs-Funktionen in der Programmiersprache Basic kann man jedoch auch diese relativ schwierige Funktion problemlos berechnen.



Alternativ kann man nach der ersten Klothoide einen Kreisbogen anschließen, dessen Radius jenem des letzten Klothoiden-Punkts entspricht. Zuletzt folgt wieder der symmetrische Klothoiden-Teil. Bei dieser Variante nimmt die seitliche Beschleunigung kontinuierlich zu, behält dann (im Kreis) ihren Wert bei und nimmt danach wieder kontinuierlich ab.



Als variabler Parameter wird die Länge b der Kurve (Bogenlänge) gewählt. Zur Vereinfachung der Parameter-Formeln berechnet man die Hilfs-Variable


Diese Formeln erfüllen alle gestellten Bedingungen:
Die Formel darf auf der linken Seite nur entweder die Variable x oder y enthalten.
Die Werte aller Variablen der rechten Seite mit Ausnahme von b müssen bekannt sein (t wird aus b berechnet)
Die Formel wird für viele (typisch 200) verschiedene Werte von b berechnet. Die damit berechneten Punkte werden mit einem Polygon-Zug verbunden.

In diesem Fall kann man zwar jede der beiden Rechnungen in einer einzigen Formel darstellen, zur Berechnung braucht man jedoch mehrere Schritte (einen Algorithmus = Rechen-Vorschrift).



Das Vorzeichen wechselt für jedes Element der Reihe: Das erste Element wird zur Summe addiert, das zweite Element subtrahiert, das dritte Element addiert usw.
Dieses Verhalten wird mit dem Ausdruck (-1)k berechnet.

Nun wird jedes einzelne Element der Reihe nach der Formel in [ ] berechnet. Für einen realistischen Eindruck sollte man mindestens 4 Elemente berechnen, d.h. die Elemente mit k=0, k=1, k=2, k=3
Man nennt diese Vorgangsweise einen willkürlichen Abbruch nach dem 4. Element.

Jedes berechnete Element wird zur Summe Σ addiert, zuletzt wird diese mit der Bogenlänge b multipliziert.



Für Menschen ist es leicht zu erkennen, wenn sich ein Ergebnis nicht mehr ändert, und danach die weitere Rechnung abzubrechen. Für Programme ist das wesentlich schwieriger, daher muss man die maximale Anzahl der Elemente unabhängig davon begrenzen.

Bei Berechnung der Klothoide wird die Fakultät-Funktion verwendet. Sie wächst so rasch, dass man nur ca. k<=80 Elemente der Reihe berechnen kann. Danach wird die → Werte-Grenze der verwendeten Variablen-Typen überschritten.

Für die praktische Anwendung auf Kurven von Verkehrswegen genügt der Bereich 0 ...b... 2.5, weil man damit bereits eine enger werdende Kurve von 180° beschreibt. In diesem Fall kann man die Reihe immer nach k<=14 Elementen abbrechen.

Im Live-Beispiel dieser Seite wird mit -5...b...+5 und mit k<=30 Elementen demonstriert, wie sich die Klothoide weiter spiralförmig entwickelt. Weitere Windungen liegen immer enger aneinander und sind mit einer Grafik dieser Größe nicht mehr getrennt darstellbar.



Mit Spiegelung an der X- oder an der Y-Achse kann man eine Klothoide mit Rechtskurve herstellen. Im Beispiel werden dazu Options-Schalter (Radio-Buttons) angeboten.



Für die ↓ Download-Beispiele wurde ein Basic-Modul verwendet, welches alle Funktionen enthält, um eine Klothoide sowie Richtungswinkel, Tangenten usw. mit Tabellen-Kalkulation zu berechnen.

Vorgaben und Einzel-Berechnung



In den Kapiteln dieser Seite sind nur wenige allgemeine Angaben und Erklärungen enthalten. Der Text wurde auf die besonderen Eigenschaften der Klothoiden-Funktion gekürzt.


Eine Klothoide wird durch eine einzige Variable beschrieben. Für die Standard-Klothoide ist diese als Konstante a=1 vorgegeben.

Zur Berechnung eines Punktes dieser Funktion braucht man als einzige Vorgabe die Bogenlänge b vom Ursprung bis zu diesem Punkt.
Die Berechnung des Radius r in Zelle B6 ist trivial.
Anders die Berechnung der beiden xy-Koordinaten: Man kann sie entweder mit sehr großem Aufwand selbst berechnen oder - wie hier gezeigt - von Basic-(Makro) Hilfs-Funktionen rasch und einfach berechnen lassen.

Klothoiden-Linie als Polygon-Zug



Die Punkte der Funktions-Linie ergeben sich, wenn man für die variable Bogen-Länge b viele verschiedene Werte einsetzt:

Das Beispiel beginnt mit b=-3 in Zelle A11
In jeder darunter liegenden Zelle wird der Wert der Bogenlänge um +0.05 vergrößert, solange bis in Zelle A211 der Wert b=3 erreicht ist.
In jeder Zeile werden anschließend die XY-Koordinaten des jeweiligen Punkts der Funktions-Linie berechnet.


Optionale Funktionen

Das Basic-Modul ↗ Klothoide.bas enthält zusätzlich die Funktion Kloth_tang(), mit der man unterschiedliche Aufgaben berechnen kann, z.B. Richtungswinkel, Anstieg k und Ordinatenabschnitt d einer Tangente, Koordinaten des anliegenden Kreises, usw.

Man kann diese Funktion dazu verwenden, um das Verhalten der Klothoide anschaulich darzustellen, so wie im ↑ Live-Beispiel dieser Seite gezeigt.

Beispiel Klothoide zum Download

Die Beispiele sind in ZIP-Archive verpackt, weil man diese Dateien bei den meisten Web-Providern problemlos verwalten kann.
Man muss die ZIP-Archive vor der Verwendung auspacken.

Das MS-Excel-Beispiel wurde im Datei-Format *.xls gespeichert, weil dieses mit allen gängigen Excel-Versionen verwendbar ist.


Die Basic-Module ↗ Klothoide.bas und ↗ AnimationToolKit.bas sind in den Beispielen bereits installiert.

Um die Basic-Funktionen zu verwenden, muss man ausdrücklich zustimmen, dass Hilfs-Programme in der (Makro)-Programmiersprache Basic ausgeführt werden (Details für → LibreOffice, → MS-Excel)


Das ↓ nächste Kapitel bietet Möglichkeiten, um auch dieses Webseiten-Beispiel herunterzuladen und am eigenen PC zu verwenden.

Programmierung des Live-Beispiels

Das ↑ Live-Beispiel dieser Seite ist allerdings anders (mit modernen Web-Methoden) hergestellt.



Die Mini-Webseite mit dem Klothoiden-Beispiel ist vollständig autonom, d.h. sie verwendet keine anderen Dokumente (z.B. Javascript-Bibliotheken, CSS-Stylesheets).



<iframe src="klothoide_beispiel.html"></iframe>
Jeder moderne Browser bietet mit RechtsKlick die Möglichkeit, das eingebettete Dokument in einem eigenen Browser-Tab zu laden.



Das Diagramm der Klothoiden-Funktion ist ein Beispiel für eine → Inline-Grafik.
Sie können den ↗ HTML-5-Quelltext des Beispiels in einem eigenen Browser-Tab studieren:
Das <svg>-Element umfasst ca. 60 Zeilen und befindet sich nahe am Ende des HTML-Codes.


Der Berührungs-Kreis ist ebenfalls als Polygon-Zug programmiert (Beispiel → Kreis). Sein Mittelpunkt liegt normal auf die Tangente im Abstand des Radius.

Diese zusätzlichen Elemente sollen das Verständnis für die Klothoiden-Funktion unterstützen.



Ein <input type="range">-Element dient als Schieberegler zur bequemen Eingabe des Richtungs-Winkels. Während jeder Änderung (oninput-Ereignis) und nach erfolgter Änderung (onchange-Ereignis) wird der Wert von der Javascript-Funktion do_point_range() gelesen und zur Fernsteuerung der Grafik verwendet. Eine Validierung ist nicht notwendig, weil man ohnehin nur zulässige Werte eingeben kann.
Details zum → Schieberegler-Element

Zwei <input type="radio">-Elemente dienen zur Auswahl der Kurven-Richtung. Nach jeder Änderung wird der Wert von der Javascript-Funktion do_tors() gelesen. Danach werden die Koordinaten neu berechnet und die Grafik neu gezeichnet.



Zur Live-Änderung der Eigenschaften werden Funktionen in der Programmiersprache → Javascript verwendet. Diese Funktionen sind im Quelltext der Mini-Webseite enthalten und kommentiert.



Details zum → Lesen und zur → Prüfung (Validierung) von Formular-Elementen, sowie zur Programmierung eines → Schieberegler-Elements mit Javascript.



Details zur Codierung von Formeln mit → MathML, sowie Beispiele mit 'reinem' → MathML oder → MathJax.