Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
85
Task/Mandelbrot-set/Simula/mandelbrot-set.simula
Normal file
85
Task/Mandelbrot-set/Simula/mandelbrot-set.simula
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
BEGIN
|
||||
REAL XCENTRE, YCENTRE, WIDTH, RMAX, XOFFSET, YOFFSET, PIXELSIZE;
|
||||
INTEGER N, IMAX, JMAX, COLOURMAX;
|
||||
TEXT FILENAME;
|
||||
|
||||
CLASS COMPLEX(RE,IM); REAL RE,IM;;
|
||||
|
||||
REF(COMPLEX) PROCEDURE ADD(A,B); REF(COMPLEX) A,B;
|
||||
ADD :- NEW COMPLEX(A.RE + B.RE, A.IM + B.IM);
|
||||
|
||||
REF(COMPLEX) PROCEDURE SUB(A,B); REF(COMPLEX) A,B;
|
||||
SUB :- NEW COMPLEX(A.RE - B.RE, A.IM - B.IM);
|
||||
|
||||
REF(COMPLEX) PROCEDURE MUL(A,B); REF(COMPLEX) A,B;
|
||||
MUL :- NEW COMPLEX(A.RE * B.RE - A.IM * B.IM,
|
||||
A.RE * B.IM + A.IM * B.RE);
|
||||
|
||||
REF(COMPLEX) PROCEDURE DIV(A,B); REF(COMPLEX) A,B;
|
||||
BEGIN
|
||||
REAL TMP;
|
||||
TMP := B.RE * B.RE + B.IM * B.IM;
|
||||
DIV :- NEW COMPLEX((A.RE * B.RE + A.IM * B.IM) / TMP,
|
||||
(A.IM * B.RE - A.RE * B.IM) / TMP);
|
||||
END DIV;
|
||||
|
||||
REF(COMPLEX) PROCEDURE RECTANGULAR(RE,IM); REAL RE,IM;
|
||||
RECTANGULAR :- NEW COMPLEX(RE,IM);
|
||||
|
||||
REAL PROCEDURE MAGNITUDE(CX); REF(COMPLEX) CX;
|
||||
MAGNITUDE := SQRT(CX.RE**2 + CX.IM**2);
|
||||
|
||||
BOOLEAN PROCEDURE INSIDEP(Z); REF(COMPLEX) Z;
|
||||
BEGIN
|
||||
BOOLEAN PROCEDURE INSIDE(Z0,Z,N); REAL N; REF(COMPLEX) Z,Z0;
|
||||
INSIDE := MAGNITUDE(Z) < RMAX
|
||||
AND THEN N = 0 OR ELSE INSIDE(Z0, ADD(Z0,MUL(Z,Z)), N-1);
|
||||
INSIDEP := INSIDE(Z, NEW COMPLEX(0,0), N);
|
||||
END INSIDEP;
|
||||
|
||||
INTEGER PROCEDURE BOOL2INT(B); BOOLEAN B;
|
||||
BOOL2INT := IF B THEN COLOURMAX ELSE 0;
|
||||
|
||||
INTEGER PROCEDURE PIXEL(I,J); INTEGER I,J;
|
||||
PIXEL := BOOL2INT(INSIDEP(RECTANGULAR(XOFFSET + PIXELSIZE * I,
|
||||
YOFFSET - PIXELSIZE * J)));
|
||||
PROCEDURE PLOT;
|
||||
BEGIN
|
||||
REF (OUTFILE) OUTF;
|
||||
INTEGER J,I;
|
||||
OUTF :- NEW OUTFILE(FILENAME);
|
||||
OUTF.OPEN(BLANKS(132));
|
||||
OUTF.OUTTEXT("P2"); OUTF.OUTIMAGE;
|
||||
OUTF.OUTINT(IMAX,0); OUTF.OUTIMAGE;
|
||||
OUTF.OUTINT(JMAX,0); OUTF.OUTIMAGE;
|
||||
OUTF.OUTINT(COLOURMAX,0); OUTF.OUTIMAGE;
|
||||
FOR J := 1 STEP 1 UNTIL JMAX DO
|
||||
BEGIN
|
||||
FOR I := 1 STEP 1 UNTIL IMAX DO
|
||||
BEGIN
|
||||
OUTF.OUTINT(PIXEL(I,J),0);
|
||||
OUTF.OUTIMAGE;
|
||||
END;
|
||||
END;
|
||||
OUTF.CLOSE;
|
||||
END PLOT;
|
||||
|
||||
XCENTRE := -0.5;
|
||||
YCENTRE := 0.0;
|
||||
WIDTH := 4.0;
|
||||
IMAX := 800;
|
||||
JMAX := 600;
|
||||
N := 100;
|
||||
RMAX := 2.0;
|
||||
FILENAME :- "out.pgm";
|
||||
COLOURMAX := 255;
|
||||
PIXELSIZE := WIDTH / IMAX;
|
||||
XOFFSET := XCENTRE - (0.5 * PIXELSIZE * (IMAX + 1));
|
||||
YOFFSET := YCENTRE + (0.5 * PIXELSIZE * (JMAX + 1));
|
||||
|
||||
OUTTEXT("OUTPUT WILL BE WRITTEN TO ");
|
||||
OUTTEXT(FILENAME);
|
||||
OUTIMAGE;
|
||||
|
||||
PLOT;
|
||||
END;
|
||||
Loading…
Add table
Add a link
Reference in a new issue