Program GraphicsStuff; Uses Crt,Graph; var A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V:INTEGER; C1, C2: REAL; X, Y, Z: REAL; X0, Y0, Z0: REAL; X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3: REAL; CHECK: REAL; SCALE: REAL; NUMIT: INTEGER; CHA: CHAR; STEP, COL: INTEGER; CT: ARRAY [1..2, 1..8] OF REAL; CHOICE, CHA1, CHA2, CHA3: CHAR; TEMP, TEMP1, TEMPX, TEMPY: REAL; Procedure Graphics; Var Graphdriver,Graphmode,Errorcode:Integer; Begin Graphdriver:=Detect; Initgraph(graphdriver,Graphmode,' '); Errorcode:=Graphresult; If Errorcode<>Grok then Halt(1); End; PROCEDURE CLS; BEGIN CLEARVIEWPORT; END; FUNCTION NEWX(XOLD: REAL; YOLD: REAL; CNST: REAL; WHICHONE: INTEGER): REAL; BEGIN IF WHICHONE = 1 THEN BEGIN NEWX := (XOLD*XOLD) - (YOLD*YOLD) + CNST; END; IF WHICHONE = 2 THEN BEGIN NEWX := (XOLD*XOLD*XOLD) - 3*XOLD*YOLD*YOLD + CNST; END; END; FUNCTION NEWY(XOLD: REAL; YOLD: REAL; CNST: REAL; WHICHONE: INTEGER): REAL; BEGIN IF WHICHONE = 1 THEN BEGIN NEWY := 2*XOLD*YOLD + CNST; END; IF WHICHONE = 2 THEN BEGIN NEWY := (-1*YOLD*YOLD*YOLD) + 3*XOLD*XOLD*YOLD + CNST; END; END; FUNCTION REALTOSTR(NN: REAL; WIDTH, DECIMALS:INTEGER): STRING; VAR SS: STRING; BEGIN STR(NN:WIDTH:DECIMALS,SS); REALTOSTR := SS; END; BEGIN FOR P := 1 TO 8 DO BEGIN CT[1, P] := 0.0; CT[2, P] := 0.0; END; WRITELN('PRESS 1 TO ENTER A FUNCTION FROM POPULAR LIST'); WRITELN('ELSE PRESS ANY KEY TO DEFINE POLYNOMIAL'); WRITELN; WRITELN; WRITE('ENTER CHOICE:'); READLN(CHOICE); IF CHOICE = '1' THEN BEGIN WRITELN('ENTER --2-- FOR F(Z) = Z^2 + Z'); WRITELN('ENTER --3-- FOR F(Z) = Z^3 + Z'); WRITELN('ENTER --4-- FOR F(Z) = Z^4 + Z'); WRITELN('ENTER --5-- FOR F(Z) = Z^5 + Z'); WRITELN('ENTER --6-- FOR F(Z) = Z^6 + Z'); WRITELN('ENTER --7-- FOR F(Z) = Z^7 + Z'); WRITELN('ENTER --A-- FOR F(Z) = Z^3 + Z^2 + Z'); WRITELN('ENTER --B-- FOR F(Z) = Z^4 + Z^2 + Z'); WRITELN('ENTER --C-- FOR F(Z) = Z^4 + Z^3 + Z^2 + Z'); WRITELN; WRITELN; WRITE('ENTER CHOICE:'); READLN(CHA); CASE CHA OF '2': BEGIN CT[1, 1] := 1; CT[1, 2] := 1; END; '3': BEGIN CT[1, 1] := 1; CT[1, 3] := 1; END; '4': BEGIN CT[1, 1] := 1; CT[1, 4] := 1; END; '5': BEGIN CT[1, 1] := 1; CT[1, 5] := 1; END; '6': BEGIN CT[1, 1] := 1; CT[1, 6] := 1; END; '7': BEGIN CT[1, 1] := 1; CT[1, 7] := 1; END; 'A': BEGIN CT[1, 1] := 1; CT[1, 3] := 1; CT[1, 2] := 1; END; 'B': BEGIN CT[1, 1] := 1; CT[1, 4] := 1; CT[1, 2] := 1; END; 'C': BEGIN CT[1, 1] := 1; CT[1, 4] := 1; CT[1, 3] := 1; CT[1, 2] := 1; END; ELSE END; END; READLN(CHOICE); GRAPHICS; { FLOODFILL(1,10,RED); SPHERE; } X0 := 0.0; Y0 := 0.0; STEP := 4; NUMIT := 64; C1 := 1.0; C2 := -1.0; SCALE := 0.01; CHECK := 16.0*1000.0; F := 1; WHILE F < 2 DO BEGIN FOR A:= -200 TO 200 DO BEGIN FOR B:= 200 DOWNTO -200 DO BEGIN X := X0 + (A*1.0*SCALE); Y := Y0 + (B*1.0*SCALE); D := 1; C1 := X; C2 := Y; WHILE D <= NUMIT DO BEGIN { X := (X*X) - (Y*Y) + C1; Y := (2.0*X*Y) + C2; } TEMPX := X; X := NEWX(X, Y, C1, 1); Y := NEWY(TEMPX, Y, C2, 1); Z := (X*X) + (Y*Y); E := D; {SAVES VALUE OF D} IF Z >= CHECK THEN D := NUMIT + 10; D := D + 1; END; IF (E > 0) AND (E <= 1*STEP) THEN COL:= 1; IF (E > 1*STEP) AND (E <= 2*STEP) THEN COL:= 2; IF (E > 2*STEP) AND (E <= 3*STEP) THEN COL:= 3; IF (E > 3*STEP) AND (E <= 4*STEP) THEN COL:= 4; IF (E > 4*STEP) AND (E <= 5*STEP) THEN COL:= 5; IF (E > 5*STEP) AND (E <= 6*STEP) THEN COL:= 6; IF (E > 6*STEP) AND (E <= 7*STEP) THEN COL:= 7; IF (E > 7*STEP) AND (E <= 8*STEP) THEN COL:= 8; IF (E > 8*STEP) AND (E <= 9*STEP) THEN COL:= 9; IF (E > 9*STEP) AND (E <= 10*STEP) THEN COL:= 10; IF (E > 10*STEP) AND (E <= 11*STEP) THEN COL:= 11; IF (E > 11*STEP) AND (E <= 12*STEP) THEN COL:= 12; IF (E > 12*STEP) AND (E <= 13*STEP) THEN COL:= 13; IF (E > 13*STEP) AND (E <= 14*STEP) THEN COL:= 14; IF (E > 14*STEP) THEN COL:= 14; IF Z >= CHECK THEN PUTPIXEL(A+201, 201 - B, COL) ELSE PUTPIXEL(A+201, 201 - B, 0); END; END; CHA := 'R'; OUTTEXTXY(404, 1, '+200'); SETTEXTSTYLE(0,1,1); OUTTEXTXY(10, 404, '-200'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 50, '+150');SETTEXTSTYLE(0,1,1); OUTTEXTXY(50, 404, '-150'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 100, '+100');SETTEXTSTYLE(0,1,1); OUTTEXTXY(100, 404, '-100'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 150, '+ 50');SETTEXTSTYLE(0,1,1); OUTTEXTXY(150, 404, '- 50'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 200, '0000');SETTEXTSTYLE(0,1,1); OUTTEXTXY(200, 404, '0000'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 250, '- 50');SETTEXTSTYLE(0,1,1); OUTTEXTXY(250, 404, '+ 50'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 300, '-100');SETTEXTSTYLE(0,1,1); OUTTEXTXY(300, 404, '+100'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 350, '-150');SETTEXTSTYLE(0,1,1); OUTTEXTXY(350, 404, '+150'); SETTEXTSTYLE(0,0,1); OUTTEXTXY(404, 400, '-200');SETTEXTSTYLE(0,1,1); OUTTEXTXY(400, 404, '+200'); SETTEXTSTYLE(0,0,1); SETCOLOR(1); OUTTEXTXY(500, 1, '*** FOR (0,4]'); SETCOLOR(2); OUTTEXTXY(500, 10, '*** FOR (4,8]'); SETCOLOR(3); OUTTEXTXY(500, 19, '*** FOR (8,12]'); SETCOLOR(4); OUTTEXTXY(500, 28, '*** FOR (12,16]'); SETCOLOR(5); OUTTEXTXY(500, 37, '*** FOR (16,20]'); SETCOLOR(6); OUTTEXTXY(500, 46, '*** FOR (20,24]'); SETCOLOR(7); OUTTEXTXY(500, 55, '*** FOR (24,28]'); SETCOLOR(8); OUTTEXTXY(500, 64, '*** FOR (28,32]'); SETCOLOR(9); OUTTEXTXY(500, 73, '*** FOR (32,36]'); SETCOLOR(10); OUTTEXTXY(500, 82, '*** FOR (36,40]'); SETCOLOR(11); OUTTEXTXY(500, 91, '*** FOR (36,40]'); SETCOLOR(12); OUTTEXTXY(500,100, '*** FOR (40,44]'); SETCOLOR(13); OUTTEXTXY(500,109, '*** FOR (44,48]'); SETCOLOR(14); OUTTEXTXY(500,118, '*** FOR (48,52]'); SETCOLOR(RED); OUTTEXTXY(500,200, ' Xo = '+REALTOSTR(X0, 3, 3)); OUTTEXTXY(500,209, ' Yo = '+REALTOSTR(Y0, 3, 3)); OUTTEXTXY(480,218, 'SCALE = '+REALTOSTR(SCALE, 3, 8)); OUTTEXTXY(480,227, 'Xo-MIN:'+REALTOSTR(X0-200*SCALE, 3, 8)); OUTTEXTXY(480,236, 'Xo-MAX:'+REALTOSTR(X0+200*SCALE, 3, 8)); OUTTEXTXY(480,245, 'Yo-MIN:'+REALTOSTR(Y0-200*SCALE, 3, 8)); OUTTEXTXY(480,254, 'Yo-MAX:'+REALTOSTR(Y0+200*SCALE, 3, 8)); COL :=RANDOM(14) + 1; SETCOLOR(COL); TEMP := SCALE; FOR G := 1 TO 54 DO FOR H:= 1 TO 200 DO PUTPIXEL(460+H, 310+G,6); SETCOLOR(RED); OUTTEXTXY(480, 320, 'Xo, Yo, SCALE'); GOTOXY(60, 22); READLN(TEMPX, TEMPY, SCALE); SETCOLOR(BLACK); OUTTEXTXY(500,200, ' Xo = '+REALTOSTR(X0, 3, 3)); OUTTEXTXY(500,209, ' Yo = '+REALTOSTR(Y0, 3, 3)); OUTTEXTXY(480,218, 'SCALE = '+REALTOSTR(TEMP, 3, 8)); OUTTEXTXY(480,227, 'Xo-MIN:'+REALTOSTR(X0-200*TEMP, 3, 8)); OUTTEXTXY(480,236, 'Xo-MAX:'+REALTOSTR(X0+200*TEMP, 3, 8)); OUTTEXTXY(480,245, 'Yo-MIN:'+REALTOSTR(Y0-200*TEMP, 3, 8)); OUTTEXTXY(480,254, 'Yo-MAX:'+REALTOSTR(Y0+200*TEMP, 3, 8)); X0 := X0 + (TEMPX*TEMP); Y0 := Y0 + (TEMPY*TEMP); SETCOLOR(RED); OUTTEXTXY(500,200, ' Xo = '+REALTOSTR(X0, 3, 3)); OUTTEXTXY(500,209, ' Yo = '+REALTOSTR(Y0, 3, 3)); OUTTEXTXY(480,218, 'SCALE = '+REALTOSTR(SCALE, 3, 8)); OUTTEXTXY(480,227, 'Xo-MIN:'+REALTOSTR(X0-200*SCALE, 3, 8)); OUTTEXTXY(480,236, 'Xo-MAX:'+REALTOSTR(X0+200*SCALE, 3, 8)); OUTTEXTXY(480,245, 'Yo-MIN:'+REALTOSTR(Y0-200*SCALE, 3, 8)); OUTTEXTXY(480,254, 'Yo-MAX:'+REALTOSTR(Y0+200*SCALE, 3, 8)); IF SCALE <= 0 THEN F := 4; END; END.