Ellipse

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


Ellipse


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


Eine Tabellen-Kalkulation kann keine gekrümmten Linien zeichnen. Man simuliert solche Linien, indem man viele darauf liegende Punkte berechnet und sie durch kurze gerade Linien (  Polygon-Zug) verbindet.

Daher sind nur Formeln verwendbar, welche die Berechnung der XY-Koordinaten (vieler) einzelner Punkte der Funktions-Linie erlauben.

Die Herleitung von Formeln wird hier nicht beschrieben. Die folgenden Angaben sollen lediglich dabei helfen, geeignete Formeln für die praktische Informatik auszuwählen oder klare Ziele für eine Umformung zu definieren.



Die Formel darf auf der linken Seite nur die Variable y enthalten.
Die Werte aller Variablen der rechten Seite mit Ausnahme von x müssen bekannt sein (hier der beiden Halbachsen a und b).
Die Formel wird für viele (typisch 100) verschiedene Werte von x berechnet. Die damit berechneten Punkte werden mit einem Polygon-Zug verbunden.


Für alle anderen X-Werte liefert die Formel entweder keine (reelle) Lösung oder 2 Lösungen. Man kann sie daher notfalls zum Zeichnen einer Ellipsen-Linie verwenden, nicht jedoch zur eindeutigen Berechnung einzelner Punkte der Linie.



Man braucht je 1 Formel zur Berechnung von x und y
Die Formeln dürfen auf der linken Seite nur die Variable x oder y enthalten.
Die Werte aller Variablen der rechten Seite mit Ausnahme einer einzigen Hilfs-Variablen (hier φ) müssen bekannt sein.
Die Formel wird für viele (typisch 100) verschiedene Werte der Hilfs-Variablen φ berechnet. Die damit berechneten Punkte werden mit einem Polygon-Zug verbunden.



Die links gezeigten Formeln in Parameter-Darstellung werden in den Beispielen dieses Webs zur Berechnung verwendet.

Für eine bestimmte Ellipsen-Linie ist die Lage des Mittelpunkts und die Werte des beiden Halbachsen konstant, daher sind alle Variablen der rechten Seite mit Ausnahme der Hilfs-Variablen φ bekannt.

Die Variable φ gibt den Winkel vom Mittelpunkt zum berechneten Punkt der Ellipsen-Linie an: Wenn dieser Winkel bekannt ist oder vorgegeben wird, dann sind die beiden Formeln berechenbar.



Wenn man eine volle Ellipsen-Linie zeichnet, dann kann man jedes der beiden Winkel-Systeme verwenden.
Bei der Berechnung einzelner Punkte ist der Unterschied jedoch wichtig.

Im ↑ Live-Beispiel kann man zwischen den beiden Methoden umschalten und die Wirkung beobachten.



Die Lineare Exzentrizität braucht man zum Zeichnen der beiden Brennpunkte.

Beide Formeln sind nur dann (reell) zu berechnen, wenn a≧b ist.
Wenn man nicht nur entlang der X-Achse 'liegende' Ellipsen erlaubt, sondern auch entlang der Y-Achse 'stehende', dann kann man die beiden Formeln mit vertauschten Variablen a und b berechnen. Die Brennpunkte befinden sich in diesem Fall auf der Y-Achse.


Die Berechnung des Umfangs ist wesentlich schwieriger. Sie erfolgt meist mit Reihen-Entwicklung:
In den ↓ Download-Beispielen ist eine 'BenutzerInnen-definierte' Hilfs-Funktion in der Programmiersprache Basic enthalten, welche den Ellipsen-Umfang nach dieser Formel bequem berechnet.



Diese Regel gilt allgemein ohne besondere Vereinbarung. Je nach Anwendung kann man diese Regel mit besonderen Anweisungen ändern.

Ausnahme: In den XY-Diagrammen der Tabellen-Kalkulation wird der Ursprung je nach den darzustellenden Werten automatisch festgelegt und die Y-Koordinate so wie in der Geometrie von unten nach oben gemessen.



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

Vorgaben



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


Das oben gezeigte ↑ Live-Beispiel enthält Vorgaben und Ergebnisse in einem kompakten Block. Man sollte die zur Eingabe vorgesehenen Zellen entweder deutlich kennzeichnen (im Beispiel durch grünen Hintergrund) oder im Layout voneinander trennen und unmissverständlich beschriften.

Einige Zellen dieses Blocks enthalten Formeln und werden hier zur Vereinfachung gleich in den jeweiligen Zellen berechnet.

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



Alle Variablen müssen einen Zahlenwert erhalten. Wenn man die Werte (noch) nicht kennt, dann setzt man vorläufige, jedoch sinnvolle Schätzwerte ein.

Einzel-Berechnung


Rechnung

Mit diesen Formeln wird die Aufgabe für einen einzelnen Punkt berechnet:
 ABCD
