5 (null):X=-200:Y=0:Z=40:WI=10*(null)/180:F=10 10 A=7:MX=159:MY=99:DIM X(A),Y(A),Z(A) 15 GOSUB 1000 20 XX=0:XY=1:XZ=0 30 YX=0:YY=0:YZ=1 40 VX=10:VY=0:VZ=0:V=10:GOSUB 100 50 GET A$:IF A$="" THEN 50 52 IF A$="I" THEN X=X+20:GOTO 70 54 IF A$="," THEN X=X-20:GOTO 70 56 IF A$="J" THEN Y=Y-20:GOTO 70 58 IF A$="L" THEN Y=Y+20:GOTO 70 60 IF A$="+" THEN Z=Z+20:GOTO 70 62 IF A$="-" THEN Z=Z-20:GOTO 70 64 IF A$="O" THEN W=WI:GOSUB 600:GOTO70 66 IF A$="U" THEN W=-WI:GOSUB 600 70 GOSUB 100 80 GOTO 50 100 (null):T=1 110 GOSUB 300:EX=KX:EY=KY 120 FOR T=2 TO A 130 AX=KX:AY=KY 140 GOSUB 300 150 (null) KX,KY,AX,AY 160 NEXTT 170 (null) KX,KY,EX,EY 180 RETURN 300 BX=X(T)-X:BY=Y(T)-Y:BZ=Z(T)-Z 310 L=SQR(BX*BX+BY*BY+BZ*BZ) 320 IF L<=V THEN RETURN 330 DX=BX-VX:DY=BY-VY:DZ=BZ-VZ 340 IF SQR(DX*DX+DY*DY+DZ*DZ)>=L THEN RETURN 350 D=BX*XY*YZ+XX*YY*BZ+YX*BY*XZ-BZ*XY*YX-XZ*YY*BX-YZ*BY*XX 360 D2=-BX*VY*YZ-VX*YY*BZ-YX*BY*VZ+BZ*VY*YX+VZ*YY*BX+YZ*BY*VX 370 D3=-BX*XY*VZ-XX*VY*BZ-VX*BY*XZ+BZ*XY*VX+XZ*VY*BX+VZ*BY*XX 380 KY=MY-D3/D*F 390 KX=MX+D2/D*F 400 RETURN 600 OX=VX:OY=VY:GOSUB 650 610 VX=NX:VY=NY 620 OX=XX:OY=XY:GOSUB 650 630 XX=NX:XY=NY:RETURN 650 NX=OX*COS(W)-OY*SIN(W) 660 NY=OY*COS(W)+OX*SIN(W) 670 RETURN 1000 FOR T=1 TO A 1010 READ X(T),Y(T),Z(T) 1020 NEXTT 1030 RETURN 2000 DATA -50,-50,0 2010 DATA 50,-50,0 2020 DATA 50,50,0 2030 DATA -50,50,0 2040 DATA -50,-50,0 2050 DATA 0,0,0 2060 DATA 0,0,70