Forum: Compiler & IDEs Kreissegment zeichnen


von Florian (Gast)


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?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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

von Christoph Kessler (Gast)


Lesenswert?

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

von Birger* (Gast)


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.

von Jörg (Gast)


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.

von micro1 (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.