PRINT CHR$(12) PRINT PRINT "ENTER THE THREE VERTEXES OF THE TRIANGLE:"; PRINT PRINT "POINT A (X,Y) "; INPUT X1,Y1 PRINT "POINT B (X,Y) "; INPUT X2,Y2 PRINT "POINT C (X,Y) "; INPUT X3,Y3 PRINT PRINT PRINT PRINT "POINT A : (";X1;",";Y1;")" PRINT "POINT B : (";X2;",";Y2;")" PRINT "POINT C : (";X3;",";Y3;")" PRINT GOSUB CHECK IF E=1 THEN PRINT"YOU CAN'T DO THAT!":GOSUB WKEY:RUN PRINT "PRESS ANY KEY TO START" IOP=0 GOSUB WKEY GOSUB PICIT PRINT "PRESS A KEY" GOSUB WKEY GOSUB SLOPE GOSUB EQAT GOSUB WKEY GOSUB MEDIAN GOSUB CIRCUM GOSUB ORTHO GOSUB EULER PRINT "PRESS A KEY TO START OVER" GOSUB WKEY RUN END INFORM: PRINT PRINT PRINT "INTERCEPT - " PRINT PRINT "WRITTEN BY: Michael Kohn" PRINT PRINT "KNOWEN BUGS: NONE" PRINT PRINT "DATE FINISHED: DECEMBER 1, 1989" PRINT PRINT PRINT "PRESS A KEY TO START OVER" GOSUB WKEY RETURN EULER: GOSUB PICIT P=L1:O=L2 I=L3:U=L4:GOSUB PLOTIT CIRCLE (P,O),2,2 CIRCLE (I,U),2,2 I=L3:U=L4 P=L5:O=L6:GOSUB PLOTIT CIRCLE (P,O),2,2 PRINT "EULER LINE" PRINT PRINT "PRESS A KEY TO CONTINUE" GOSUB WKEY PRINT CHR$(12); PRINT PRINT GNR1=YR(1)*YT(2)-YR(2)*YT(1) GMR1=XR(1)*XT(2)-XR(2)*XT(1) GNR2=YR(1)*YR(2) GMR2=XR(1)*XR(2) Q=GNR1:W=GNR2:GOSUB REDUCE GNR1=Q:GNR2=W Q=GMR1:W=GMR2:GOSUB REDUCE GMR1=Q:GMR2=W SY=GNR1*GMR2 SX=GNR2*GMR1 Q=SY:W=SX:GOSUB REDUCE:SY=Q:SX=W SLOPE$=STR$(SY)+"/"+STR$(SX) IF SX=1 THEN SLOPE$=STR$(SY) PRINT PRINT "SLOPE OF EULER LINE : ";SLOPE$ Q1=YT(1):Q2=YR(1) W1=XT(1):W2=XR(1):W4=SY:W3=SX PRINT "EQUATION OF EULER LINE : Y=";SY;"/";SX;"X"; GOSUB AL PRINT K$ PRINT PRINT RETURN ORTHO: GOSUB PICIT P=X3:O=Y3 I=P:U=O IF SY1>=SX1 THEN BINX=INY/2 IF SY1<=SX1 THEN BINX=INX/2 FOR JK=1 TO BINX I=I+SY1:U=U-SX1 P=P-SY1:O=O+SX1 NEXT JK GOSUB PLOTIT P=X1:O=Y1 I=P:U=O IF SY2>=SX2 THEN BINX=INY/2 IF SY2<=SX2 THEN BINX=INX/2 FOR JK=1 TO BINX I=I+SY2:U=U-SX2 P=P-SY2:O=O+SX2 NEXT JK GOSUB PLOTIT P=X2:O=Y2 I=P:U=O IF SY3>=SX3 THEN BINX=INY/2 IF SY3<=SX3 THEN BINX=INX/2 FOR JK=1 TO BINX I=I+SY3:U=U-SX3 P=P-SY3:O=O+SX3 NEXT JK GOSUB PLOTIT PRINT "ORTHOCENTER" PRINT PRINT "PRESS ANY KEY" GOSUB WKEY PRINT CHR$(12); PRINT "POINT A : (";X1;",";Y1;")" PRINT "POINT B : (";X2;",";Y2;")" PRINT "POINT C : (";X3;",";Y3;")" PRINT PRINT "THE SLOPE OF ALTITUDE THROUGH A IS ";SPY2;"/";SPX2 PRINT "THE SLOPE OF ALTITUDE THROUGH B IS ";SPY3;"/";SPX3 PRINT "THE SLOPE OF ALTITUDE THROUGH C IS ";SPY1;"/";SPX1 PRINT Q1=Y1:Q2=1 W1=X1:W2=1:W4=SPY2:W3=SPX2 PRINT "EQUATION OF ALTITUDE THROUGH A IS : Y=";SPY2;"/";SPX2;"X"; GOSUB AL PRINT K$:KEA1=K1:KEA2=K2 Q1=Y2:Q2=1 W1=X2:W2=1:W4=SPY3:W3=SPX3 PRINT "EQUATION OF ALTITUDE THROUGH B IS : Y=";SPY3;"/";SPX3;"X"; GOSUB AL PRINT K$:KEB1=K1:KEB2=K2 Q1=Y3:Q2=1 W1=X3:W2=1:W4=SPY1:W3=SPX1 PRINT "EQUATION OF ALTITUDE THROUGH C IS : Y=";SPY1;"/";SPX1;"X"; GOSUB AL PRINT K$:KEC1=K1:KEC2=K2 PRINT PRINT PRINT "ORTHOCENTER : "; ZZ=0:ZX=0 IF SPX2<>0 THEN B1=1:B2=1:A1=SPY2:A2=SPX2:C1=KEA1:C2=KEA2:ZZ=1 IF SPX3<>0 THEN E1=1:E2=1:D1=SPY3:D2=SPX3:F1=KEB1:F2=KEB2:ZX=1 IF SPX1<>0 AND ZZ=0 THEN B1=1:B2=1:A1=SPY1:A2=SPX1:C1=KEC1:C2=KEC2:ZZ=1 IF SPX1<>0 AND ZX=0 THEN E1=1:E2=1:D1=SPY1:D2=SPX1:F1=KEC1:F2=KEC2:ZX=1 IF ZZ<>1 OR ZX<>1 THEN PRINT "ERROR - NOT ENOUGH INFO" A1=-A1:D1=-D1 GOSUB DETER LOCATE 14,15 PRINT "(";XX$;",";YY$;")" IF DEC=1 THEN PRINT "OR : ";DEC$ L5=McZIP1:L6=McZIP2 PRINT PRINT PRINT "PRESS ANY KEY TO CONTINUE" GOSUB WKEY RETURN CIRCUM: GOSUB PICIT P=(X1+X2)/2:O=(Y1+Y2)/2 I=P:U=O IF SY1>=SX1 THEN BINX=INY/2 IF SY1<=SX1 THEN BINX=INX/2 FOR JK=1 TO BINX I=I+SY1:U=U-SX1 P=P-SY1:O=O+SX1 NEXT JK GOSUB PLOTIT P=(X2+X3)/2:O=(Y2+Y3)/2 I=P:U=O IF SY2>=SX2 THEN BINX=INY/2 IF SY2<=SX2 THEN BINX=INX/2 FOR JK=1 TO BINX I=I+SY2:U=U-SX2 P=P-SY2:O=O+SX2 NEXT JK GOSUB PLOTIT P=(X1+X3)/2:O=(Y1+Y3)/2 I=P:U=O IF SY3>=SX3 THEN BINX=INY/2 IF SY3<=SX3 THEN BINX=INX/2 FOR JK=1 TO BINX I=I+SY3:U=U-SX3 P=P-SY3:O=O+SX3 NEXT JK GOSUB PLOTIT PRINT "CIRCUMCENTER" PRINT PRINT "PRESS A KEY" GOSUB WKEY PRINT CHR$(12); PRINT "POINT A : (";X1;",";Y1;")" PRINT "POINT B : (";X2;",";Y2;")" PRINT "POINT C : (";X3;",";Y3;")" PRINT PRINT "MIDPOINT OF LINE AB : (";M1;",";N1;")" PRINT "MIDPOINT OF LINE BC : (";M2;",";N2;")" PRINT "MIDPOINT OF LINE CA : (";M3;",";N3;")" PRINT SPY1=-SX1:SPX1=SY1 SPY2=-SX2:SPX2=SY2 SPY3=-SX3:SPX3=SY3 IF SPX1<0 THEN SPY1=-SPY1:SPX1=-SPX1 IF SPX2<0 THEN SPY2=-SPY2:SPX2=-SPX2 IF SPX3<0 THEN SPY3=-SPY3:SPX3=-SPX3 PRINT "THE SLOPE OF THE LINE PERPENDICULAR TO AB IS ";SPY1;"/";SPX1 PRINT "THE SLOPE OF THE LINE PERPENDICULAR TO BC IS ";SPY2;"/";SPX2 PRINT "THE SLOPE OF THE LINE PERPENDICULAR TO CA IS ";SPY3;"/";SPX3 PRINT Q1=Y2+Y1:Q2=2 W1=X2+X1:W2=2:W4=SPY1:W3=SPX1 PRINT "EQUATION OF PERPENDICULAR BISECTOR OF AB IS : Y=";SPY1;"/";SPX1;"X"; GOSUB AL PRINT K$:KIA1=K1:KIA2=K2 Q1=Y2+Y3:Q2=2 W1=X2+X3:W2=2:W4=SPY2:W3=SPX2 PRINT "EQUATION OF PERPENDICULAR BISECTOR OF BC IS : Y=";SPY2;"/";SPX2;"X"; GOSUB AL PRINT K$:KIB1=K1:KIB2=K2 Q1=Y3+Y1:Q2=2 W1=X3+X1:W2=2:W4=SPY3:W3=SPX3 PRINT "EQUATION OF PERPENDICULAR BISECTOR OF CA IS : Y=";SPY3;"/";SPX3;"X"; GOSUB AL PRINT K$:KIC1=K1:KIC2=K2 PRINT PRINT PRINT "CIRCUMCENTER : "; ZZ=0:ZX=0 IF SPX1<>0 THEN B1=1:B2=1:A1=SPY1:A2=SPX1:C1=KIA1:C2=KIA2:ZZ=1 IF SPX2<>0 THEN E1=1:E2=1:D1=SPY2:D2=SPX2:F1=KIB1:F2=KIB2:ZX=1 IF SPX3<>0 AND ZZ=0 THEN B1=1:B2=1:A1=SPY3:A2=SPX3:C1=KIC1:C2=KIC2:ZZ=1 IF SPX3<>0 AND ZX=0 THEN E1=1:E2=1:D1=SPY3:D2=SPX3:F1=KIC1:F2=KIC2:ZX=1 IF ZZ<>1 OR ZX<>1 THEN PRINT "ERROR - NOT ENOUGH INFO" A1=-A1:D1=-D1 GOSUB DETER LOCATE 18,16 PRINT "(";XX$;",";YY$;")" IF DEC=1 THEN PRINT "OR : ";DEC$ L3=McZIP1:L4=McZIP2 PRINT PRINT PRINT "PRESS ANY KEY TO CONTINUE" GOSUB WKEY RETURN PLOTIT: P=P*INX:P=P+300 O=-O*INY:O=O+100 I=I*INX:I=I+300 U=-U*INY:U=U+100 LINE (P,O)-(I,U),3 RETURN MEDIAN: GOSUB PICIT P=(X1+X2)/2:P=P*INX:P=P+300 O=(Y1+Y2)/2:O=-O*INY:O=O+100 I=X3*INX:I=I+300 U=-Y3*INY:U=U+100 LINE (P,O)-(I,U),3 P=(X2+X3)/2:P=P*INX:P=P+300 O=(Y2+Y3)/2:O=-O*INY:O=O+100 I=X1*INX:I=I+300 U=-Y1*INY:U=U+100 LINE (P,O)-(I,U),3 P=(X1+X3)/2:P=P*INX:P=P+300 O=(Y1+Y3)/2:O=-O*INY:O=O+100 I=X2*INX:I=I+300 U=-Y2*INY:U=U+100 LINE (P,O)-(I,U),3 PRINT "CENTROID" PRINT PRINT "PRESS ANY KEY" GOSUB WKEY PRINT CHR$(12); PRINT "POINT A : (";X1;",";Y1;")" PRINT "POINT B : (";X2;",";Y2;")" PRINT "POINT C : (";X3;",";Y3;")" PRINT M1=(X1+X2)/2:N1=(Y1+Y2)/2 M2=(X2+X3)/2:N2=(Y2+Y3)/2 M3=(X3+X1)/2:N3=(Y3+Y1)/2 PRINT "MIDPOINT OF LINE AB : (";M1;",";N1;")" PRINT "MIDPOINT OF LINE BC : (";M2;",";N2;")" PRINT "MIDPOINT OF LINE CA : (";M3;",";N3;")" PRINT SMY1=N1-Y3:SMX1=M1-X3 SMY2=N2-Y1:SMX2=M2-X1 SMY3=N3-Y2:SMX3=M3-X2 IF SMY1<>INT(SMY1) OR SMX1<>INT(SMX1) THEN SMX1=SMX1*2:SMY1=SMY1*2 IF SMY2<>INT(SMY2) OR SMX1<>INT(SMX2) THEN SMX2=SMX2*2:SMY2=SMY2*2 IF SMY3<>INT(SMY3) OR SMX1<>INT(SMX3) THEN SMX3=SMX3*2:SMY3=SMY3*2 Q=SMY1:W=SMX1:GOSUB REDUCE:SMY1=Q:SMX1=W Q=SMY2:W=SMX2:GOSUB REDUCE:SMY2=Q:SMX2=W Q=SMY3:W=SMX3:GOSUB REDUCE:SMY3=Q:SMX3=W IF SMX1<0 THEN SMX1=-SMX1:SMY1=-SMY1 IF SMX2<0 THEN SMX2=-SMX2:SMY2=-SMY2 IF SMX3<0 THEN SMX3=-SMX3:SMY3=-SMY3 PRINT "SLOPE OF MEDIAN A : ";SMY2;"/";SMX2 PRINT "SLOPE OF MEDIAN B : ";SMY3;"/";SMX3 PRINT "SLOPE OF MEDIAN C : ";SMY1;"/";SMX1 PRINT Q1=Y2+Y3:Q2=2 W1=X2+X3:W2=2:W4=SMY2:W3=SMX2 PRINT "EQUATION OF MEDIAN A : Y=";SMY2;"/";SMX2;"X"; GOSUB AL PRINT K$:KA1=K1:KA2=K2 Q1=Y1+Y3:Q2=2 W1=X1+X3:W2=2:W4=SMY3:W3=SMX3 PRINT "EQUATION OF MEDIAN B : Y=";SMY3;"/";SMX3;"X"; GOSUB AL PRINT K$:KB1=K1:KB2=K2 Q1=Y1+Y2:Q2=2 W1=X1+X2:W2=2:W4=SMY1:W3=SMX1 PRINT "EQUATION OF MEDIAN C : Y=";SMY1;"/";SMX1;"X"; GOSUB AL PRINT K$:KC1=K1:KC2=K2 PRINT PRINT PRINT "CENTROID : "; ZZ=0:ZX=0 IF SMX1<>0 THEN B1=1:B2=1:A1=SMY1:A2=SMX1:C1=KC1:C2=KC2:ZZ=1 IF SMX2<>0 THEN E1=1:E2=1:D1=SMY2:D2=SMX2:F1=KA1:F2=KA2:ZX=1 IF SMX3<>0 AND ZZ=0 THEN B1=1:B2=1:A1=SMY3:A2=SMX3:C1=KB1:C2=KB2:ZZ=1 IF SMX3<>0 AND ZX=0 THEN E1=1:E2=1:D1=SMY3:D2=SMX3:F1=KB1:F2=KB2:ZX=1 IF ZZ<>1 OR ZX<>1 THEN PRINT "ERROR - NOT ENOUGH INFO" A1=-A1:D1=-D1 GOSUB DETER LOCATE 18,12 PRINT "(";XX$;",";YY$;")" IF DEC=1 THEN PRINT "OR : ";DEC$ L1=McZIP1:L2=McZIP2 PRINT PRINT PRINT "PRESS ANY KEY TO CONTINUE" GOSUB WKEY RETURN DETER: IOP=IOP+1:DEC=0 XX1=A2*B2*C2 XX2=D2*E2*F2 A1=A1*XX1:B1=B1*XX1:C1=C1*XX1 D1=D1*XX2:E1=E1*XX2:F1=F1*XX2 LOCATE 18,40:PRINT"REDUCING."; Q=A1:W=A2:GOSUB REDUCE:A1=Q:A2=W:PRINT"."; Q=B1:W=B2:GOSUB REDUCE:B1=Q:B2=W:PRINT"."; Q=C1:W=C2:GOSUB REDUCE:C1=Q:C2=W:PRINT"."; Q=D1:W=D2:GOSUB REDUCE:D1=Q:D2=W:PRINT"."; Q=E1:W=E2:GOSUB REDUCE:E1=Q:E2=W:PRINT"."; Q=F1:W=F2:GOSUB REDUCE:F1=Q:F2=W:PRINT"."; IF A2<>1 OR B2<>1 OR C2<>1 THEN PRINT"ERROR":END IF D2<>1 OR E2<>1 OR F2<>1 THEN PRINT"ERROR":END XX1=(C1*E1)-(F1*B1) XX2=(A1*E1)-(D1*B1) YY1=(A1*F1)-(D1*C1) YY2=(A1*E1)-(D1*B1) Q=XX1:W=XX2:GOSUB REDUCE:XX1=Q:XX2=W:PRINT"."; Q=YY1:W=YY2:GOSUB REDUCE:YY1=Q:YY2=W:PRINT"."; XX$=STR$(XX1)+"/"+STR$(XX2) YY$=STR$(YY1)+"/"+STR$(YY2) IF XX2=1 THEN XX$=STR$(XX1) IF YY2=1 THEN YY$=STR$(YY1) IF XX2<>1 OR YY2<>1 THEN DEC=1:DEC$="("+STR$(XX1/XX2)+","+STR$(YY1/YY2)+")" McZIP1=XX1/XX2:McZIP2=YY1/YY2 XT(IOP)=XX1:YT(IOP)=YY1 XR(IOP)=XX2:YR(IOP)=YY2 LOCATE 18,40:PRINT" " RETURN AL: IF W3=0 THEN W2=0:GOTO McSKIPPY Q=W4*W1:W=W3*W2:GOSUB REDUCE:W1=Q:W2=W:W3=W IF Q2<0 THEN Q2=-Q2:Q1=-Q1 IF W2<0 THEN W2=-W2:W1=-W1:W3=-W3 W1=W1*Q2:W2=W2*Q2 Q2=Q2*W3:Q1=Q1*W3 IF Q2<>W2 THEN PRINT "ERROR":END Q1=Q1-W1 Q=Q1:W=Q2:GOSUB REDUCE:Q1=Q:Q2=W IF Q1<0 THEN K$=STR$(Q1)+"/"+STR$(Q2) IF Q1>0 THEN K$="+"+STR$(Q1)+"/"+STR$(Q2) IF Q1=0 THEN K$="+0" IF Q2=1 AND Q1<0 THEN K$=STR$(Q1) IF Q2=1 AND Q1>0 THEN K$="+"+STR$(Q1) K1=Q1:K2=Q2 RETURN EQAT: SL1$=STR$(SY1)+"/"+MID$(STR$(SX1),2,5) SL2$=STR$(SY2)+"/"+MID$(STR$(SX2),2,5) SL3$=STR$(SY3)+"/"+MID$(STR$(SX3),2,5) IF SY1=SX1 THEN SL1$="1" IF SY2=SX2 THEN SL2$="1" IF SY3=SX3 THEN SL3$="1" IF SY1=-SX1 THEN SL1$="-1" IF SY2=-SX2 THEN SL2$="-1" IF SY3=-SX3 THEN SL3$="-1" PRINT "EQUATION OF LINE AB : Y=";SL1$;"X"; Q1=Y1:Q2=1 W1=X1:W2=SX1:W1=W1*SY1 GOSUB ALGEBRA PRINT K$ PRINT "EQUATION OF LINE BC : Y=";SL2$;"X"; Q1=Y2:Q2=1 W1=X2:W2=SX2:W1=W1*SY2 GOSUB ALGEBRA PRINT K$ PRINT "EQUATION OF LINE CA : Y=";SL3$;"X"; Q1=Y3:Q2=1 W1=X3:W2=SX3:W1=W1*SY3 GOSUB ALGEBRA PRINT K$ PRINT PRINT PRINT "PRESS A KEY TO CONTINUE" RETURN ALGEBRA: IF W2=0 THEN GOTO McSKIPPY Q=W1:W=W2:GOSUB REDUCE W1=Q:W2=W Q2=W2:Q1=Q1*Q2 Q1=Q1-W1 Q=Q1:W=Q2:GOSUB REDUCE Q1=Q:Q2=W IF Q2<0 THEN Q2=Q2*-1:Q1=Q1*-1 IF Q1<0 THEN K$=STR$(Q1)+"/"+STR$(Q2) IF Q1>0 THEN K$="+"+STR$(Q1)+"/"+STR$(Q2) IF Q2=1 AND Q1>0 THEN K$="+"+STR$(Q1) IF Q2=1 AND Q1<0 THEN K$=STR$(Q1) IF Q1=0 THEN K$="+0" McSKIPPY: IF W2=0 THEN K$=" - VERTICLE LINE" RETURN SLOPE: SY1=(Y1-Y2):SX1=(X1-X2) SY2=(Y2-Y3):SX2=(X2-X3) SY3=(Y1-Y3):SX3=(X1-X3) Q=SY1:W=SX1:GOSUB REDUCE:SY1=Q:SX1=W Q=SY2:W=SX2:GOSUB REDUCE:SY2=Q:SX2=W Q=SY3:W=SX3:GOSUB REDUCE:SY3=Q:SX3=W PRINT CHR$(12) PRINT PRINT "POINT A : (";X1;",";Y1;")" PRINT "POINT B : (";X2;",";Y2;")" PRINT "POINT C : (";X3;",";Y3;")" PRINT PRINT IF SX1<0 THEN SY1=-SY1:SX1=-SX1 IF SX2<0 THEN SY2=-SY2:SX2=-SX2 IF SX3<0 THEN SY3=-SY3:SX3=-SX3 PRINT "THE SLOPE OF LINE AB IS ";SY1;"/";SX1 PRINT "THE SLOPE OF LINE BC IS ";SY2;"/";SX2 PRINT "THE SLOPE OF LINE CA IS ";SY3;"/";SX3 PRINT PRINT RETURN REDUCE: IF Q/5=INT(Q/5) AND W/5=INT(W/5) THEN Q=Q/5:W=W/5:GOTO REDUCE IF Q/2=INT(Q/2) AND W/2=INT(W/2) THEN Q=Q/2:W=W/2:GOTO REDUCE IF Q/3=INT(Q/3) AND W/3=INT(W/3) THEN Q=Q/3:W=W/3:GOTO REDUCE IF Q>W THEN QW=Q IF QA THEN A=X2 IF X3>A THEN A=X3 IF X2C THEN C=Y2 IF Y3>C THEN C=Y3 IF Y2-30 THEN INX=10 IF A>29 OR B<-29 THEN INX=5 IF C<8 OR D>-8 THEN INY=10 IF C>7 OR D<-7 THEN INY=5 IF A<15 OR B>-15 THEN INX=20 COLOR 3,0 ER=(((-Y1*INY)+100)/8)+1 TY=((( X1*INX)+300)/8)+1 LOCATE ER,TY:PRINT"A" ER=(((-Y2*INY)+100)/8)+1 TY=((( X2*INX)+300)/8)+1 LOCATE ER,TY:PRINT"B" ER=(((-Y3*INY)+100)/8)+1 TY=((( X3*INX)+300)/8)+1 LOCATE ER,TY:PRINT"C" COLOR 1,0:LOCATE 1,1 LINE (1,100)-(600,100),2 LINE (300,1)-(300,200),2 FOR T=100 TO 200 STEP INY LINE (298,T)-(302,T),2 NEXT T FOR T=100 TO 1 STEP -INY LINE (298,T)-(302,T),2 NEXT T FOR T=300 TO 600 STEP INX LINE (T,98)-(T,102),2 NEXT T FOR T=300 TO 1 STEP -INX LINE (T,98)-(T,102),2 NEXT RETURN