~ 1 'VIEW3D.100 by Mike Weiblen 09/25/84 2 'Comments Welcome! Email to 72506,2072 10 CLEAR:DEFSNGA-Z:DIMP(25,1):ES=5:M=1:Z=9999:XN=0:XM=239:YN=0:YM=63 100 INPUT"EYE X,Y,Z";EX,EY,EZ 110 INPUT"COV X,Y,Z";CX,CY,CZ 120 INPUT"MAG";MA 200 NX=CX-EX:NY=CY-EY:NZ=CZ-EZ:ES=ABS(ES):CLS 210 DX=NY:DY=-NX:IFDX=0ANDDY=0THENLETDX=1ELSELETL=SQR(DX*DX+DY*DY):DX=DX/L:DY=DY/L 220 YX=DY*NZ:YY=-DX*NZ:YZ=DX*NY-DY*NX:L=SQR(YX*YX+YY*YY+YZ*YZ):YX=YX/L:YY=YY/L:YZ=YZ/L 300 ES=-ES:XO=XM/2+SGN(ES)*40:YO=YM/2:OX=EX+ES*DX:OY=EY+ES*DY:OZ=EZ 310 NX=CX-OX:NY=CY-OY:NZ=CZ-OZ:N=NX*NX+NY*NY+NZ*NZ 320 XX=YY*NZ-YZ*NY:XY=YZ*NX-YX*NZ:XZ=YX*NY-YY*NX:L=SQR(XX*XX+XY*XY+XZ*XZ):XX=XX/L:XY=XY/L:XZ=XZ/L 400 RESTORE800:A=0 410 READPX,PY,PZ:IFPX=ZTHEN500 420 PX=PX-OX:PY=PY-OY:PZ=PZ-OZ:D=NX*PX+NY*PY+NZ*PZ:IFD<=0THEN690 440 T=N/D:SX=T*PX-NX:SY=T*PY-NY:SZ=T*PZ-NZ 450 X=XX*SX+XY*SY+XZ*SZ:Y=YX*SX+YY*SY+YZ*SZ 490 A=A+1:P(A,0)=X*MA:P(A,1)=Y*MA:GOTO410 500 RESTORE900 510 READP,Q:IFP=ZTHEN600 520 X1=XO-P(P,0):Y1=YO-P(P,1):X2=XO-P(Q,0):Y2=YO-P(Q,1):GOSUB700:GOTO510 600 IFES<0THEN300 610 LINEINPUTA$ 620 CLS 630 PRINT"EYE:";EX;EY;EZ:PRINT"COV:";CX;CY;CZ:PRINT"MAG:";MA:PRINT:GOTO100 690 CLS:BEEP:PRINT"You shouldn't be inside the object!":GOTO630 700 IFX1=X2THENIFX1XMTHENRETURNELSEGOTO750 705 M=(Y2-Y1)/(X2-X1) 710 IFX1>XMTHENY1=Y1+M*(XM-X1):X1=XM 715 IFX1XMTHENY2=Y2+M*(XM-X2):X2=XM 725 IFX2YMTHENRETURNELSEGOTO780 755 M=(X2-X1)/(Y2-Y1) 760 IFY1>YMTHENX1=X1+M*(YM-Y1):Y1=YM 765 IFY1YMTHENX2=X2+M*(YM-Y2):Y2=YM 775 IFY2XMORX2XMTHENRETURN 790 LINE(X1,Y1)-(X2,Y2):RETURN 800 'Point Table (X,Y,Z: 3D Coordinates) 801 DATA10,10,-10 802 DATA-10,10,-10 803 DATA-10,-10,-10 804 DATA10,-10,-10 805 DATA-10,10,10 806 DATA-10,-10,10 807 DATA10,-10,10 899 DATA9999,0,0:'End of Table 900 'Line Table (P,Q:Connect point P to Q) 910 DATA1,2,1,4,1,5,1,7 920 DATA3,2,3,4,3,6 930 DATA5,2,5,6,5,7 940 DATA7,4,7,6 999 DATA9999,0,0:'End of Table OK