Kreis

Berechnung und Darstellung von Kreisen 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.


Kreis


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 nur der Radius r ).
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 Kreislinie 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 Kreislinie ist die Lage des Mittelpunkts und der Wert des Radius r 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 Kreislinie an: Wenn dieser Winkel bekannt ist oder vorgegeben wird, dann sind die beiden Formeln berechenbar.



Wenn man eine volle Kreislinie 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.


Kreis-Umfang:
U = 2 * r * Pi
Kreis-Fläche:
A = r * r * Pi
Länge eines Kreisbogens:
s(φ) = r * φ



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) ausschließlich das Grad-Maß (0°...360°).
Umrechnung:
rad = grad * Pi / 180
grad = rad * 180 / Pi

Vorgaben



In jedem Fall müssen die Vorgaben, die Bedienungs-Elemente und zumindest die wichtigsten Ergebnisse schon in der ersten Ansicht (Splash-Screen) gut sichtbar sein.
Neben- und Hilfs-Rechnungen werden weiter rechts oder (besser) weiter unten angeordnet.


 AB
1Kreis
2r1
3x[m]0
4y[m]0
5Punkt
6φ°30
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 xm formatieren kann, werden sie hier in Klammern als x[m] angegeben.



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


Wenig erfahrene EntwicklerInnen beginnen oft bereits mit der Berechnung einer langen Tabelle von Lösungs-Punkten.
In diesem Fall sind Fehler viel schwerer zu finden und nur mit großem Aufwand zu korrigieren.



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

Mit diesen Formeln wird die Aufgabe für einen einzelnen Punkt berechnet:
 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 =B3+B2*COS(B11) =B4+B2*SIN(B11)

Der aktuelle Wert des Winkels φ wird aus den ↑ Vorgaben in Zelle A11 kopiert.
In der Informatik wird immer im Bogenmaß gerechnet. Daher wird der Winkel vom Gradmaß in A11 in das Bogenmaß in B11 umgerechnet.
In den Zellen C11:D11 werden die XY-Koordinaten nach den angegebenen ↑ Formeln berechnet.
Mit jeder Änderung des Winkels in Zelle B5 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.



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

Die Beispiele zeigen, wie man einfache Tests blitzschnell und (möglichst) ohne Hilfsmittel ausführen kann.
In heiklen Fällen kann man weitere Tests ausführen - Die (falsche) Verwendung von Hilfsmitteln (Taschenrechner) kann allerdings auch selbst zu Fehlern führen, deren Aufdeckung und Beseitigung viel Zeit verbraucht.

Kreislinie als Polygon-Zug



Diese Voraussetzung ist nicht zwingend, nach Erfahrung spart man damit jedoch viel Zeit.


Tabellen-Rechnung

Mit diesen Formeln werden die XY-Koordinaten von 121 Punkten der Kreislinie berechnet:
 ABCD
13 φ
Richtungs-Winkel vom Mittelpunkt zu den Punkten der Kreislinie,
links im Gradmaß, rechts im Bogenmaß
x
Berechnete X-Koordinaten der Punkte der Kreislinie
y
Berechnete Y-Koordinaten der Punkte der Kreislinie
140=A14*PI()/180 =$B$3+$B$1*COS($B14)=$B$3+$B$1*SIN($B14)
15=A14+3=A15*PI()/180 =$B$3+$B$1*COS($B15)=$B$3+$B$1*SIN($B15)
16=A15+3=A16*PI()/180 =$B$3+$B$1*COS($B16)=$B$3+$B$1*SIN($B16)
 ⇓⇓
134=A133+3=A134*PI()/180 =$B$3+$B$1*COS($B134)=$B$3+$B$1*SIN($B134)

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

Das Beispiel beginnt mit φ=0 in Zelle A14
In jeder darunter liegenden Zelle wird der Winkel um +3° vergrößert, solange bis in Zelle A134 der Wert φ=360° und damit ein voller Kreis erreicht ist.
In jeder Zeile werden anschließend die XY-Koordinaten des jeweiligen Punkts der Kreislinie berechnet.


Fixierung von Zeile und/oder Spalte

Die bisher angegebenen Formeln für die Einzel-Rechnung im Bereich C11:D11 kann man nicht nach unten ausfüllen:
Der Wert des Radius r würde schon in der nächsten Zelle nicht (wie gewünscht) aus Zelle B2 entnommen, sondern aus B3, danach aus B4 usw.

