'=========================================================================== ' Subject: 3D POLYGONS Date: 01-29-96 (17:08) ' Author: Ronny Schwachofer Code: QB, QBasic, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: EGAVGA.ABC '=========================================================================== SCREEN 12 PALETTE 0, 65536 * 63 + 256 * 63 + 63 begin: COLOR 4: LOCATE 26, 1: PRINT "Gebruik `t' om tekst aan en uit te zetten" LOCATE 27, 1: PRINT "Gebruik " + CHR$(26) + " en " + CHR$(27) + " om sneller of langzamer te laten draaien" LOCATE 28, 1: PRINT "Gebruik + en - om hetaantal vlakken te vermeerderen/verminderen" COLOR 15 LINE (1, 1)-(310, 250), 15, B LINE (2, 2)-(309, 249), 15, B LINE (1, 1 + 260)-(310, 310), 15, B LINE (2, 2 + 260)-(309, 311), 15, B LINE (1 + 315, 1)-(310 + 315, 250), 15, B LINE (2 + 315, 2)-(309 + 315, 249), 15, B LINE (1 + 315, 1 + 260)-(310 + 315, 390), 15, B LINE (2 + 315, 2 + 260)-(309 + 315, 391), 15, B LOCATE 1, 3: PRINT " Output 1 " LOCATE 1, 42: PRINT " Output 2 " spiet = 51 hoeveel = 5 REDIM x(1 TO hoeveel * 2) REDIM y(1 TO hoeveel * 2) REDIM xx(1 TO hoeveel * 2) REDIM yy(1 TO hoeveel * 2) FOR i = 1 TO hoeveel x(i) = 0 y(i) = 0 xx(i) = 0 yy(i) = 0 NEXT z = hoeveel + 1 FOR i = 63 TO 0 STEP -1 PALETTE 0, 65536 * i + 256 * i + i NEXT DO FOR n = 0 TO 22 / 3.5 / hoeveel STEP hoeveel / (hoeveel * spiet) IF x$ = CHR$(27) THEN GOTO einde IF x$ = CHR$(0) + CHR$(77) THEN spiet = spiet - 1 IF x$ = CHR$(0) + CHR$(75) THEN spiet = spiet + 1 IF x$ = CHR$(0) + CHR$(80) THEN spiet = 51 IF x$ = "+" THEN hoeveel = hoeveel + 1 IF x$ = "-" THEN hoeveel = hoeveel - 1 IF LCASE$(x$) = "t" AND t$ <> "on" THEN t$ = "on": x$ = "" IF LCASE$(x$) = "t" AND t$ <> "off" THEN t$ = "off": x$ = "" IF spiet < 1 THEN spiet = 1 IF spiet > 150 THEN spiet = 150 IF hoeveel < 1 THEN hoeveel = 1 IF hoeveel > 15 THEN hoeveel = 15 x$ = INKEY$ LOCATE 18, 5: PRINT "Snelheid: "; 151 - spiet LOCATE 19, 5: PRINT "Vlakken : "; hoeveel FOR i = 1 TO z - 2 LINE (x(i), y(i))-(x(i + 1), y(i + 1)), 0 NEXT LINE (x(z - 1), y(z - 1))-(x(1), y(1)), 0 FOR i = 1 TO z - 2 LINE (x(i) + 100, y(i) - 50)-(x(i + 1) + 100, y(i + 1) - 50), 0 LINE (xx(i), yy(i))-(xx(i + 1), yy(i + 1)), 0 NEXT LINE (x(z - 1) + 100, y(z - 1) - 50)-(x(1) + 100, y(1) - 50), 0 FOR i = 1 TO z - 1 LINE (x(i), y(i))-(x(i) + 100, y(i) - 50), 0 NEXT LINE (xx(z - 1), yy(z - 1))-(xx(1), yy(1)), 0 FOR i = 1 TO z - 2 LINE (xx(i), yy(i) - 150)-(xx(i + 1), yy(i + 1) - 150), 0 NEXT LINE (xx(z - 1), yy(z - 1) - 150)-(xx(1), yy(1) - 150), 0 FOR i = 1 TO z - 1 LINE (xx(i), yy(i))-(xx(i), yy(i) - 150), 0 NEXT REDIM x(1 TO hoeveel * 2) REDIM y(1 TO hoeveel * 2) REDIM xx(1 TO hoeveel * 2) REDIM yy(1 TO hoeveel * 2) z = 1 FOR i = n TO 22 / 3.5 STEP (22 / 3.5 / hoeveel) x(z) = COS(i) * 50 + 100 y(z) = SIN(i) * 50 + 150 xx(z) = COS(i) * 50 + 470 yy(z) = SIN(i) * 10 + 200 z = z + 1 IF t$ = "on" THEN LOCATE i + 18, 47: PRINT "x("; z; ")="; CINT(x(z - 1)); "->" IF t$ = "on" THEN LOCATE i + 18, 62: PRINT "y("; z; ")="; CINT(y(z - 1)) NEXT FOR i = 1 TO z - 2 LINE (x(i), y(i))-(x(i + 1), y(i + 1)) NEXT LINE (x(z - 1), y(z - 1))-(x(1), y(1)) FOR i = 1 TO z - 2 LINE (x(i) + 100, y(i) - 50)-(x(i + 1) + 100, y(i + 1) - 50) NEXT LINE (x(z - 1) + 100, y(z - 1) - 50)-(x(1) + 100, y(1) - 50) FOR i = 1 TO z - 1 LINE (x(i), y(i))-(x(i) + 100, y(i) - 50) NEXT FOR i = 1 TO z - 2 LINE (xx(i), yy(i))-(xx(i + 1), yy(i + 1)) NEXT LINE (xx(z - 1), yy(z - 1))-(xx(1), yy(1)) FOR i = 1 TO z - 2 LINE (xx(i), yy(i) - 150)-(xx(i + 1), yy(i + 1) - 150) NEXT LINE (xx(z - 1), yy(z - 1) - 150)-(xx(1), yy(1) - 150) FOR i = 1 TO z - 1 LINE (xx(i), yy(i))-(xx(i), yy(i) - 150) NEXT CIRCLE (100, 150), 2, 15 CIRCLE (200, 100), 2, 15 LINE (100, 150)-(200, 100), 15 CIRCLE (470, 200), 2, 15, , , .5 CIRCLE (470, 50), 2, 15, , , .5 LINE (470, 50)-(470, 200) NEXT n LOOP einde: FOR i = 0 TO 63 PALETTE 0, 65536 * i + 256 * i + i NEXT SCREEN 0, 0, 0: WIDTH 80, 25: CLS : END