| |
|
|
p.specht
| Vorsicht, schnarchlangsam como sólo Principio-Demo:
Título de la ventana "BRESENHAM-ELLIPSEN IN HORIZONTALLAGE"
' Q: https://de.wikipedia.org/wiki/Bresenham-Algorithmus
' Auf XProfan gequält de P. Pájaro carpintero 2012-06. Demo, no Gewähr!
Ventana de Estilo 16 | 64
Font 2:randomize
Ventana 0,0 - %maxx,%maxy
var xm&=%maxx\2 : var ym&=%maxy\2:var cnt&= 0
var a&=300:var b&=160:var co&=rgb(255,0,0)
var bco&= rgb(210,210,210)+rgb(rnd(46),rnd(46),rnd(46))
Begin:
inc cnt&:ifnot cnt& mod 200:cls bco&:imprimir " Abbruch con ESC ";:endif
BrEllipse 2*xm&*rnd(),2*ym&*rnd(), a&*rnd(),b&*rnd(), rnd(8^8)
WaitInput 100
caso %key=27:End
goto "Begin"
proc BrEllipse : parámetros xm&, ym&, a&, b&,co&
var dx& = 0: var dy& = b&' en el I. Quadranten de links oben después de rechts unten
var a2! = a&*a&: var b2! = b&*b&
var err! = b2!-(2*b&-1)*a2! : var e2!=0' Fehler en el 1. Schritt
Repeat
setPixel xm&+dx&, ym&-dy&, co&' I. Quadrant
setPixel xm&-dx&, ym&-dy&, co&' II. Quadrant
setPixel xm&-dx&, ym&+dy&,co&'III. Quadrant
setPixel xm&+dx&, ym&+dy&, co&'IV. Quadrant
e2! = 2*err!
if e2! < ((2*dx&+1)*b2!) : inc dx& : err! = err! + (2*dx&+1)*b2! : endif
if e2! > (-(2*dy&-1)*a2!) : dec dy&: err! = err! - (2*dy& -1)*a2! : endif
Until dy& < 0
Mientras que dx& <= a&
inc dx&' Gegen el fehlerhaften Abbruch en flachen Ellipsen con b=1:
setPixel xm&+dx&, ym&,co&' -> Spitze el Ellipse vollenden
setPixel xm&-dx&, ym&,co&
EndWhile
ENDPROC
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 25.04.2021 ▲ |
|
|
|