Zykloide

Berechnung und Darstellung einer Zykloide mit XY-Koordinaten

Zielgruppe sind StudentInnen und ambitionierte Informatik-Amateure

Grundkenntnisse der Informatik und der Tabellen-Kalkulation werden vorausgesetzt, Kenntnisse der Analytischen Geometrie sind vorteilhaft.


Zykloide


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

Berechnungs-Formeln


Allgemeiner Fall c<r

Dieser Fall beschreibt die Bahn eines allgemeinen Punktes am Rad, z.B. einer Rad-Mutter oder eines Ventils.
Die Zykloide beschreibt eine mehr oder weniger flache Wellen-Linie.
Verwechseln sie diese Bahn-Kurve nicht mit der Sinus-Funktion: Die Zykloide ist im Gegensatz zu jener unsymmetrisch: Sie wird am Minimum umso stärker gekrümmt, je größer c ist.

Allgemeiner Fall c>r

Dieser Fall beschreibt die Bahn eines Punktes, welcher sich außerhalb des Rades befindet, der jedoch zusammen mit diesem abrollt. Das ist auf einer Schiene möglich, nicht jedoch auf einer Straße: Man kann z.B. am Rad einen Hebel anbringen, welcher sich innerhalb (Spurkranz) oder außerhalb der Schiene bewegt.
Die Zykloide beschreibt in diesem Fall Schlingen-Muster.

Wikipedia: Zykloide, Spurkranz



Die Formeln sind bereits in → Parameter-Darstellung angegeben, passend zur Berechnung mit Tabellen-Kalkulation.
Die Werte aller Variablen der rechten Seite mit Ausnahme einer einzigen Hilfs-Variablen (hier φ) müssen bekannt sein.
Die Formel wird für viele verschiedene Werte der Hilfs-Variablen φ berechnet. Die damit berechneten Punkte werden mit einem Polygon-Zug verbunden.
Das Beispiel wird nur dann anschaulich, wenn man mindestens 2 volle Umdrehungen des Rades anzeigt. Die Polygon-Linien sollten sehr kurz sein, um auch enge Schlingen der Zykloiden-Funktion anzuzeigen.
Das Diagramm wird bei proportionaler Darstellung nur wenig hoch, aber relativ breit.



Je nach Anwendung kann es sinnvoll sein, nicht den Wälz)-Winkel anzugeben sondern die Anzahl der Rad-Umdrehungen.

Es ist sehr empfehlenswert, sich bei der Programmierung und beim Layout am Arbeits-Umfeld der jeweiligen AnwenderInnen zu orientieren.
So kann man (nur) im User-Interface an Stelle des Radius in Metern den Durchmesser des Rades in Zoll angeben und an Stelle von Winkel oder Umdrehungen die Fahrtstrecke, eventuell auch Geschwindigkeit & Fahrzeit, ...

Vorgaben



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


Das Layout des oben gezeigte ↑ Live-Beispiels ist wegen der Form des Diagramms anders programmiert als bei den übrigen Parameter-Beispielen.
Das langgestreckte Diagramm kann die gesamte verfügbare Breite einnehmen.
Danach folgt je 1 kompakter Block von Vorgaben + Ergebnissen für die Zykloiden-Funktion und den berechneten Punkt.

Die Zellen F18:F19 enthalten die berechneten Koordinaten des durch den Richtungswinkel in Zelle F17 ausgewählten Punktes der Funktions-Linie: Ihre Berechnung wird im ↓ nächsten Kapitel vorgestellt.

Die grün eingetragenen Namen werden im nächsten Absatz erklärt.



Kontrolle: Wenn sie die Zelle B17 erneut markieren, dann sollte links oben nicht die Adresse sondern der Name radius angezeigt werden.
Der Name ist ein Alias für die absolute Adresse, d.h. man kann ihn genauso verwenden wie den Ausdruck $B$17

Kontrolle: Geben sie in eine beliebige Zelle diese Formel ein:
=radius
Der aktuelle Wert des Radius wird angezeigt.

Einschränkungen:
Namen dürfen nur → ASCII-Buchstaben und Ziffern enthalten, keine Sonderzeichen, Umlaute oder Leerzeichen. Als Trennzeichen verwendet man das _ Underline-Zeichen.
Große und kleine Buchstaben werden normalerweise nicht unterschieden.
Namen anderer Objekte sind ausgeschlossen, z.B. von Zeilen, Spalten oder Adressen. Daher ist der Name radius erlaubt, nicht jedoch r

