10 POKE55,255:POKE56,99:REM CUBE DATA FILE MAKER 20 DIM V(8,3),SV(8,2),S(6,5),N(6,3),E(12,3) 30 FORI=1TO8:FORJ=1TO3:READV(I,J):NEXTJ,I 40 FORI=1TO6:FORJ=1TO5:READS(I,J):NEXTJ,I 50 DATA 40,40,-40,40,40,40,40,-40,40,40,-40,-40 60 DATA -40,-40,-40,-40,-40,40,-40,40,40,-40,40,-40 70 DATA 1,2,3,4,1,1,8,7,2,1,8,5,6,7,8 80 DATA 5,4,3,6,5,2,7,6,3,2,4,5,8,1,4 90 CX=160:CY=100:TH=.2:PH=.8:PD=2000:DT=20000 100 NS=95 400 PRINTCHR$(147);:INPUT"FILENAME";F$:PA=25600 410 PRINT"COMPUTING SCREEN NUMBER: "; 420 FORSC=1TONS:PRINT SC; 430 GOSUB 1000 440 IFSC<>NSTHENPOKEPA-1,254:NEXTSC 450 POKEPA-1,255 460 SYS57812 F$,8 470 POKE193,0:POKE194,100 480 POKE174,INT(PA)AND255:POKE175,INT(PA/256):SYS62954 490 PRINT:PRINT"ANIMATION DATA FILE ";CHR$(34);F$;CHR$(34);" IS COMPLETE":END 500 POKEPA,INT(Y1):PA=PA+1 510 POKEPA,INT(X1)AND255:PA=PA+1:POKEPA,INT(X1/256):PA=PA+1 520 POKEPA,INT(Y2):PA=PA+1 530 POKEPA,INT(X2)AND255:PA=PA+1:POKEPA,INT(X2/256):PA=PA+1 540 POKEPA,0:PA=PA+1:POKEPA,0:PA=PA+1 550 RETURN 1000 S1=SIN(TH):C1=COS(TH):S2=SIN(PH):C2=COS(PH) 1010 FORI=1TO8:X=V(I,1):Y=V(I,2):Z=V(I,3):SX=-X*S1+Y*C1 1020 SY=-X*C1*C2-Y*S1*C2+Z*S2:SZ=-X*S2*C1-Y*S2*S1-Z*C2+DT 1030 SV(I,1)=PD*(1.4*SX/SZ)+CX:SV(I,2)=-PD*(SY/SZ)+CY:NEXT 1040 FORI=1TO6:F=S(I,1):G=S(I,2):H=S(I,3):U1=V(G,1)-V(F,1):U2=V(G,2)-V(F,2) 1050 U3=V(G,3)-V(F,3):V1=V(H,1)-V(F,1):V2=V(H,2)-V(F,2):V3=V(H,3)-V(F,3) 1060 N(I,1)=U2*V3-V2*U3:N(I,2)=U3*V1-V3*U1:N(I,3)=U1*V2-V1*U2:NEXT 1070 XE=DT*S2*C1:YE=DT*S2*S1:ZE=DT*C2:M=1 1080 FORI=1TO6:E2=S(I,1):WX=XE-V(E2,1):WY=YE-V(E2,2):WZ=ZE-V(E2,3) 1090 IF(N(I,1)*WX+N(I,2)*WY+N(I,3)*WZ)<=0THEN1140 1100 E1=S(I,1):FORJ=2TO5:E2=S(I,J):FORK=1TOM 1110 IFE(K,1)=E2ANDE(K,2)=E1THENE(K,3)=2:GOTO 1130 1120 NEXTK:E(M,1)=E1:E(M,2)=E2:E(M,3)=1:M=M+1 1130 E1=E2:NEXTJ 1140 NEXTI:FORI=1TO12:IFE(I,3)=0THEN1160 1150 J=E(I,1):K=E(I,2):X1=SV(J,1):Y1=SV(J,2):X2=SV(K,1):Y2=SV(K,2):GOSUB500 1160 NEXT:TH=TH+.06544985:PH=PH+.06544985:IF SC<48 THEN PD=PD+583.3:RETURN 1170 PD=PD-583.3:RETURN