Man muss daher mit einem vorangestellten $-Zeichen die Zeile (und am besten auch die Spalte) 'festhalten', aus welcher die jeweilige Vorgabe stammt. Die Formeln der Zellen C11:D11 werden daher geändert auf
C11 = $B$3 + $B$2 * COS($B11)
D11 = $B$4 + $B$2 * SIN($B11)
Das Ergebnis der beiden Formeln ändert sich dadurch nicht, sie sind nun jedoch allgemein verwendbar:

Markieren sie die Zellen C11:D11, kopieren sie und fügen sie die Zwischenablage in Zelle C14 ein: In den Zellen C14:D14 werden nun die XY-Koordinaten des ersten Punktes der Kreislinie korrekt berechnet.
Füllen sie die Formeln von C14:D14 nach unten aus:
Nun werden die XY-Koordinaten aller Punkte der Kreislinie berechnet.

Tipp: Wenn nur die erste Zeile einer Tabelle korrekt berechnet wird und danach Fehler auftreten und evtl. auch angezeigt werden, dann haben sie vermutlich in den Formeln einige $-Zeichen vergessen.



Die kleinen Differenzen zu den theoretischen Werten sind in der Praxis meist vernachlässigbar.

Die angezeigten Daten sind jedoch für Laien oft unverständlich und untergraben das Vertrauen in eine Kalkulation.
Daher wird empfohlen, alle betroffenen Zellen mit einer sinnvollen Anzahl von Nachkomma-Stellen zu formatieren: Die minimalen Rechen-Fehler werden in diesem Fall durch die automatische Rundung unsichtbar.

Das angeführte Beispiel wird bei Formatierung mit 3 Nachkomma-Stellen genauso angezeigt wie erwartet:
0,000

Diagramm


Die Tabellen-Kalkulation bietet für technische Daten nur den Typ 'XY-Diagramm' an. Alle anderen Typen sind für den kommerziellen Bereich vorgesehen, nicht portabel oder aus anderen Gründen nur bedingt verwendbar.
Vermeiden sie zur Darstellung technischer Daten insbesondere den Typ 'Linien-Diagramm' !


Legende

Die erste Roh-Fassung des Diagramms erfordert einige Korrekturen:

Doppel-Klicken sie das Diagramm: Zusätzlich zu den 8 Anfass-Punkten wird eine graue Umrahmung angezeigt.

Nun ist mit RechtsKlick das Kontext-Menü Datenbereiche verfügbar: Markieren sie Datenbereich Name und geben sie in das Feld Bereich für Name den Text "Kreis" ein.
In der Legende wird nun der Kreis korrekt angegeben.



Um Höhe oder Breite eines Diagramms zu ändern, wird es (1mal) markiert. Danach kann man die Dimensionen durch Ziehen mit der Maus an jedem der 8 Anfass-Punkte beliebig einstellen.



Im oben gezeigten ↑ Live-Beispiel sind die Achsen auf die Werte -1...x...+1 bzw. -1...y...+1 festgelegt. Nur bei festgelegter Skalierung werden die Proportionen (Verhältnis x/y) garantiert richtig angezeigt.

Die Festlegung der Skalen hat allerdings auch Nachteile: Wenn Teile der Grafik außerhalb der Skalen fallen, dann werden sie nicht angezeigt.
Im ↑ Live-Beispiel ist eine Verschiebung des Mittelpunkts nicht vorgesehen, weil die Grafik dann zumindest teilweise unsichtbar wäre.



Damit werden die Koordinaten der beiden Endpunkte des Vektors in die Hilfs-Tabelle kopiert.

Die Position der Hilfs-Tabelle ist so gewählt, dass man nach ihrer Programmierung die Grafik darüberschieben kann. Damit kann man eine Verunsicherung von AnwenderInnen verhindern, die den Sinn dieser Hilfs-Tabelle evtl. nicht verstehen.


Die Vektor-Linie wird nun angezeigt. Sie muss noch passend formatiert werden:
Doppelklick auf das Diagramm, RechtsKlick auf die Vektor-Linie, RechtsKlick und Menü Datenreihe formatieren
Menü Symbol / Auswahl / Symbole
Wählen sie ein Symbol aus der Liste, z.B. (wie im Live-Beispiel) einen kleinen Kreis.
Formatieren sie die Linie mit Linien-Eigenschaften so wie gewünscht.
Der Richtungs-Vektor wird angezeigt und folgt der Eingabe des Winkels in Zelle B5


Dazu trägt man die Koordinaten der Linien-Endpunkte in eine weitere Hilfs-Tabelle ein und zeigt sie als zusätzliche Datenreihen im Diagramm an.

Bedienungs-Elemente



Beim anschließenden Test sollte man mit dem Regler in Zelle B6 Werte 0...360 einstellen können.
Umgekehrt sollte der Regler bei manueller Eingabe des Winkels in Zelle B6 die passende Position annehmen.

