10 ! KLOSS3D.BAC 20 ! Program f|r ABC806 + f{rgsk{rm + 512Kb 30 ! 3D Vector grafik av Magnus <8042> 1991 40 EXTEND : FLOAT 50 ; CHR$(12%) 60 DIM X(6,4),Y(6,4),X3(8),Y3(8),Z3(8) 70 DIM X2(8),Y2(8) 80 FGCTL BLK+RED+GRN+YEL+BLU+MAG+CYA 90 FGPOINT 0,0,0 : FGFILL 255,239 100 DEF FNZ2(X,Z,V) LOCAL F,Nz 110 F=(2*PI/360) 120 Nz=SIN(F*V)*X+COS(F*V)*Z 130 RETURN Nz 140 FNEND 150 DEF FND2(X,Z,V) LOCAL F,Nx 160 F=(2*PI/360) 170 Nx=COS(F*V)*X-SIN(F*V)*Z 180 RETURN Nx 190 FNEND 200 DEF FNY2(Y,Z,V) LOCAL F,Ny 210 F=(2*PI/360) 220 Ny=COS(F*V)*Y-SIN(F*V)*Z 230 RETURN Ny 240 FNEND 250 FOR B=0 TO 15 260 FGPICTURE B,B,16 270 V=B*(360/16) 280 Yv=B*(360/16) 290 GOSUB 560 300 RESTORE 540 : FOR W=1 TO 8 310 READ X3(W),Y3(W),Z3(W) : NEXT W 320 FOR W=1 TO 8 330 X2(W)=FND2(X3(W),Z3(W),V) 340 Nz=FNZ2(X3(W),Z3(W),V) 350 Y2(W)=FNY2(Y3(W),Nz,Yv) 360 X2(W)=X2(W)+128 : Y2(W)=Y2(W)+120 370 NEXT W 380 ! P1=1 : P2=2 : P3=3 : P4=4 : GOSUB 700 390 IF X2(1)>X2(7) AND Y2(2)>Y2(1) THEN P1=1 : P2=2 : P3=8 : P4=7 : F=5 : GOSUB 730 : ! sida 5 400 IF X2(5)Y2(4) THEN P1=5 : P2=6 : P3=4 : P4=3 : F=6 : GOSUB 730 : ! sida 6 410 IF X2(4)>X2(3) AND Y2(2)>Y2(4) THEN P1=4 : P2=2 : P3=1 : P4=3 : F=1 : GOSUB 730 : ! sida 1 420 IF X2(2)Y2(6) THEN P1=2 : P2=8 : P3=6 : P4=4 : F=2 : GOSUB 730 : ! Sida 2 430 IF X2(8)Y2(5) THEN P1=8 : P2=7 : P3=5 : P4=6 : F=3 : GOSUB 730 : ! sida 3 440 IF X2(7)Y2(3) THEN P1=7 : P2=1 : P3=3 : P4=5 : F=4 : GOSUB 730 : ! sida 4 450 ! ---- om sidan {r upp och ner ------------- 460 IF X2(1)X2(3) AND Y2(3)X2(8) AND Y2(8)X2(7) AND Y2(7)X2(1) AND Y2(1)=360 THEN V=0 610 IF A$="x" THEN V=V-5 : IF V<=0 THEN V=360 620 IF A$="}" THEN Yv=Yv+5 : IF Yv>=360 THEN Yv=0 630 IF A$="{" THEN Yv=Yv-5 : IF Yv<=0 THEN Yv=360 640 RETURN 650 DATA -1,-1,-1 660 FOR B=0 TO 15 670 ! 680 FGPICTURE B,B,16 690 FOR Q=0 TO 100 : NEXT Q 700 NEXT B 710 GOTO 660 720 ! --------- rita yta ----------- 730 FGPOINT X2(P1),Y2(P1),F : FGLINE X2(P2),Y2(P2) 740 FGLINE X2(P3),Y2(P3) : FGLINE X2(P4),Y2(P4) : FGLINE X2(P1),Y2(P1) 750 X5=(X2(P1)+X2(P2)+X2(P3)+X2(P4))/4 760 Y5=(Y2(P1)+Y2(P2)+Y2(P3)+Y2(P4))/4 770 FGPAINT X5,Y5,F 780 RETURN