100 SCREEN 0:WIDTH 80 105 PI=3.1415926535# 110 KEY OFF:KEY 6,"WIDTH 80"+CHR$(13) 130 GOSUB 2000 140 BLK$=" " 150 IF OP1$="2" THEN 200 155 REM USER-INPUT VALUES 160 COLOR 9:PRINT:INPUT"INPUT X-VALUE OF VERTEX 1 (0 < X <320) ";U1$ 162 U1=VAL(U1$) 165 INPUT"INPUT Y-VALUE OF VERTEX 1 (0 < X <180) ";V1$ 167 V1=VAL(V1$) 170 COLOR 12:PRINT:INPUT"INPUT X-VALUE OF VERTEX 2 (0 < X <320) ";U2$ 172 U2=VAL(U2$) 175 INPUT"INPUT Y-VALUE OF VERTEX 2 (0 < X <180) ";V2$ 177 V2=VAL(V2$) 180 COLOR 14:PRINT:INPUT"INPUT X-VALUE OF VERTEX 3 (0 < X <320) ";U3$ 182 U3=VAL(U3$) 185 INPUT"INPUT Y-VALUE OF VERTEX 3 (0 < X <180) ";V3$ 187 V3=VAL(V3$) 190 COLOR 7:GOTO 230 200 U1=60*RND(1):V1=50*RND(1)+120 205 U2=130+60*RND(1):V2=40*RND(1) 210 U3=240+80*RND(1):V3=70*RND(1)+100 230 REM 260 SCREEN 1:CLS 280 LINE (U1,V1) - (U2,V2) 285 LINE (U2,V2) - (U3,V3) 290 LINE (U3,V3) - (U1,V1) 300 REM CALCULATE SIDES AND ANGLES 305 S12 = SQR((U2-U1)^2+(V2-V1)^2) 310 S23 = SQR((U2-U3)^2+(V2-V3)^2) 315 S31 = SQR((U1-U3)^2+(V1-V3)^2) 320 SS=(S12+S23+S31)/2:RI=SQR((SS-S12)*(SS-S23)*(SS-S31)/SS) 325 A12=2*ATN(RI/(SS-S12)) 330 A23=2*ATN(RI/(SS-S23)) 335 A31=2*ATN(RI/(SS-S31)) 350 REM LOCATE TRISECTION LINES 353 IF OP2$="N" THEN 360 356 LOCATE 22,1:PRINT BLK$:LOCATE 22,1:PRINT"TRISECT ANGLE 1: PRESS ANY KEY ":U$=INPUT$(1) 360 A = PI-A31-(A23/3):X=S12*SIN(A23/3)/SIN(A) 365 X23A=U2+(U3-U2)*X/S23:Y23A=V2+(V3-V2)*X/S23 370 LINE (U1,V1) - (X23A,Y23A),1 380 A = PI-A12-(A23/3):X=S31*SIN(A23/3)/SIN(A) 385 X23B=U3+(U2-U3)*X/S23:Y23B=V3+(V2-V3)*X/S23 390 LINE (U1,V1) - (X23B,Y23B),1 393 IF OP2$="N" THEN 400 396 LOCATE 22,1:PRINT BLK$:LOCATE 22,1:PRINT"TRISECT ANGLE 2: PRESS ANY KEY ":U$=INPUT$(1) 400 A = PI-A12-(A31/3):X=S23*SIN(A31/3)/SIN(A) 405 X31A=U3+(U1-U3)*X/S31:Y31A=V3+(V1-V3)*X/S31 410 LINE (U2,V2) - (X31A,Y31A),1 420 A = PI-A23-(A31/3):X=S12*SIN(A31/3)/SIN(A) 425 X31B=U1+(U3-U1)*X/S31:Y31B=V1+(V3-V1)*X/S31 430 LINE (U2,V2) - (X31B,Y31B),1 433 IF OP2$="N" THEN 440 436 LOCATE 22,1:PRINT BLK$:LOCATE 22,1:PRINT"TRISECT ANGLE 3: PRESS ANY KEY ":U$=INPUT$(1) 440 A = PI-A23-(A12/3):X=S31*SIN(A12/3)/SIN(A) 445 X12A=U1+(U2-U1)*X/S12:Y12A=V1+(V2-V1)*X/S12 450 LINE (U3,V3) - (X12A,Y12A),1 460 A = PI-A31-(A12/3):X=S23*SIN(A12/3)/SIN(A) 465 X12B=U2+(U1-U2)*X/S12:Y12B=V2+(V1-V2)*X/S12 470 LINE (U3,V3) - (X12B,Y12B),1 480 IF OP2$="N" THEN 500 485 LOCATE 22,1:PRINT BLK$:LOCATE 22,1:PRINT"DRAW MORLEY TRIANGLE: PRESS ANY KEY ":U$=INPUT$(1) 500 REM LOCATE TRISECTION INTERSECTIONS 510 M1=(Y23A-V1)/(X23A-U1):B1=V1-M1*U1 515 M2=(Y31B-V2)/(X31B-U2):B2=V2-M2*U2 520 X12I=-(B1-B2)/(M1-M2):Y12I=M1*X12I+B1 530 M1=(Y31A-V2)/(X31A-U2):B1=V2-M1*U2 535 M2=(Y12B-V3)/(X12B-U3):B2=V3-M2*U3 540 X23I=-(B1-B2)/(M1-M2):Y23I=M1*X23I+B1 550 M1=(Y12A-V3)/(X12A-U3):B1=V3-M1*U3 555 M2=(Y23B-V1)/(X23B-U1):B2=V1-M2*U1 560 X31I=-(B1-B2)/(M1-M2):Y31I=M1*X31I+B1 570 LINE (X12I,Y12I) - (X23I,Y23I) 575 LINE (X23I,Y23I) - (X31I,Y31I) 580 LINE (X31I,Y31I) - (X12I,Y12I) 600 XC=(X12I+X23I+X31I)/3:YC=(Y12I+Y23I+Y31I)/3 610 PAINT (XC,YC),2,3 620 LOCATE 22,1:PRINT BLK$:LOCATE 22,1:PRINT"PRESS ANY KEY TO CONTINUE" 650 A$=INPUT$(1) 660 SCREEN 0:WIDTH 80:CLS 700 INPUT"DO ANOTHER - Y/N ? ";YN$ 710 IF YN$="Y" OR YN$="y" THEN 100 990 END 2000 REM HELP SCREEN 2010 SCREEN 0:WIDTH 80:CLS 2020 COLOR 4:PRINT" MORLEY'S TRIANGLE":PRINT 2030 COLOR 14:PRINT"IF THE ANGLES OF A TRIANGLE ARE TRISECTED, THE INTERSECTIONS OF THE" 2040 COLOR 14:PRINT"TRISECTORS ADJACENT TO EACH SIDE ARE THE VERTICES OF AN EQUILATERAL TRIANGLE," 2050 COLOR 14:PRINT"REGARDLESS OF THE SHAPE OF THE ORIGINAL TRIANGLE. THIS EQUILATERAL TRIANGLE" 2060 COLOR 14:PRINT"IS CALLED MORLEY'S TRIANGLE.":PRINT 2070 COLOR 2:PRINT"THIS PROGRAM DEMONSTRATES MORLEY'S TRIANGLE. YOU HAVE THE FOLLOWING OPTIONS:" 2080 PRINT:COLOR 3:PRINT"DO YOU WANT" 2090 COLOR 5:PRINT" 1 - INPUT YOUR OWN COORDINATE VALUES FOR THE TRIANGLE VERTICES" 2100 COLOR 6:PRINT" 2 - HAVE THE COMPUTER DRAWS A RANDOMLY-SELECTED TRIANGLE" 2110 COLOR 10:PRINT:INPUT"SELECT OPTION ";OP1$ 2120 IF OP1$<>"1" AND OP1$<>"2" THEN 2110 2122 PRINT:COLOR 11:PRINT"YOU MAY CHOOSE TO PAUSE BETWEEN EACH STAGE OF THE CONSTRUCTION" 2125 PRINT"OR COMPLETE THE ENTIRE CONSTRUCTION WITHOUT PAUSES" 2130 PRINT:PRINT"DO YOU WANT PROMPTS FOR EACH STEP - Y/N ?" 2140 RANDOMIZE(X) 2150 OP2$=INKEY$ 2160 IF OP2$="Y" OR OP2$="N" OR OP2$="y" OR OP2$="n" THEN 2180 2170 X=X+1:GOTO 2140 2180 IF OP2$="y" THEN OP2$="Y" 2190 IF OP2$="n" THEN OP2$="N" 2200 COLOR 7:CLS 2210 RETURN