14 φ
Richtungs-Winkel vom Mittelpunkt zum Punkt der Funktions-Linie,
links im Gradmaß, rechts im Bogenmaß
x
Berechnete X-Koordinate des Punktes der Funktions-Linie
y
Berechnete Y-Koordinate des Punktes der Funktions-Linie
15=B9=A15*PI()/180 =$B$2+$B$4*COS($B11)=$B$3+$B$5*SIN($B11)

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

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 B9 die Zahl 0 eingetragen.
Wenn der Winkel-Modus 'Mathematik' verwendet wird, muss das Ergebnis x=a und y=0 lauten.

Beispiel: Tragen sie als Richtungs-Winkel in Zelle B9 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).

Ellipsen-Linie als Polygon-Zug


Tabellen-Rechnung

Mit diesen Formeln werden die XY-Koordinaten von 121 Punkten der Ellipsen-Linie berechnet:
 ABCD
17 φ
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
180=A18*PI()/180 =$B$2+$B$4*COS($B18)=$B$3+$B$5*SIN($B18)
19=A14+3=A19*PI()/180 =$B$2+$B$4*COS($B19)=$B$3+$B$5*SIN($B19)
20=A15+3=A20*PI()/180 =$B$2+$B$4*COS($B20)=$B$3+$B$5*SIN($B20)
 ⇓⇓
138=A137+3=A138*PI()/180 =$B$2+$B$4*COS($B138)=$B$3+$B$5*SIN($B138)

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 A18
In jeder darunter liegenden Zelle wird der Winkel um +3° vergrößert, solange bis in Zelle A138 der Wert φ=360° und damit ein voller Kreis erreicht ist.
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



Die Ellipse wird nur dann im richtigen Achsen-Verhältnis angezeigt, wenn man die automatische Skalierung der Achsen abschaltet.



 FGH
14 xy
15Focus=B2-B6=B3
16 =B2+B6=B3
17Vector=B2=B3
18 =C15=D15

Die Reihenfolge der Linien sollte sich an jener im Diagramm orientieren: Jede Linie überdeckt alle vorher gezeichneten Linien. Man beginnt daher immer mit der Funktions-Linie (dem Polygon-Zug). Danach folgen die Brennpunkte, danach alle Hilfs-Linien, zuletzt der Vektor zum berechneten Punkt.

Bedienungs-Elemente


Man sollte auch für andere numerische Vorgaben Schieberegler programmieren, wenn es die Aufgabe nahelegt, die Wirkung einer Änderung rasch und interaktiv zu verfolgen.
Man könnte z.B. die absolute Größe einer Ellipse vorgeben und das Verhältnis der Halbachsen a/b mit einem weiteren Schieberegler einstellen.



Ein wichtiger Teil des User-Interface ist auch die Einschränkung der Eingaben auf sinnvolle Werte und die Sicherung gegen eine Änderung der Formeln.
Beachten sie, dass man den Schutz für die 'Verknüpften Zellen' von Schiebereglern und anderen Eingabe-Elementen aufheben muss.

Beispiel Ellipse 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 das oben vorgestellte Webseiten-Beispiel herunterzuladen.

Programmierung des Live-Beispiels


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



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



<iframe src="ellipse_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 Ellipsen-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 nahe am Ende des HTML-Codes.



Im Live-Beispiel dieser Seite wurde diese Lösung programmiert:
Man kann die Werte beider Halbachsen im Bereich 1/5...[a,b]...5/1 vorgeben, und zwar auch b>a für 'stehende' Ellipsen.

Zur Anzeige in den Formular-Feldern wird die kleinere Halbachse auf den Wert 1 skaliert, weil sich herausgestellt hat, dass ein Verhältnis besser verstanden wird, wenn die andere Halbachse >=1 ist.

Das Diagramm wird absichtlich ohne beschriftete Achsen gezeichnet. In diesem Fall wird die größere Halbachse auf den Wert 1 skaliert. Damit passt die Ellipse in jedem Fall in den vorgesehenen Platz.



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_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 → Schieberegler-Element

Zwei <input type="radio">-Elemente dienen zur Auswahl des Winkel-Modus. Nach jeder Änderung wird der Wert von der Javascript-Funktion do_circle_mode() 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.



Alternative:
Man könnte auch das Formular und die Grafik im Quelltext dieser Seite unterbringen.
Damit wäre es allerdings schwierig, die Programmierung zu verstehen und sehr aufwändig, das Beispiel aus dieser Webseite herauszulösen.

Alternative:
Man könnte das Formular mit den Bedienungs-Elementen in dieser Seite unterbringen und nur die SVG-Grafik als eigenes Dokument einbetten.
Die dadurch notwendige Aufteilung der Javascript-Funktionen erfordert zusätzlich (heikle) Maßnahmen zur Kommunikation zwischen beiden Dokumenten.
Der zeitliche Ablauf erfordert ebenfalls besondere Maßnahmen: Das onload-Ereignis des SVG-Dokuments tritt normalerweise vor jenem des parent-Dokuments auf, obwohl es erst danach angefordert wird.