Kreissegment zeichnen

Gast #363744
Lesenswert?
• ▲
▼
Ich hab sowas recht aufwendig im Rahmen meiner Diplomarbeit gemacht.
Fertige Routinen oder Algorithmen, die wirklich beliebige Kreissegmente
zeichnen und auch füllen, habe ich leider nicht im Netz gefunden. Mein
Ansatz ist, mit Tabellen für den Kreisbogen und der Kreissekante zu
arbeiten. Dabei sind einige kniffelige Spezialfälle zu beachten.

Wenn man nicht füllen möchte, ist es zwar etwas einfacher, aber auch da
fand ich persönlich Tabellen recht flott und nützlich. Und man braucht
tatsächlich keinen Sinus und Cosinus dafür. Man rechne ein Achtel Kreis
nach Bresenham aus, spiegele diesen auf ein Viertel, beachte hierbei das
45° Problem, spiegele dieses Ganze auf die Hälfte und dann auf den
vollen Kreis. Das geht ziemlich schnell. Und die Sekanten-Schnittpunkte
kann man sich dann durch Umrechnung von 360° auf die Anzahl der
tatsächlichen Bogenpunkte leicht errechnen. Am Ende zeichnet man alle
Bogenpunkte des Segments von Start bis Ende und die dazugehörige
Sekante. Fertig.

Natürlich kann man jetzt einwenden, dass diese Vorgehensweise zuviel
Speicher verbraucht und recht unalgorithmisch ist, aber ich hatte an
meinen AT90CAN128 512KB SRAM extern drangepackt und diesen kaum
genutzt. In der Nachbetrachtung wäre es auch mit den internen 4KB
gegangen, aber meine Arbeit leistet ja noch einiges mehr.
Gast #363745
Lesenswert?
• ▲
▼
Zu Urzeiten der Homecomputer habe ich mal einen schnellen Algorithmus
gesehen, der das irgendwie mit komplexen Zahlen realisiert hat. Wenn
ich recht erinnere, entspricht eine Multiplikation mit einer bestimmten
komplexen Zahl (vom Betrag eins) einem Drehoperator um einen festen
Winkel. Kann man komponentenweise mit Festkomma ausrechnen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.