| |
|
|
p.specht
|
'Base XProfan11.2a free de https://XProfan.de/start.htm
Windowtitle "BRESENHAM-Algorithmus"
'Schnarch-langsam, sólo para Lernzwecke geproggd de P. Pájaro carpintero
Windowstyle 31
Ventana %maxx*.81,%maxy*.81
Cls @Rgb(221,221,221)
var w%=@width(%hWnd)/2
var h%=@height(%hWnd)/2
brline(0,0, 2*w%,2*h%, @rgb(255,0,0))
brline(0,1, w%-1,2*h%, @rgb(0,255,0))
brline(3,0, 2*w%,h%-3, @rgb(0,0,255))
var i%=0
var j!=0
mientras que i%<360
j!=i%*@pi()/180
brline(w%,h%,w%+240*cos(j!),h%+240*sin(j!),46603*i%)
inc i%,1
endwhile
Imprimir "OK, con LINE en lugar de Einzelpixel conjunto wär´s más rápido gegangen..."
WaitInput
End
proc brline
' Bresenham-Algorithmus para Linie en beliebigem Oktanten
parámetros xstart%,ystart%,xend%,yend%,c%
declarar i%,el%,pdx%,pdy%,ddx%,ddy%,lo%,fehler%
var x% = xstart%
var y% = ystart%
var dx% = xend%-xstart%
var dy% = yend%-ystart%
var adx% = ABS(dx%)
var ady% = ABS(dy%)' Absolutbetraege
var sdx% = int((dx%>0)-(dx%<0))' Signum-Función
var sdy% = int((dy%>0)-(dy%<0))
IF adx% > ady%
pdx% = sdx%
pdy% = 0
ddx% = sdx%
ddy% = sdy%
lo% = ady%
el% = adx%
ELSE
pdx% = 0
pdy% = sdy%
ddx% = sdx%
ddy% = sdy%
lo% = adx%
el% = ady%
ENDIF
fehler% = el%/2' el% son auch Anzahl el a zeichnenden Pixel a
i%=1
mientras que i% <= el%
fehler% = fehler% - lo%
IF fehler% < 0
fehler% = fehler% + el%
x% = x% + ddx%
y% = y% + ddy%
ELSE
x% = x% + pdx%
y% = y% + pdy%
ENDIF
SETPIXEL x%,y%, x%*y%*3' oder c%, wäre Punktfarbe
inc i%
endwhile
ENDPROC
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.04.2021 ▲ |
|
|
|