[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{
To try out the program, some complex constants you can
use are -1, -0.1+0.8i, 0.3-0.5i, -1.139+0.238i. ie, when
asked for the real part, enter 0.3. For the imaginary,
enter -.5 }
program julia;
{$N+,E+}
uses crt;
Type Real = double;
var cx, cy, xo, yo, x1, y1 : real;
mx, my, a, b, i, orb : word;
label XXX;
procedure pset ( rx, ry: real; c:byte );
var a, x, y :word;
begin
x := round(rx);
y := round(ry);
a := 320* pred(y) + x;
mem[$A000:A] := c
end;
begin
write('Real part: ');
readln(CX);
write('Imaginary part: ');
readln(CY);
asm
mov ax, $13
int 10h
end;
MX := 319; { ' the box we want to plot on the screen }
MY := 199;
FOR A := 1 TO MX do {'X screen coordinate}
FOR B := 1 TO MY do {'Y screen coordinate }
begin
XO := -2 + A / (MX / 4); {'X complex plane coordinate}
YO := 2 - B / (MY / 4); {'Y complex plane coordinate}
Orb := 0;
FOR I := 1 TO 255 do {'iterations for 255 colors}
begin
X1 := XO * XO - YO * YO + CX;
Y1 := 2 * XO * YO + CY;
IF X1 * X1 + Y1 * Y1 > 4.0 THEN {'orbit escapes, plot it}
begin
Orb := I;
GOTO XXX;
END;
XO := X1;
YO := Y1;
end;
XXX:
PSET (A, B, Orb); { 'plot orbit}
end;
readln;
textmode(lastmode);
end.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]