Hi Gunnar,
danke! Ich wusste noch aus meiner Schülerzeit (damals, als wir Programmieren mit Turbo Pascal noch cool fanden), dass es diesen Algorithmus gibt, habe ihn aber mehrmals erfolglos gesucht. Was mir jedoch gerade auffällt:
REM Bresenham-Algorithmus für einen Achtelkreis in Pseudo-Basic
REM gegeben seien r, xmittel, ymittel
REM Initialisierungen für den ersten Oktanten
r2 = r*r : REM einzige Multiplikation
[...]
REM Achtung, Gefahr von Rundungsfehlern:
yend = INT(SQR(r2)/2) : REM einzige unvermeidbare höhere Funktion
>
> Könnte die letztgenannte Zeile nicht auch
>
> ~~~
> yend = INT(r/2)
>
lauten? r wird ja bis dahin nicht verändert. Was übersehe ich?
Nein, da muss schon sqr(r2/2) hin, das ist nämlich die y-Koordinate, die zu einem 45-Grad-Kreisbogen (1 Oktant!) gehört. Dort ist x=y, also nach Kreisgleichung x2+y2=r2=2y2, und daraus ergibt sich eben y=sqr(r2/2) und nicht r/2. Man kann auch Pythagoras erwähnen, hier für die Diagonale in einem Quadrat.
Peter