/* * PLOTTING DEMO PROGRAMS. PLOT SUPERIMPOSED SERPINSKI * CURVES OF ORDER 1 .. N. PROGRAM ADAPTED FREELY FROM * "ALGORITHMS + DATA STRUCTURES = PROGRAMS", * NIKLUAS WIRTH, PRENTICE-HALL INC., * ENGLEWODD CLIFFS, NEW JERSEY * * ADAPTATION BY ANDREW LEUBKER, CARLETON COLLEGE, * NORTHFIELD, MN. 55057. */ /*PLOP SIERPINSKI CURVES OF ORDERS 1 TO N*/ CONST OFF=100; H0=512; VAR I,H,N,X,Y,X0,Y0,OLDX,OLDY: INTEGER; PROCEDURE SETPLOP; BEGIN MOVE(X+OFF,Y+OFF) END; PROCEDURE PLOP; BEGIN DRAW(X+OFF,Y+OFF); OLDX:=X; OLDY:=Y END; PROCEDURE STARPLOP; BEGIN INITPLOT; MOVE(0,0) END; PROCEDURE A(I: INTEGER); FORWARD; PROCEDURE B(I:INTEGER); FORWARD; PROCEDURE C(I:INTEGER); FORWARD; PROCEDURE D(I:INTEGER); FORWARD; PROCEDURE A; BEGIN IF I>0 THEN begin a(I-1); x:=x+h; y:=y-h; PLOP; B(I-1); X:=X+2*H; PLOP; D(I-1); X:=X+H; Y:=Y+H; PLOP; A(I-1) END END; PROCEDURE B; BEGIN IF I>0 THEN BEGIN B(I-1); X:=X-H; Y:=Y-H; PLOP; C(I-1); Y:=Y-2*H; PLOP; A(I-1); X:=X+H; Y:=Y-H; PLOP; B(I-1) END END; PROCEDURE C; BEGIN IF I>0 THEN BEGIN C(I-1); X:=X-H; Y:=Y+H; PLOP; D(I-1); X:=X-2*H; PLOP; B(I-1); X:=X-H; Y:=Y-H; PLOP; C(I-1) END END; PROCEDURE D; BEGIN IF I>0 THEN BEGIN D(I-1); X:=X+H; Y:=Y+H; PLOP; A(I-1); Y:=Y+2*H; PLOP; C(I-1); X:=X-H; Y:=Y+H; PLOP; D(I-1) END END; BEGIN REWRITE(OUTPUT,'TT:'); STARPLOP; REPEAT WRITE('LEVELS? '); READLN(N); IF N<1 THEN WRITE('MUST BE MORE THAN 0... ') UNTIL N>0; ERASE; I:=0; H:=H0 DIV 4; X0:=2*H; Y0:=3*H; REPEAT I:=I+1; X0:=X0-H; H:=H DIV 2; Y0:=Y0+H; X:=X0; Y:=Y0; SETPLOP; A(I); X:=X+H; Y:=Y-H; PLOP; B(I); X:=X-H; Y:=Y-H; PLOP; C(I); X:=X-H; Y:=Y+H; PLOP; D(I); X:=X+H; Y:=Y+H; PLOP; UNTIL I=N; ENDPLOT END.