Archimedische Spirale

Berechnung und Darstellung einer Archimedischen Spirale 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.


Archimedische Spirale


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


Archimedische Spiralen sind leicht zu berechnen. Sie werden häufig als Ornamente verwendet, kommen jedoch in der Natur nur selten vor.

Wikipedia: Spirale, Archimedische Spirale



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.



In diesem Beispiel ist die Windungs-Richtung mit Hilfe von Options-Schaltern (Radio-Buttons) wählbar.



In diesem Beispiel ist die Anfangs-Richtung mit Hilfe von Options-Schaltern (Radio-Buttons) wählbar.


StartWindungxy
NordRechts x=a*φ*sin(φ)y=a*φ*cos(φ)
Linksx=-a*φ*sin(φ)
OstRechts x=a*φ*cos(φ)y=-a*φ*sin(φ)
Linksy=a*φ*sin(φ)
SüdRechts x=-a*φ*sin(φ)y=-a*φ*cos(φ)
Linksx=a*φ*sin(φ)
WestRechts x=-a*φ*cos(φ)y=a*φ*sin(φ)
Linksy=-a*φ*sin(φ)



Das trifft nur auf die Archimedische Spirale zu. Bei allen anderen Spiralen ändert sich der Abstand mit dem Windungs-Winkel φ



Der Windungs-Winkel φ wird immer beginnend von der jeweiligen Anfangs-Richtung gemessen.
Daher kann man die Berechnung des Winkels nicht (wie im Beispiel → Kreis) je nach Anwendung wählen.



Für menschliche AnwenderInnen verwendet man im User-Interface (Eingabe und Ausgabe) besser das Grad-Maß (0°...360°).
Umrechnung:
rad = grad * Pi / 180
grad = rad * 180 / Pi

Vorgaben



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


 AB
1Spirale
2a1
3Windung1
4Start1
5Punkt
6φ°405
7x[p]=C11
8y[p]=D11
Das oben gezeigte ↑ Live-Beispiel enthält Vorgaben und Ergebnisse in einem einzigen Block in der linken oberen Ecke.
Diese Anordnung ist besonders kompakt und übersichtlich.
Man sollte jedoch die zur Eingabe vorgesehenen Zellen entweder deutlich kennzeichnen (im Beispiel durch grünen Hintergrund) oder im Layout voneinander trennen.

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

Da man meist keine tiefgestellten Indices xp formatieren kann, werden sie hier in Klammern als x[p] angegeben.



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

Kontrolle: Geben sie in eine beliebige Zelle diese Formel ein:
=spir_a
Der aktuelle Wert des Parameters a 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 spir_a erlaubt, nicht jedoch a



Im Beispiel wurde die Höhe der Zeilen 3 und 4 vergrößert, damit die Gruppierungs-Rahmen inkl. Options-Schalter in je 1 Zeile passen. Das ist anschaulich jedoch nicht notwendig: Man kann die Rahmen auch über mehrere Zeilen legen.

Details zur Programmierung von Options-Schaltern finden sie im Beispiel → Kreis.

Einzel-Berechnung



Einfache Zahlenwerte (z.B. 0 oder 1) sind anfangs zu bevorzugen, weil man meist schon ohne genaue Kontrolle abschätzen kann, ob eine Rechnung überhaupt stimmen kann.


Rechnung

 ABCD
10 φ
Richtungs-Winkel vom Mittelpunkt zum Punkt der Kreislinie,
links im Gradmaß, rechts im Bogenmaß
x
Berechnete X-Koordinate des Punktes der Kreislinie
y
Berechnete Y-Koordinate des Punktes der Kreislinie
11=B6=A11*PI()/180 =spir_a*deg_p*SIN(deg_p) =spir_a*deg_p*COS(deg_p)
Mit diesen Formeln wird die Aufgabe für einen einzelnen Punkt berechnet.

Die Optionen Windungs-Richtung und Start-Richtung werden in den hier gezeigten Formeln nicht berücksichtigt. Zur Vereinfachung wird angenommen:
spir_direction = 1 (Rechts)
spir_start = 1 (Nord)

Studieren sie die ↓ Download-Beispiele oder den Quelltext des ↓ Live-Beispiels, um die Programmierung der Koordinaten mit Berücksichtigung der Optionen zu studieren. Dazu ist erforderlich, dass man die Programmierung von Bedingten Verzweigungen ( WENN(...) ) beherrscht.

Funktions-Linie als Polygon-Zug

Tabellen-Rechnung

 ABCD
13Funktions-Linie der Archimedischen Spirale
14 φ
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
150=B15*PI()/180 =spir_a*$B15*SIN($B15)=spir_a*$B15*COS($B15)
16=B15+3=B16*PI()/180 =spir_a*$B16*SIN($B16)=spir_a*$B16*COS($B16)
17=B16+3=B17*PI()/180 =spir_a*$B17*SIN($B17)=spir_a*$B17*COS($B17)
 ⇓⇓
349=B348+3=B349*PI()/180 =spir_a*$B349*SIN($B349)=spir_a*$B349*COS($B349)
Mit diesen Formeln werden die XY-Koordinaten von 335 Punkten der Spiralen-Funktion berechnet.

Bei starker Krümmung (φ<180°) kann man den Winkel um +10°/Zeile vergrößern, dafür bei geringer Krümmung (φ>630°) um kleinere Beträge (1°/Zeile).

Adressierung

Achten sie darauf, für die Vorgabe-Variablen absolute Adressen oder besser (wie hier) Namen zu verwenden, die sich beim Ausfüllen nach unten nicht verändern.

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.




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 'Archimedische Spirale' 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, → OpenOffice)


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="spirarch_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 Spiralen-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. 25 Zeilen und befindet sich am Ende des HTML <body>-Elements.



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



Aus der Kombination dieser 3 Variablen ergeben sich 2^3=8 verschiedene Versionen der Spirale.


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



Die 'harte' Codierung des Polygon-Zugs würde viele einzelne <line>-Elemente erfordern, deren Koordinaten je nach Parameter a 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.

Tipp für fortgeschrittene EntwicklerInnen:
Das Beispiel → Klothoide berechnet ebenfalls eine Spirale, stellt jedoch weit höhere Anforderungen an die Programmierung.