mikrocontroller.net

Forum: Compiler & IDEs Kreissegment zeichnen


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Gibt es eine (schnelle) Funktion, mit der man Kreissegmente zwischen
zwei Winkeln zeichnen kann, ohne dabei sin/cos zu verwenden? Ähnlich
wie man mit Algorithmen nach Bresenham ganze Kreise zeichnet?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich nach Bresenham gugele, finde ich auch Referenzen auf
Kreis- und Ellipsen-Funktionen.

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bresenham macht soweit ich weiß nur 45 Grad Segmente, den Rest muß man
mit Symmetrie erreichen

Autor: Birger* (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte ja vieleicht auch sin mit einer Tayler Reihe
abbilden von 3 Gliedern vieleicht geht das schneller?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.