home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
david4
/
vector.bas
< prev
next >
Wrap
BASIC Source File
|
1987-01-24
|
6KB
|
205 lines
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