{ Para todos aquellos de vosotros interesados en fractales, aqui teneis un programilla desde un fuente en Modula-2, que dibuja un fractal Mandelbrot. Solo un problema: Si tu ordenador no tiene coprocesador matematico, el programa se ejecutara "un pelin" lento :). Prueba a modificar todas las constantes, obtendras raros resultados :).} {$U-} { Se supone que se usa para Interrumpir Durante el Programa } Program Mandelbrot; {Usando numeros reales. Para TP 6.0 y superior } Type Filestr = String[14]; Const Colours=15; {Numero de colores que tendra la imagen. } Width=640; {Ancho de la imagen. } Height=400; {Alto de la imagen. } Limit=8.0; {HAsta cuando calculamos. } XRMin=-2.0; {Limite izquierdo del fractal. } XRMax=1.0; {Limite derecho del fractal. } YRMin=-1.3; {Limite inferior del fractal. } YRMax=1.3; {Limite superior del fractal. } Bufsize = 128; Var XPos,YPos:Integer; Coldata : array[0..16000] of byte absolute $4000; Procedure Load(filename:Filestr); var recsread : integer; source : file; begin assign(source,filename); reset(source); repeat blockread(source,Coldata,bufsize,recsread); until recsread=0; close(source); end; Procedure mode(mo:byte); begin Inline($3A/mo/ $CD/$9B/$BE/ $0E/$BC); end; Procedure grapen(col:byte); begin Inline($3A/col/ $CD/$9B/$BE/ $DE/$BB); end; Procedure Plot(Xpos, Ypos : integer); begin Inline($2A/ypos/ $ED/$5B/xpos/ $CD/$9B/$BE/ $EA/$BB); end; Procedure drawblt(xpos2, ypos2, count, hlt : integer); begin repeat begin xpos2:=0; repeat begin grapen(Coldata[count]); plot(Xpos2, Ypos2); xpos2:=xpos2+2; count:=succ(count); end; until (xpos2=width); ypos2:=ypos2-2; end; until (ypos2=hlt); end; Begin mode(1); load('mandel1.dat'); drawblt(0,398,0,298); load('mandel2.dat'); drawblt(0,298,0,198); load('mandel3.dat'); drawblt(0,198,0,098); load('mandel4.dat'); drawblt(0,098,0,0); repeat until keypressed; mode(2); End.