home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / public / penstate / dipole.bas < prev    next >
BASIC Source File  |  1996-06-30  |  3KB  |  84 lines

  1. 5 '///////////// DIPOLE //////////////
  2. 10 CLS:KEY OFF :ON ERROR GOTO 1700
  3. 20 KEY 1,"":KEY 10,""
  4. 30 PRINT"                  PATTERN PLOT OF A DIPOLE ANTENNA"
  5. 40 PRINT"                            OF ANY LENGTH"
  6. 50 '      MAY 29, 1986
  7. 60 '      AHMAD FAIZAL MOHD ZAIN
  8. 70 '       PATTERN P[LOT OF DIPOLE ANTENNA
  9. 80 '
  10. 90 DIM Y(360)
  11. 100 PI=3.141592
  12. 110 DEF FN F(X)=(COS((2*PI*L/2)*COS(X))-COS(2*PI*L/2))/SIN(X)
  13. 120 PRINT:PRINT:PRINT
  14. 130 INPUT"LENGTH (IN LAMBDA) ";L
  15. 140 PRINT L
  16. 150 GOTO 190
  17. 160 LOCATE 2,36:PRINT"LAMBDA =        ";
  18. 170 LOCATE 2,45:INPUT L
  19. 180 '
  20. 190 SCREEN 0,1
  21. 195 CLS:SCREEN 2,0:KEY OFF
  22. 205 VIEW (126,23)-(516,185),,2
  23. 210 LOCATE 23,1:PRINT"               F1 = Change Length            F10 = QUIT"
  24. 220 '
  25. 230 LOCATE 1,25:PRINT"RADIATION PATTERN OF DIPOLE FOR"
  26. 240 LOCATE 2,36:PRINT USING"LAMBDA = ##.###";L
  27. 250 '
  28. 260 YMAX=0
  29. 270 PSET (0,0)
  30. 280 FOR TH=0 TO 180
  31. 290   X=TH*PI/180
  32. 300   IF X=0 THEN 360
  33. 310   Y(TH)=ABS(FN F(X))
  34. 320   Y(360-TH)=Y(TH)
  35. 330   IF Y(TH)>YMAX THEN YMAX=Y(TH)
  36. 340   LOCATE 13,36:PRINT"PLEASE WAIT"
  37. 350   LOCATE 14,39:PRINT 180-TH
  38. 360 NEXT TH
  39. 370 '
  40. 380 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
  41. 390 CLS
  42. 400 '
  43. 410 CIRCLE (0,0),YMAX,1
  44. 420 CIRCLE (0,0),.75*YMAX,1
  45. 430 CIRCLE (0,0),.5*YMAX,1
  46. 440 CIRCLE (0,0),.25*YMAX,1
  47. 450 '
  48. 460 LINE (-YMAX,0)-(YMAX,0),1
  49. 470 LINE (0,YMAX)-(0,-YMAX),1
  50. 480 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
  51. 490 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
  52. 500 '
  53. 510  PSET (Y(0),0)
  54. 520 FOR TH=0 TO 360
  55. 530   XX=TH*PI/180
  56. 540   Y=Y(TH)*COS(XX)
  57. 550   X=Y(TH)*SIN(XX)
  58. 560   LINE -(X,Y),2
  59. 570 NEXT TH
  60. 580 '
  61. 590 A$=INKEY$
  62. 600 IF LEN(A$)<>2 THEN 590
  63. 610 ANS=ASC(MID$(A$,2,1))
  64. 620 IF ANS=59 THEN 160
  65. 630 IF ANS=68 THEN 670
  66. 640 GOTO 590
  67. 650 IF ANS=84 THEN 670
  68. 660 GOTO 240
  69. 670 T$="DO YOU WANT TO RUN AGAIN (Y/N)?":LC=25:GOSUB 730
  70. 680 AN$=INKEY$
  71. 690 IF AN$="Y" OR AN$="y" THEN RUN
  72. 700 IF AN$="N" OR AN$="n" THEN RUN "START
  73. 710 GOTO 670
  74. 720 :
  75. 730 LOCATE LC,(40-LEN(T$))/2+1:PRINT T$;:RETURN    'SUBROUTINE TO CENTRE TEXT
  76. 1500 SCREEN 0,0,0:SOUND 1510,10:COLOR 7,0:LOCATE 25,10:PRINT "Key: Esc to End or `R' to Run Again or `S' to Return Start";CHR$(29);:COLOR 15,0:LOCATE 25,15:PRINT "Esc";:LOCATE 25,30:PRINT "R";:LOCATE 25,50:PRINT "S";CHR$(29);:COLOR 7,0
  77. 1510 E$=INKEY$:IF E$="" THEN 1510 ELSE IF E$=CHR$(27) THEN CLS:END ELSE IF E$="R" OR E$="r" THEN RUN ELSE IF E$="S" OR E$="s" THEN RUN "START
  78. 1520 GOTO 1510
  79. 1600 '//////////////// Routine to Draw a Box //////////////////
  80. 1610 LOCATE Y1,X1+1:PRINT STRING$(X2-X1-1,"─");:LOCATE Y1,X1:PRINT "┌";:LOCATE Y1,X2:PRINT "╖";:FOR I= Y1+1 TO Y2-1:LOCATE I,X1:PRINT "│";:LOCATE I,X2:PRINT "║";:NEXT:LOCATE Y2,X1:PRINT "╘";:LOCATE Y2,X1+1
  81. 1620 PRINT STRING$(X2-X1-1,"═");:LOCATE Y2,X2:PRINT "╝";:RETURN
  82. 1700 SCREEN 0,0,0:COLOR 31,0:LOCATE 24,1:PRINT "Fault Detected";CHR$(29);:COLOR  7,0
  83. 1710 RESUME 1500
  84.