An diesem Punkt ist das Beispiel bereits recht gut verwendbar: Die Qualität entspricht einem guten Amateur-Niveau.



Wenn die beiden Optionsschalter korrekt funktionieren, dann wird ihre Verknüpfte Zelle (hier B6) zur Berechnung der XY-Koordinaten verwendet.

Die bisher verwendeten Formeln:
C11 = $B$3 + $B$2 * COS($B11)
D11 = $B$4 + $B$2 * SIN($B11)
werden mit einer Bedingten Verzweigung ergänzt:
C11 = $B$3 + $B$2 * WENN(WERT($B$6)=1; COS($B11); SIN($B11))
D11 = $B$4 + $B$2 * WENN(WERT($B$6)=1; SIN($B11); COS($B11))
Der erste Teil der Formel bleibt gleich, je nach Option werden danach die trigonometrischen Funktionen SIN() oder COS() verwendet.

Damit funktioniert das Beispiel bereits so ähnlich wie das oben vorgestellte ↑ Live-Beispiel.
Die Formeln der Kreis-Linie können gleich bleiben, weil eine volle Kreis-Linie unabhängig vom verwendeten Winkel-Modus gleich aussieht.

Professionalisierung



Der Schutz aller berechneten Zellen ist sinnvoll, er muss jedoch für alle Eingabe-Zellen abgeschaltet werden.
Dazu wird die betreffende Zelle markiert, nach RechtsKlick verwendet man Menü Zellen formatieren / Zellschutz und entfernt die ✔ Markierung.
Wenn man danach den Schutz aktiviert, kann man trotzdem den Wert dieser Eingabe-Zelle ändern.

Der Schutz wird nicht nur für die manuell zu verwendenden Eingabe-Zellen aufgehoben, sondern auch für alle Verknüpften Zellen von Kontroll-Elementen. Das ist zwar in den aktuellen Versionen von LibreOffice nicht mehr notwendig, jedoch für andere Programme und Versionen sinnvoll.

Nach der Aufhebung des Schutzes für Eingabe-Zellen und Aktivierung des Schutzes ist die Anwendung wesentlich sicherer: Die unabsichtliche oder unbefugte Änderung der Formeln ist nicht mehr möglich.



Geben sie im Register Fehlermeldung immer eine kurze Erklärung und den erlaubten Eingabe-Bereich an:
Die AnwenderInnen müssen erfahren, dass ihre Eingabe fehlerhaft war, und einen Tipp erhalten, welche Werte zulässig sind.

In Kombination mit dem Zell-Schutz ist das Tabellen-Kalkulations-Programm nun auch nach professionellen Maßstäben sicher:
Man kann nur zulässige (sinnvolle) Werte eingeben und keine Formel verändern.



Ein Kommentar ist ein Text, der nur beim Überfahren einer Zelle mit der Maus angezeigt wird:
Markieren sie eine Zelle und verwenden sie nach RechtsKlick das Menü Kommentar einfügen.
Schreiben sie einen erklärenden Text in das gelb unterlegte Feld. Der Kommentar ist sofort nach dem Verlassen des Eingabe-Feldes verwendbar:
Eine kommentierte Zelle wird mit einer kleinen roten Markierung in der rechten pberen Ecke der Zelle angezeigt. Beim Überfahren der Zelle wird der Kommentar geöffnet.

Mit dem gleichen Menü kann man den Kommentar-Text ändern.
Mit Menü Kommentar anzeigen bleibt der Kommentar dauerhaft geöffnet: In diesem Fall verwendet man jedoch besser ein Legenden-Element.

Die Symbolleiste Zeichnen bietet einige Symbole, mit denen man das Verständnis verbessern kann, z.B. Block-Pfeile, die man beliebig vergrößern, verschieben, drehen oder färben kann.

Mit sinnvollen Kommentaren sollte jeder Zweifel über die Anwendung eines Kalkulations-Programms ausgeschlossen sein.

Kreis-Beispiel 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 Kreis-Beispiel ist vollständig autonom, d.h. sie verwendet keine anderen Dokumente (z.B. Javascript-Bibliotheken, CSS-Stylesheets).



<iframe src="kreis_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 Kreis-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.



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.



Die Bewegung der SVG-Elemente ist nur teilweise so programmiert wie für die Tabelle-Kalkulation notwendig ist:

SVG bietet die Methode der Rotation. Daher werden 2 Elemente (der berechnete Punkt und der Vektor vom Mittelpunkt dorthin) nicht mit den oben angegebenen Parameter-Formeln berechnet, sondern wesentlich einfacher und schneller um den Mittelpunkt rotiert.



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.

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.