home *** CD-ROM | disk | FTP | other *** search
- 10 '***********************
- 20 '** VECTOR ANALYSIS **
- 30 '***********************
- 40 '
- 50 CLEAR
- 60 SCREEN 0,0,0
- 70 WIDTH 80
- 80 KEY OFF
- 90 CLS
- 100 '
- 110 DEF FNRTD(RADIANS)=180*RADIANS/3.141593 ' Converts radians to degrees
- 120 DEF FNDTR(DEGREES)=3.141593*DEGREES/180 ' Converts degrees to radians
- 130 '
- 140 '***********************
- 150 '** Menu generation **
- 160 '***********************
- 170 PRINT TAB(32)"VECTOR ANALYSIS"
- 180 PRINT
- 190 PRINT "A. Input vector V1 from keyboard.";
- 200 PRINT TAB(40)"L. Scalar multiplication of V1."
- 210 PRINT "B. Input vector V2 from keyboard.";
- 220 PRINT TAB(40)"M. Cartesian to spherical conversion."
- 230 PRINT "C. Input vector V3 from keyboard.";
- 240 PRINT TAB(40)"N. Spherical to cartesian conversion."
- 250 PRINT "D. Input vector V1 from result VR.";
- 260 PRINT TAB(40)"O. Cartesian to cylindrical conversion."
- 270 PRINT "E. Input vector V2 from result VR.";
- 280 PRINT TAB(40)"P. Cylindrical to cartesian conversion."
- 290 PRINT "F. Input vector V3 from result VR.";
- 300 PRINT TAB(40)"Q. V1 + V2."
- 310 PRINT "G. Swap values for vectors V1 and V2.";
- 320 PRINT TAB(40)"R. V1 - V2."
- 330 PRINT "H. Swap values for vectors V2 and V3.";
- 340 PRINT TAB(40)"S. Cross product of V1 and V2."
- 350 PRINT "I. Magnitude of V1.";
- 360 PRINT TAB(40)"T. Dot product of V1 and V2."
- 370 PRINT "J. Unit vector in direction of V1.";
- 380 PRINT TAB(40)"U. Angle between V1 and V2 (degrees)."
- 390 PRINT "K. Scalar triple product (V1*V2xV3).";
- 400 PRINT TAB(40)"V. Erase screen and redraw the menu."
- 410 PRINT STRING$(80,240);
- 420 PRINT
- 430 '
- 440 '*******************************************
- 450 '** Numerical data and prompt to screen **
- 460 '*******************************************
- 470 LOCATE 16,1
- 480 PRINT "V1 = ";I1 J1 K1 TAB(80)
- 490 PRINT "V2 = " I2 J2 K2 TAB(80)
- 500 PRINT "V3 = " I3 J3 K3 TAB(80)
- 510 LOCATE 20,1
- 520 PRINT "VR = " IR JR KR TAB(80)
- 530 GOSUB 2010
- 540 LOCATE 23,1
- 550 IF MAG THEN PRINT "Magnitude of V1 = ";MAG : MAG=0
- 560 IF STPF THEN PRINT "Scalar triple product = ";STP : STPF=0
- 570 IF DOTF THEN PRINT "Dot product = ";DOT : DOTF=0
- 580 IF ANF THEN PRINT "Angle V1 to V2 = ";ANG;CHR$(248) : ANF=0
- 590 IF CSF THEN PRINT "VR is in spherical notation (Rho, Theta, Phi) ";
- 600 IF CSF THEN PRINT "with the angles in degrees." : CSF=0
- 610 IF SCF THEN PRINT "VR is in cartesian notation (X,Y,Z) "; : SCF=0
- 620 IF CYF THEN PRINT "VR is in cylindrical notation (Rho, Theta, Z) ";
- 630 IF CYF THEN PRINT "with Theta in degrees." : CYF=0
- 640 IF YCF THEN PRINT "VR is in cartesian notation (X,Y,Z) "; : YCF=0
- 650 LOCATE 21,1
- 660 PRINT "SELECT FUNCTION BY LETTER ";
- 670 COLOR 23,0
- 680 PRINT CHR$(219);
- 690 COLOR 7,0
- 700 '
- 710 '**********************************************
- 720 '** Menu selection and functions performed **
- 730 '**********************************************
- 740 K$=INKEY$
- 750 IF K$ = "" THEN 740
- 760 IF K$ >= "a" AND K$ <= "z" THEN K$=CHR$(ASC(K$)-32) ' Capitalize K$
- 770 '
- 780 IF K$ <> "A" THEN 820
- 790 GOSUB 2010
- 800 INPUT "Enter values for V1 (i,j,k) ";I1,J1,K1
- 810 '
- 820 IF K$ <> "B" THEN 860
- 830 GOSUB 2010
- 840 INPUT "Enter values for V2 (i,j,k) ";I2,J2,K2
- 850 '
- 860 IF K$ <> "C" THEN 900
- 870 GOSUB 2010
- 880 INPUT "Enter values for V3 (i,j,k) ";I3,J3,K3
- 890 '
- 900 IF K$ <> "D" THEN 930
- 910 I1=IR : J1=JR : K1=KR
- 920 '
- 930 IF K$ <> "E" THEN 960
- 940 I2=IR : J2=JR : K2=KR
- 950 '
- 960 IF K$ <> "F" THEN 990
- 970 I3=IR : J3=JR : K3=KR
- 980 '
- 990 IF K$ <> "G" THEN 1060
- 1000 I1=I1 : J1=J1 : K1=K1
- 1010 I2=I2 : J2=J2 : K2=K2
- 1020 SWAP I1,I2
- 1030 SWAP J1,J2
- 1040 SWAP K1,K2
- 1050 '
- 1060 IF K$ <> "H" THEN 1130
- 1070 I2=I2 : J2=J2 : K2=K2
- 1080 I3=I3 : J3=J3 : K3=K3
- 1090 SWAP I2,I3
- 1100 SWAP J2,J3
- 1110 SWAP K2,K3
- 1120 '
- 1130 IF K$ <> "I" THEN 1160
- 1140 MAG=SQR(I1*I1+J1*J1+K1*K1)
- 1150 '
- 1160 IF K$ <> "J" THEN 1220
- 1170 MAGN=SQR(I1*I1+J1*J1+K1*K1)
- 1180 IR=I1/MAGN
- 1190 JR=J1/MAGN
- 1200 KR=K1/MAGN
- 1210 '
- 1220 IF K$ <> "K" THEN 1260
- 1230 STP=I1*J2*K3+J1*K2*I3+K1*I2*J3-K1*J2*I3-J1*I2*K3-I1*K2*J3
- 1240 STPF = 1
- 1250 '
- 1260 IF K$ <> "L" THEN 1320
- 1270 GOSUB 2010 : INPUT "Scalar value for multiplication ";SCA
- 1280 IR=I1*SCA
- 1290 JR=J1*SCA
- 1300 KR=K1*SCA
- 1310 '
- 1320 IF K$ <> "M" THEN 1410
- 1330 IR=SQR(I1*I1+J1*J1+K1*K1)
- 1340 IF I1 THEN JR=ATN(J1/I1) ELSE JR=1.570796*SGN(J1)
- 1350 IF I1 < 0 THEN JR=JR+((J1<0)-(J1>=0))*3.141593
- 1360 KR=K1/SQR(I1*I1+J1*J1+K1*K1) : CSF=1
- 1370 IF KR*KR < 1 THEN KR=1.570796-ATN(KR/SQR(1-KR*KR)) ELSE KR=1.570796
- 1380 JR=FNRTD(JR)
- 1390 KR=FNRTD(KR)
- 1400 '
- 1410 IF K$ <> "N" THEN 1470
- 1420 IR=I1*COS(FNDTR(J1))*SIN(FNDTR(K1))
- 1430 JR=I1*SIN(FNDTR(J1))*SIN(FNDTR(K1))
- 1440 KR=I1*COS(FNDTR(K1))
- 1450 SCF = 1
- 1460 '
- 1470 IF K$ <> "O" THEN 1550
- 1480 IR=SQR(I1*I1+J1*J1)
- 1490 IF I1 THEN JR=ATN(J1/I1) ELSE JR=1.570796*SGN(J1)
- 1500 IF I1 < 0 THEN JR=JR+((J1<0)-(J1>=0))*3.141593
- 1510 JR=FNRTD(JR)
- 1520 KR=K1
- 1530 CYF=1
- 1540 '
- 1550 IF K$ <> "P" THEN 1610
- 1560 IR=I1*COS(FNDTR(J1))
- 1570 JR=I1*SIN(FNDTR(J1))
- 1580 KR=K1
- 1590 YCF = 1
- 1600 '
- 1610 IF K$ <> "Q" THEN 1660
- 1620 IR=I1+I2
- 1630 JR=J1+J2
- 1640 KR=K1+K2
- 1650 '
- 1660 IF K$ <> "R" THEN 1710
- 1670 IR=I1-I2
- 1680 JR=J1-J2
- 1690 KR=K1-K2
- 1700 '
- 1710 IF K$ <> "S" THEN 1760
- 1720 IR=J1*K2-K1*J2
- 1730 JR=K1*I2-I1*K2
- 1740 KR=I1*J2-J1*I2
- 1750 '
- 1760 IF K$ <> "T" THEN 1800
- 1770 DOT=I1*I2+J1*J2+K1*K2
- 1780 DOTF=1
- 1790 '
- 1800 IF K$ <> "U" THEN 1920
- 1810 NUMER1=I1*I2+J1*J2+K1*K2
- 1820 DENOM1=SQR(I1*I1+J1*J1+K1*K1)
- 1830 IF DENOM1 = 0 THEN 1920
- 1840 DENOM2=SQR(I2*I2+J2*J2+K2*K2)
- 1850 IF DENOM2 = 0 THEN 1920
- 1860 TERM=NUMER1/DENOM1/DENOM2
- 1870 IF TERM*TERM >= 1 THEN 1920
- 1880 RAD=1.570796-ATN(TERM/SQR(1-TERM*TERM))
- 1890 ANG=RAD*180/3.141593
- 1900 ANF = 1
- 1910 '
- 1920 IF K$ <> "V" THEN 1960
- 1930 CLS
- 1940 GOTO 140
- 1950 '
- 1960 GOTO 470 ' End of the menu function selection
- 1970 '
- 1980 '********************************************
- 1990 '** Subroutine to clear the message line **
- 2000 '********************************************
- 2010 LOCATE 21,1
- 2020 PRINT SPACE$(239);
- 2030 LOCATE 21,1
- 2040 RETURN
-