Einzel-Berechnung



Der Polygon-Zug des Rades wird so programmiert wie im Beispiel → Kreis beschrieben. Die Formeln sind jedoch für fortgeschrittene EntwicklerInnen etwas kompakter gehalten, und die Anzahl der Polygon-Punkte wurde für einen so kleinen Kreis verringert:
 FGH
27Rad-Linie
28φxy
290=x_m+COS($G29)=y_m+SIN($G29)
30=G30+PI()/10=x_m+COS($G30)=y_m+SIN($G30)
 ⇓⇓
49=G49+PI()/10=x_m+COS($G49)=y_m+SIN($G49)
In den Formeln werden die Namen x_m und y_m für die Koordinaten der Rad-Achse verwendet. Damit sollte das Verständnis (und das Debuggen) erleichtert werden.


Rechnung

Mit diesen Formeln wird die Aufgabe für einen einzelnen Punkt berechnet:
 ABCD
23 Punkt-Koordinaten
24 φ
Dreh-Winkel des Rades, links im Gradmaß, rechts im Bogenmaß
x
Berechnete X-Koordinate des Punktes der Funktions-Linie
y
Berechnete Y-Koordinate des Punktes der Funktions-Linie
25=deg_p=A25*PI()/180 =radius*$B25-cyc_c*SIN($B25)=radius-cyc_c*COS($B25)

Der aktuelle Wert des Winkels φ wird aus den ↑ Vorgaben in Zelle A25 kopiert.
In der Informatik wird immer im Bogenmaß gerechnet. Daher wird der Winkel vom Gradmaß in A25 in das Bogenmaß in B25 umgerechnet.
In den Zellen C25:D25 werden die XY-Koordinaten nach den angegebenen ↑ Formeln berechnet.
Mit jeder Änderung des Winkels in Zelle E17 werden die Koordinaten neu berechnet.

In den Formeln werden die Namen radius, cyc_c, deg_p verwendet, die für die Zellen der ↑ Vorgaben vergeben wurden.

Gut programmierte Formeln enthalten keine Zahlenwerte !
Alle benötigten Werte sollten aus anderen Zellen stammen.
Davon ausgenommen sind nur Konstanten, deren Werte sich garantiert nie ändern, wie z.B. die Zahlen 2 oder PI() oder (hier) die Zahl 180 zur Umrechnung der Winkelmaße.


Kontrolle

Die Rechnung wird sofort kontrolliert.
Die besten Tests sind ohne Hilfsmittel durchfühbar:

Beispiel: Als Richtungs-Winkel wird in Zelle E17 die Zahl 0 eingetragen.
Das Ergebnis muss x=0 und y=0 lauten.

Beispiel: Tragen sie als Richtungs-Winkel in Zelle B5 die Zahlen 90, 180, 270, 360 ein und kontrollieren sie die berechneten Koordinaten.

Wenn sie die theoretischen Ergebnisse nicht auswendig kennen, dann hilft eine kleine Skizze. (Ältere Semester dürfen dazu noch Bleistift und Papier verwenden).

Zykloiden-Linie als Polygon-Zug


Tabellen-Rechnung

Mit diesen Formeln werden die XY-Koordinaten von 241 Punkten der Zykloiden-Funktion berechnet:
 ABCD
27Funktions-Linie der Zykloide
28 φ
Richtungs-Winkel vom Mittelpunkt zu den Punkten der Funktions-Linie,
links im Gradmaß, rechts im Bogenmaß
x
Berechnete X-Koordinaten der Punkte der Funktions-Linie
y
Berechnete Y-Koordinaten der Punkte der Funktions-Linie
290=B29*PI()/180 =radius*$B29-cyc_c*SIN($B29)=radius-cyc_c*COS($B29))
30=B29+3=B30*PI()/180 =radius*$B30-cyc_c*SIN($B30)=radius-cyc_c*COS($B30)
31=B30+3=B31*PI()/180 =radius*$B31-cyc_c*SIN($B31)=radius-cyc_c*COS($B31)
 ⇓⇓
269=B268+3=B269*PI()/180 =radius*$B269-cyc_c*SIN($B269)=radius-cyc_c*COS($B269)

Die Punkte der Funktions-Linie ergeben sich, wenn man für die Hilfs-Variable (hier φ) viele verschiedene Werte einsetzt:

