00005 declare all integer*2 00010 let X1,X2,Y1,Y2,DEG,M,B,DX,DY,DIS=0 00090 goto 01000 00100 let DX=X2-X1 ! compute DEG&DIS for X1,Y1 X2,Y200110 let DY=Y2-Y1 00120 let DIS=sqr(DX^2+DY^2) 00130 if DX=0 then 00140 let DEG=0 00150 if DY>0 then let DEG=90 00160 if DY<0 then let DEG=270 00170 return 00180 end if 00190 if DY=0 and DX<0 then 00200 let DEG=180 00210 return 00220 end if 00230 let DEG=abs(atn(DY/DX)*180/pi) 00240 if DX<0 then let DEG=DEG+90 00250 if DY<0 then let DEG=DEG+90 00260 if DX>0 and DY<0 then let DEG=DEG+180 00270 return 00300 let X2=trunc(cos(DEG*pi/180)*DIS+X1+.5,0) ! COMPUT X2,Y2 FROM X1,Y1 00310 let Y2=trunc(sin(DEG*pi/180)*DIS+Y1+.5,0) ! DEG AND DIS 00320 return 00400 if X1=X2 and Y1=Y2 then return !give x1,y1 & x2,y2 00405 let DY=Y2-Y1 ! compute next point to get to it 00410 let DX=X2-X1 00415 if abs(DY)>abs(DX) then 00455 00420 let M=DY/DX 00425 let B=Y1-M*X1 00430 let X1=X1+sgn(X2-X1) 00440 let Y1=int(M*X1+B+.5) 00445 return 00455 let M=DX/DY 00460 let B=X1-M*Y1 00465 let Y1=Y1+sgn(Y2-Y1) 00475 let X1=int(M*Y1+B+.5) 00480 return 01000 print "A) Set X1 ";X1;tab(40);"1) Compute DEG & DIS from X1,Y1 & X2,Y2" 01010 print "B) Set Y1 ";Y1;tab(25);"(";X1;",";Y1;")";tab(40);"2) Compute X2,Y2 from X1,Y1 & DEG & DIS" 01020 print "C) Set X2 ";X2;tab(40);"3) Compute next X2,Y2 from X1,Y1 & X2,Y2" 01030 print "D) Set Y2 ";Y2;tab(25);"(";X2;",";Y2;")" 01040 print "E) Set DEG ";DEG 01045 print "F) Set DIS ";DIS;tab(40);"0) Clear all settings to zero" 01050 print "M=";M;tab(10);"B=";B;tab(30);"dX=";DX;tab(40);"dY=";DY 01060 linput prompt "Prompt ->", bytes 1:A$ 01065 print " "; 01070 let A$=uprc$(A$) 01080 if A$="Q" then stop 01090 if A$="A" then 01100 input prompt "X1: ":X1 01110 goto 01000 01120 end if 01130 if A$="B" then 01140 input prompt "Y1: ":Y1 01145 goto 01000 01150 end if 01160 if A$="C" then 01170 input prompt "X2: ":X2 01180 goto 01000 01190 end if 01200 if A$="D" then 01210 input prompt "Y2: ":Y2 01220 goto 01000 01230 end if 01240 if A$="E" then 01250 input prompt "Deg: ":DEG 01260 goto 01000 01270 end if 01280 if A$="F" then 01290 input prompt "Dis: ":DIS 01295 goto 01000 01297 end if 01300 if A$="1" then 01302 print "Compute DEG & DIS from (X1,Y1) & (X2,Y2)" 01305 gosub 00100 01307 goto 01000 01309 end if 01310 if A$="2" then 01320 print "Compute (X2,Y2) from (X1,Y1) & DEG & DIS" 01322 gosub 00300 01325 goto 01000 01330 end if 01340 if A$="3" then 01350 print "Compute next X2,Y2 from X1,Y1 & X2,Y2 using DX, DY, M, & B" 01352 gosub 00400 01360 goto 01000 01370 end if 01380 if A$="0" then goto 00010 05000 goto 01060 09999 end