home *** CD-ROM | disk | FTP | other *** search
- 10 '*** ALGEBRA AND GEOMETRY PROGRAM
- 20 '** for the IBM PC...requires 32K and Color/Graphics
- 30 ON ERROR GOTO 1150
- 40 CLR
- 70 REM
- 80 SCREEN 1,2,0:WIDTH 80:SCNCLR : PRINT "ALGEBRA Graphics Program"
- 90 PRINT " Steve VanArsdale"
- 100 PRINT "Mt.Prospect, Illinois 312-259-7224"
- 110 PRINT
- 120 PRINT "SELECT algebra function:"
- 130 PRINT "A ... for the SINE of X"
- 140 PRINT "B ... for the COSINE of X"
- 150 PRINT "C ... for the TANGENT of X"
- 160 PRINT "D ... for the SECANT of X"
- 170 PRINT "E ... for the COTANGENT of X"
- 180 PRINT "F ... for the COSECANT of X"
- 190 PRINT "G ... for the INVERSE HYPERBOLIC SINE of X"
- 200 PRINT "H ... for the SQUARE ROOT of X"
- 210 PRINT " > ";:GETKEY CHOICE$
- 220 IF CHOICE$ <>"A" AND CHOICE$ <> "a" THEN 230
- 225 DEF FNFCTN(X)=SIN(X):FCTN$="SIN(X)":GOTO 310
- 230 ' IF CHOICE$ <>"B" OR CHOICE$ <> "b" THEN 240
- 235 ' DEF FNFCTN(X)=COS(X):FCTN$="COSINE(X)":GOTO 310
- 240 ' IF CHOICE$ <>"C" OR CHOICE$ <> "c" THEN 250
- 245 ' DEF FNFCTN(X)=TAN(X):FCTN$="TANGENT(X)":GOTO 310
- 250 ' IF CHOICE$ <>"D" OR CHOICE$ <> "d" THEN 260
- 255 ' DEF FNFCTN(X)=1/COS(X):FCTN$="SECANT(X)":GOTO 310
- 260 ' IF CHOICE$ <>"E" OR CHOICE$ <> "e" THEN 270
- 265 ' DEF FNFCTN(X)=1/TAN(X):FCTN$="COTANGENT(X)":GOTO 310
- 270 ' IF CHOICE$ <>"F" OR CHOICE$ <> "f" THEN 280
- 275 ' DEF FNFCTN(X)=1/SIN(X):FCTN$="COSECANT(X)":GOTO 310
- 280 ' IF CHOICE$ <>"G" OR CHOICE$ <> "g" THEN 290
- 285 ' DEF FNFCTN(X)=LOG(X+SQR(X*X+1)):FCTN$="INVERSE HYPERBOLIC SINE(X)":GOTO 310
- 290 ' IF CHOICE$ <>"H" OR CHOICE$ <>"h" THEN 300
- 295 ' DEF FNFCTN(X)=SQR(ABS(X)):FCTN$="SQ.RT(X)":GOTO 310
- 300 GOTO 70
- 310 PRINT "DEPTH OF ";FCTN$;" GRAPH (0 TO 50): ";:INPUT "",DEPTH
- 320 IF DEPTH < 0 OR DEPTH > 50 THEN GOTO 310
- 330 SCNCLR:SCREEN 0,2,0 :WIDTH 40
- 340 '**** GRAPHICS ROUTINE FOR ALGEBRAIC FUNCTIONS ****
- 350 SCNCLR
- 360 'SCREEN 1,0:COLOR 0,1
- 370 C=100:R=100
- 380 '** AXIS DRAWING ROUTINE
- 390 GOSUB 1180
- 400 '** PLOTTING PARAMETERS DISPLAY
- 410 PRINT AT(1,17); "GRAPH of:"
- 420 PRINT AT (1,18); FCTN$
- 430 PRINT AT (1,20); " X Y"
- 440 '** PLOTTING ROUTINE
- 450 X=0:Y=0:XX=-1:YY=FNFCTN(XX):DRAW (100,100)
- 460 FOR X = -1 TO 7 STEP .1
- 470 PRINT AT (1,21);:PRINT USING "##.##";X
- 480 REM
- 490 Y = FNFCTN(X)
- 500 YLIMIT=98-30*Y : DEPTHLIMIT=100-30*Y-DEPTH : IF YLIMIT < 0 OR YLIMIT > 200 OR DEPTHLIMIT < 0 THEN GOTO 570
- 510 ON ERROR GOTO 1270
- 520 PRINT AT (7,21);:PRINT USING "##.##";Y
- 530 DRAW (20*X+100,100-30*Y),2
- 540 IF DEPTH <> 0 THEN DRAW (20*X+101,99-30*Y TO 20*X+100+DEPTH,100-30*Y-DEPTH),1
- 550 DRAW (20*XX+100,100-30*YY TO 20*X+100,100-30*Y),2
- 560 IF DEPTH <> 0 THEN DRAW (20*XX+100+DEPTH,100-30*YY-DEPTH TO 20*X+100+DEPTH,100-30*Y-DEPTH),2
- 570 XX=X:YY=Y
- 580 NEXT X
- 590 GOSUB 1180
- 600 PRINT AT (1,23); "ENTER X TO EXIT";:VALUE$=INPUT$(1)
- 610 IF VALUE$ <> "X" AND VALUE$ <> "x" THEN GOTO 70 ELSE SCNCLR
- 620 '**** SPECIAL EXIT DISPLAY ****
- 630 '** AXIS DRAWING SUBROUTINE
- 640 GOSUB 1180
- 650 '** PLANE GRID DRAWING ROUTINE
- 660 FOR X = 10 TO R-10 STEP 10
- 670 DRAW (C+X,R-X TO 105+C+X,R-X),1
- 680 DRAW (C+X,R-X TO C+X,0),1
- 690 DRAW (C,R-X TO 195-X,5),1
- 700 DRAW (C+X,R TO 195+X,5),1
- 710 NEXT X
- 720 PRINT AT (22,1); " Z axis"
- 730 '** HOOP ROUTINE
- 740 CIRCLE (160,90),50,1
- 750 'FOR I = 1 TO 20 STEP
- 760 'CIRCLE STEP (1,-1),50,1
- 770 'NEXT I
- 780 'CIRCLE (160,90),50,1
- 790 '** ELLIPTICAL TUBE ROUTINE
- 800 'CIRCLE (155,90),25,1
- 810 'FOR I = 1 TO 35
- 820 'CIRCLE STEP (1,1),25,1
- 830 'NEXT I
- 840 'CIRCLE STEP (1,1),25,1
- 850 CIRCLE (155,90),25,.5
- 860 'FOR I = 1 TO 20
- 870 'CIRCLE STEP (1,-1),24,1,,,.5
- 880 'NEXT I
- 890 CIRCLE (155,90),25,.5
- 900 '*** CONE ROUTINE
- 910 CIRCLE (45,55),38,3
- 920 'FOR I = 1 TO 38
- 930 'CIRCLE STEP (+1,-1),38-I,(I MOD 2)+2,,,1
- 940 'NEXT I
- 950 CIRCLE (45,55),38,1
- 960 '** GLOBE ROUTINE
- 970 CIRCLE (245,170),1,2
- 980 'FOR I = 1 TO 10 STEP 1
- 990 'CIRCLE STEP (+I/4,-I/4),I*4,1,,,1
- 1000 'NEXT I
- 1010 'FOR I = 10 TO 0 STEP -1
- 1020 'CIRCLE STEP (+I/4,-I/4),I*4,2,,,1
- 1030 'NEXT I
- 1040 DRAW (TO 245,170),3
- 1050 '** PYRAMID ROUTINE
- 1060 'DRAW "BM10,150;C1;E30;F30;L60"
- 1070 'DRAW "BM+30,-28;D13"
- 1080 DRAW (40,135 TO 11,149),1
- 1090 DRAW (40,135 TO 69,149),1
- 1100 '** CUBE ROUTINE
- 1110 'DRAW "BM265,85;C3;U30;R30;D30;L30"
- 1120 'DRAW "BM+20,-20;C3;U30;R30;D30;L30"
- 1130 'DRAW "C3;G20;BM+30,0;E20;BM+0,-30;G20;BM-30,0;E20"
- 1140 PRINT AT (1,25); "BYE.";
- 1150 '**** TERMINATION LOGIC
- 1160 SCNCLR: PRINT "ALGEBRA Program Terminated."
- 1170 END
- 1180 '**** AXIS DRAWING SUBROUTINE ****
- 1190 '**** AXIS DRAWING SUBROUTINE ****
- 1200 DRAW (C,0 TO C,199),6
- 1210 DRAW (90,110 TO 200,0),6
- 1220 DRAW (0,R TO 319,R),6
- 1230 PRINT AT (1,13); "X axis"
- 1240 PRINT AT (10,2); "Y axis"
- 1250 PRINT AT (22,1); " Z axis"
- 1260 RETURN
- 1270 '**** CALCULATION ERROR HANDLER
- 1280 RESUME 390
- 1290 SCNCLR : PRINT "ALGEBRA Graphics Program"
-