Das Beispiel beginnt mit φ=0 in Zelle A29
In jeder darunter liegenden Zelle wird der Winkel um +3° vergrößert, solange bis in Zelle A269 der Wert φ=720° und damit 2 volle Umdrehungen erreicht sind.
In jeder Zeile werden anschließend die XY-Koordinaten des jeweiligen Punkts der Funktions-Linie berechnet.


Formatierung

Es wird empfohlen, alle Zellen dieses Bereichs mit einer sinnvollen Anzahl von Nachkomma-Stellen zu formatieren: Die minimalen Rechen-Fehler werden in diesem Fall durch die automatische Rundung unsichtbar.

Diagramm



Erstellen sie ein XY-Diagramm der markierten Werte.



Das Rad wird angezeigt und mit Eingabe eines Umdrehunge-Winkels 0°...φ...720° in Zelle E17 parallel zur X-Achse bewegt.

Die Zykloide wird nur dann im richtigen Achsen-Verhältnis angezeigt, wenn man die automatische Skalierung der Achsen abschaltet.
Dazu ist das Rad hilfreich: Man verändert das Diagramm so, dass ein Kreis angezeigt wird.



Legen sie im Diagramm eine weitere Datenreihe für die HilfsLinie an.
Formatieren sie die Linie und die beiden Endpunkte: Doppelklick auf das Diagramm, RechtsKlick auf die Linie, Menü Datenreihe formatieren.

Jede Datenreihe überdeckt alle vorher eingetragenen.
Man kann jedoch die Reihenfolge im Fenster Datenbereiche auch nachträglich mit den Pfeil-Tasten verändern.

Bedienungs-Elemente



Man könnte auch den Parameter c mit einem Schieberegler einstellen. Darauf wurde hier verzichtet, weil in allen Parameter-Beispielen nur jener Parameter so eingestellt wird, der in der Tabellen-Kalkulation zur Berechnung zahlreicher (Polygon)-Punkte variiert wird.



Beachten sie, dass man den Schutz für die 'Verknüpften Zellen' von Schiebereglern und anderen Eingabe-Elementen aufheben muss. Das ist mindestens zur Portabilität des fertigen Kalkulations-Programms notwendig.

Beispiel Zykloide 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 Dateien bieten auch eine einfache Animation der Beispiele. Dazu wurde der → Animations-Toolkit verwendet, der auf einer eigenen Seite vorgestellt wird.
Um die Animation 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 Zykloiden-Beispiel ist vollständig autonom, d.h. sie verwendet keine anderen Dokumente (z.B. Javascript-Bibliotheken, CSS-Stylesheets).



<iframe src="cycloide_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 Zykloiden-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. 30 Zeilen und befindet sich am Anfang des HTML <body>-Elements.



Das Layout beginnt mit dem Diagramm, welches sich über die volle nutzbare Breite erstreckt.
Darunter sind die Daten (Vorgaben + Ergebnisse) der Zykloiden-Funktion und des einzeln berechneten Punktes zu je 1 Block zusammengefasst.



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

Details zum → Lesen und zur → Prüfung (Validierung) von Formular-Elementen sowie zum → Schieberegler-Element


Einige Elemente lassen sich in SVG wesentlich einfacher programmieren als mit Tabellen-Kalkulation:
Ein Kreis (<circle>-Element) braucht nur die Angabe von Mittelpunkt und Radius, die Berechnung eines Polygon-Zugs entfällt.
Die Bewegung parallel zur X-Achse wird mit einem einfachen Attribut (translate) programmiert.
Die Drehung des Rades wird mit einem einfachen Attribut (rotate) programmiert. Zur besseren Darstellung der Drehung (auch bei c=0) wurden 4 kleine Speichen in das Rad eingesetzt.



Die 'harte' Codierung des Polygon-Zugs würde viele einzelne <line>-Elemente erfordern, deren Koordinaten je nach Parameter c geändert werden müssen.
In diesem Beispiel werden alle <line>-Elemente 'nach Bedarf' mit Javascript-DOM-Methoden (Funktion create_line() ) erzeugt. Das ist elegant, sparsam und ermöglicht es, die Auflösung (Anzahl der Polygon-Punkte) an einer einzigen Stelle zu ändern.



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



Der Verzicht auf externe Resourcen macht den Quelltext um ca. 15% größer:
Alle CSS-Anweisungen, die ansonsten von einem → Stylesheet bezogen werden, sind hier in ein <style>-Element eingetragen.
Alle Javascript Werkzeug-Funktionen, die ansonsten aus einer Javascript-Bibliotheks-Datei bezogen werden, sind hier in ein <script>-Element eingetragen.