home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / w4mb / vol1 / basic / mininec.asc < prev    next >
Text File  |  1996-06-30  |  15KB  |  309 lines

  1. 1 CLS : PRINT "  *************************************"
  2. 2 PRINT "  *             MININEC               *"
  3. 3 PRINT "  *REFERENCE-JULIAN ET AL, NOSC TD 516*"
  4. 4 PRINT "  *       PROGRAM MODIFIED BY         *"
  5. 5 PRINT "  *       R.P.HAVILAND,  W4MB         *"
  6. 7 PRINT "  *************************************"
  7. 10 REM PROGRAM 33-33A
  8. 20 PRINT : PRINT "THIS PROGRAM SOLVES WIRE ANTENNAS FOR Z-IN,I-DISTRIBUTION AND PATTERNS"
  9. 30 PRINT "  FOR UP TO 10 WIRES IN 50 SEGMENTS"
  10. 35 PRINT "GROUND IS X-Y PLANE,VERTICAL IS Z AXIS"
  11. 40 PRINT " AZMUITH ANGLE IS FROM X, VERTICAL FROM Z"
  12. 45 PRINT "  DIMENSIONS ARE IN METERS": PRINT
  13. 50 PRINT "THE REFERENCE IS AVAIALBLE AS"
  14. 55 PRINT " NATIONAL TECHNICAL INFORMATION SERVICE HD-H 121 535"
  15. 60 PRINT "SEE ALSO IEEE AP-NEWSLETTER,FEB. 1984"
  16. 65 PRINT "  THE PROGRAM IS COMPLEX; THE REFERENCES ARE RECOMMENDED, WITH AMPLE"
  17. 70 PRINT "    PRACTICE ON SIMPLE ANTENNAS."
  18. 80 PRINT : PRINT "PRESS A KEY TO CONTINUE"
  19. 90 Q$ = INKEY$: IF Q$ = "" GOTO 90
  20. 95 PRINT : PRINT "WAIT PROCESSING...."
  21. 96 DIM R(50, 50), N(50), X(70), Y(70), Z(70), E(50), L(50), M(50), D(10), F(10), A(10)
  22. 97 DIM C(50, 2), H(50), I(50), J(50), K(50), Q(14), W(10), B(50, 50), G(10), S(10), P(50)
  23. 100 GOTO 950
  24. 110 X3 = T * D(P4): Y3 = T * F(P4): Z3 = F * T * G(P4)
  25. 140 D = D0 - 2 * F3 * (X3 * X2 + Y3 * Y2 + Z3 * Z2) + X3 * X3 + Y3 * Y3 + Z3 * Z3
  26. 150 D = SQR(D): IF I6 = H0 THEN 330
  27. 170 D3 = D * D - A2: B = D3 / (D3 + 4 * A2): V1 = W(1): V2 = W(6)
  28. 210 B1 = 1: B2 = -36: FOR L2 = 2 TO 5: B2 = B2 / (L2 - 1)
  29. 250 IF B < 10 ^ (B2) THEN 300
  30. 260 B1 = B1 * B: V1 = V1 + W(L2) * B1: V2 = V2 + W(L2 + 5) * B1: NEXT L2
  31. 300 V = (V1 - V2 * LOG(B)) * SQR(1 - B): D3 = SQR(D3) / 8 / A(P4)
  32. 320 T3 = T3 + (LOG(D3) + V) / P / A(P4) - 1 / D
  33. 330 B1 = D * W
  34. 340 T3 = T3 + COS(B1) / D: T4 = T4 - SIN(B1) / D: RETURN
  35. 370 IF P1 - INT(P1) = H0 THEN 500
  36. 380 I4 = INT(P1 + 1): I5 = INT(P1)
  37. 400 X1 = (X(I4) + X(I5)) / 2: Y1 = (Y(I4) + Y(I5)) / 2: Z1 = (Z(I4) + Z(I5)) / 2
  38. 430 X2 = X1 - X(P2): Y2 = Y1 - Y(P2): Z2 = Z1 - Z(P2) * F
  39. 460 X3 = X1 - X(P3): Y3 = Y1 - Y(P3): Z3 = Z1 - Z(P3) * F: GOTO 590
  40. 500 I4 = INT(P2 + 1): IF P2 - INT(P2) = H0 THEN I4 = P2
  41. 520 I5 = INT(P2): X2 = X(P1) - (X(I4) + X(I5)) / 2
  42. 540 Y2 = Y(P1) - (Y(I4) + Y(I5)) / 2: Z2 = Z(P1) - F * (Z(I4) + Z(I5)) / 2
  43. 560 X3 = X(P1) - X(P3): Y3 = Y(P1) - Y(P3): Z3 = Z(P1) - F * Z(P3)
  44. 590 D0 = X2 * X2 + Y2 * Y2 + Z2 * Z2: D3 = X3 * X3 + Y3 * Y3 + Z3 * Z3
  45. 610 S4 = (P3 - P2) * S(P4): F2 = 1: N3 = 7: T1 = H0: T2 = T1
  46. 660 T = S(P4) + .001 * A(P4): A2 = A(P4) * A(P4): IF SQR(D3) + SQR(D0) > T THEN 740
  47. 690 I6 = 16 * A(P4) / S(P4): IF P1 - INT(P1) > 0 THEN F2 = 2
  48. 710 I6 = F2 * (1 + LOG(I6)) * S(P4) / P / A(P4) / 2
  49. 720 IF P1 - INT(P1) > 0 THEN S4 = S(P4) / 2
  50. 730 GOTO 780
  51. 740 T = SQR(D0) / ABS(S4): IF T > 3 THEN N3 = 3
  52. 760 IF T > 5 THEN N3 = 1
  53. 770 I6 = H0
  54. 780 I5 = N3 * 2: D0 = D0 + A2: L = N3
  55. 810 T3 = H0: T4 = T3: T = S4 * (Q(L) + .5): GOSUB 110
  56. 850 T = S4 * (.5 - Q(L)): GOSUB 110
  57. 870 L = L + 1: T1 = T1 + Q(L) * T3: T2 = T2 + Q(L) * T4: L = L + 1: IF L < I5 THEN 810
  58. 920 T1 = F2 * T1 * S4 + I6: T2 = F2 * T2 * S4
  59. 940 RETURN
  60. 950 P = 4 * ATN(1): P0 = P / 180
  61. 990 READ Q(1), Q(2), Q(3), Q(4), Q(5), Q(6), Q(7), Q(8), Q(9), Q(10), Q(11), Q(12)
  62. 1000 READ Q(13), Q(14), G0, W(1), W(2), W(3), W(4), W(5), W(6), W(7), W(8), W(9), W(10)
  63. 1010 DATA .288675135,.5,.430568156,.173927423,.1699990522,.326072577
  64. 1020 DATA .481044928,.050614268,.398333239,.111190517
  65. 1030 DATA .262766205,.156853323,.091717321,.181341892,29.979221
  66. 1040 DATA 1.38629436,.09666344,.03590092,.03742563713,.01451196
  67. 1050 DATA .5,.12498594,.06880249,.0332836,.0041787
  68. 1051 PRINT : INPUT "ENTER ANT. NAME,DATE"; NA$, DA$
  69. 1060 PRINT "***************************"
  70. 1070 PRINT "   MININEC RPH NOV 1984"
  71. 1080 PRINT "**************************ó"
  72. 1090 PRINT "ENTER ANTENNA GEOMETRY"
  73. 1100 INPUT "NO. OF WIRES"; W
  74. 1102 PRINT : PRINT "ENTER CONNECTIONS FOR WIRE #"; W: PRINT "  0=NC": PRINT "  THIS #=GND"
  75. 1104 PRINT "- A PREVIOUS #= ENDS 1-1 OR 2-2"
  76. 1106 PRINT "+ A PREVIOUS #= ENDS 1-2 OR 2-1": PRINT
  77. 1110 N = 0
  78. 1120 FOR I = 1 TO W
  79. 1130 PRINT "WIRE NO. "; I: INPUT "NO. SEGMENTS"; S1
  80. 1140 INPUT "END ONE COORDS,X,Y,Z, METERS"; X1, Y1, Z1
  81. 1150 INPUT "END 1 TO #,OR 0=NC,OR -WIRE #=GND"; I1
  82. 1160 INPUT "END TWO COORDS,X,Y,Z, METERS"; X2, Y2, Z2
  83. 1170 INPUT "END 2 TO #,OR 0=NC,OR -WIRE #=GND"; I2
  84. 1180 INPUT "WIRE RADIUS, METERS"; A(I): PRINT
  85. 1280 X3 = X2 - X1: Y3 = Y2 - Y1: Z3 = Z2 - Z1
  86. 1310 D = X3 * X3 + Y3 * Y3 + Z3 * Z3: D = SQR(D)
  87. 1330 D(I) = X3 / D: F(I) = Y3 / D: G(I) = Z3 / D: S(I) = D / S1
  88. 1370 N1 = N + 1: N = N1 + S1
  89. 1390 IF I1 = 0 THEN N = N - 1
  90. 1400 IF I2 = 0 THEN N = N - 1
  91. 1410 FOR J = N1 TO N: C(J, 1) = I: C(J, 2) = I: NEXT J
  92. 1450 C(N1, 1) = I1: C(N, 2) = I2: I1 = N1 + 2 * (I - 1)
  93. 1480 I3 = I1: X(I1) = X1: Y(I1) = Y1: Z(I1) = Z1
  94. 1520 IF C(N1, 1) = 0 THEN 1600
  95. 1530 I2 = ABS(C(N1, 1)): F3 = SGN(C(N1, 1)) * S(I2)
  96. 1550 IF C(N1, 1) = -C(N1, 2) THEN F3 = S(I2)
  97. 1560 X(I1) = X(I1) - F3 * D(I2)
  98. 1570 Y(I1) = Y(I1) - F3 * F(I2)
  99. 1580 Z(I1) = Z(I1) - F3 * G(I2)
  100. 1590 I3 = I3 + 1
  101. 1600 I5 = I1 + 1: I6 = N + 2 * I
  102. 1620 FOR I4 = I5 TO I6: J = I4 - I3
  103. 1640 X(I4) = X1 + J * X3 / S1
  104. 1650 Y(I4) = Y1 + J * Y3 / S1
  105. 1660 Z(I4) = Z1 + J * Z3 / S1
  106. 1670 NEXT I4: IF C(N, 2) = 0 THEN 1760
  107. 1690 I2 = ABS(C(N, 2)): F3 = SGN(C(N, 2)) * S(I2)
  108. 1710 I3 = I6 - 1: IF I2 = C(N, 1) THEN F3 = S(I2)
  109. 1730 X(I6) = X(I3) + F3 * D(I2)
  110. 1740 Y(I6) = Y(I3) + F3 * F(I2)
  111. 1750 Z(I6) = Z(I3) + F3 * G(I2)
  112. 1760 NEXT I
  113. 1761 INPUT "FREQ.,MHZ"; F
  114. 1763 PRINT : PRINT , "******** ANTENNA DATA ********": PRINT , "NAME        "; NA$
  115. 1764 PRINT , "DATE        "; DA$: PRINT , "NO. ELEMENTS"; W
  116. 1765 PRINT , "RADIUS     1-"; A(1)
  117.         FOR I = 2 TO W
  118.         IF A(I) <> A(1) THEN PRINT "/"; I; "-"; A(I);
  119.         NEXT I
  120.         PRINT
  121. 1766 PRINT , "FREQUENCY,MHZ"; F: PRINT , "NO. SEGMENTS"; N: PRINT
  122. 1770 PRINT : PRINT "ANTENNA GEOMETRY": PRINT
  123. 1780 PRINT "PULSE CONNECT  COORDINATES-METERS"
  124. 1790 PRINT " # E1 E2      X         Y         Z"
  125. 1810 I1 = 0: FOR I = 1 TO N: J = C(I, 2): IF C(I, 2) < C(I, 1) THEN J = C(I, 1)
  126. 1850 I1 = I1 + 1: IF C(I, 2) <= 0 THEN 1880
  127. 1870 IF C(I, 1) < C(I, 2) THEN I1 = I1 + 1
  128. 1880 PRINT I; C(I, 1); C(I, 2), LEFT$(STR$(X(I1)), 7), LEFT$(STR$(Y(I1)), 7), LEFT$(STR$(Z(I1)), 7)
  129. 1890 IF C(I, 2) < C(I, 1) THEN I1 = I1 + 1
  130. 1900 IF C(I, 1) = 0 THEN C(I, 1) = C(I, 2)
  131. 1910 IF C(I, 2) = 0 THEN C(I, 2) = C(I, 1)
  132. 1920 NEXT I
  133. 1930 INPUT "CHANGE GEOMETRY Y/N"; A$: IF A$ = "Y" THEN 1090
  134. 1960 H0 = 0: PRINT "PROGRAM CONTROL": PRINT
  135. 2000 W = 299.8 / F: M = 4.77783352# * W
  136. 2020 PRINT "WAVELENGTH "; W; " METERS": W = 2 * P / W: W2 = W * W / 2
  137. 2050 INPUT "LOCATION,1=FREE SPACE,2= NEAR EARTH"; G: IF G < 1 OR G > 2 THEN 2050
  138. 2090 INPUT "NO. OF EXCITATIONS"; E3: FOR I = 1 TO E3
  139. 2120 INPUT "PULSE NO.,VOLTAGE MAG., PHASE(DEG)"; E(I), I2, I3
  140. 2140 L(I) = I2 * COS(I3 * P0): M(I) = I2 * SIN(I3 * P0): NEXT I
  141. 2170 INPUT "CURRENT PRINTOUT, Y/N"; B$
  142. 2190 IF H0 = 1 THEN 4110
  143. 2200 INPUT "PATTERN VALUES Y/N"; C$: IF C$ = "N" THEN 2300
  144. 2230 INPUT "ZENITH ANGLE:INITIAL,INCREMENT,NO."; Q2, G2, G3
  145. 2240 INPUT "AZIMUTH ANGLE:INITIAL,INCREMENT,NO."; Q1, M2, M3
  146. 2270 IF H0 = 1 THEN 2365
  147. 2300 INPUT "NO. OF LOADS"; W4: IF W4 = H0 THEN GOTO 2365
  148. 2310 FOR I = 1 TO W4: INPUT "PULSE NO., RESISTANCE, REACTANCE"; N(I), I2, I3
  149. 2340 H(I) = I3 / M: I(I) = -I2 / M: NEXT I
  150. 2365 PRINT "WAIT-PROCESSING"
  151. 2370 FOR I = 1 TO N: P(I) = H0: FOR J = 1 TO N: R(I, J) = H0: B(I, J) = H0: NEXT J: NEXT I: I = H0
  152. 2450 I = I + 1: J = H0
  153. 2470 J = J + 1: I1 = ABS(C(I, 1)): I2 = ABS(C(I, 2)): J4 = I2
  154. 2510 IF I1 > I2 THEN J4 = I1
  155. 2520 F4 = SGN(C(I, 1)) * S(I1): F5 = SGN(C(I, 2)) * S(I2)
  156. 2540 IF C(I, 1) <> -C(I, 2) THEN 2570
  157. 2550 F4 = S(I1): F5 = S(I2)
  158. 2570 T5 = F5 * D(I2) + F4 * D(I1): T6 = F5 * F(I2) + F4 * F(I1): T7 = F5 * G(I2) + F4 * G(I1)
  159. 2600 J1 = ABS(C(J, 1)): J2 = ABS(C(J, 2))
  160. 2620 J3 = J2: IF J1 > J2 THEN J3 = J1
  161. 2640 F4 = SGN(C(J, 1)): F5 = SGN(C(J, 2)): IF C(J, 1) <> -C(J, 2) THEN 2690
  162. 2670 F4 = 1: F5 = F4
  163. 2690 K = H0
  164. 2700 K = K + 1: IF C(J, 1) <> -C(J, 2) THEN 2730
  165. 2720 IF K > 1 THEN 3390
  166. 2730 IF K > 1 THEN 2750
  167. 2740 IF R(I, J) <> 0 THEN 3260
  168. 2750 F = 3 - 2 * K: P1 = 2 * J4 + I - 1: P2 = 2 * J3 + J - 1: P3 = P2 + .5: P4 = J2: F3 = F5: GOSUB 370
  169. 2820 U1 = T1 * F5: U2 = T2 * F5: P3 = P2: P2 = P2 - .5: P4 = J1: F3 = F4
  170. 2880 IF K > 1 THEN 2910
  171. 2890 IF J1 <> J2 THEN 2910
  172. 2900 IF I = J THEN 2920
  173. 2910 GOSUB 370
  174. 2920 X3 = U1 * D(J2) + F4 * T1 * D(J1)
  175. 2930 Y3 = U1 * F(J2) + F4 * T1 * F(J1)
  176. 2940 Z3 = (U1 * G(J2) + F4 * T1 * G(J1)) * F
  177. 2950 D1 = (X3 * T5 + Y3 * T6 + Z3 * T7) * W2
  178. 2960 X3 = U2 * D(J2) + F4 * T2 * D(J1)
  179. 2970 Y3 = U2 * F(J2) + F4 * T2 * F(J1)
  180. 2980 Z3 = (U2 * G(J2) + F4 * T2 * G(J1)) * F
  181. 2990 D2 = (X3 * T5 + Y3 * T6 + Z3 * T7) * W2
  182. 3000 P1 = P1 + .5: P2 = P3: P3 = P3 + 1: P4 = J2: F3 = F5: GOSUB 370
  183. 3060 U1 = -T1: U2 = -T2: P1 = P1 - 1: GOSUB 370
  184. 3100 U1 = (U1 + T1) / S(J2): U2 = (U2 + T2) / S(J2)
  185. 3120 P1 = P1 + 1: P3 = P2: P2 = P2 - 1: P4 = J1: F3 = F4: GOSUB 370
  186. 3180 U3 = T1: U4 = T2: P1 = P1 - 1: GOSUB 370
  187. 3220 U1 = U1 + (U3 - T1) / S(J1): U2 = U2 + (U4 - T2) / S(J1)
  188. 3240 R(I, J) = R(I, J) + F * (D1 + U1): B(I, J) = B(I, J) + F * (D2 + U2)
  189. 3260 IF K > 1 THEN 3390
  190. 3270 IF J < I THEN 3390
  191. 3280 IF J1 <> J2 THEN 3390
  192. 3290 IF I1 * I2 <> J1 * J2 THEN 3390
  193. 3300 R(J, I) = R(I, J): B(J, I) = B(I, J): P1 = J + 1
  194. 3330 IF P1 > N THEN 3390
  195. 3340 IF ABS(C(P1, 2)) <> ABS(C(J, 2)) THEN 3390
  196. 3350 P2 = I + 1: IF P2 > N THEN 3390
  197. 3370 R(P2, P1) = R(I, J): B(P2, P1) = B(I, J)
  198. 3390 IF K < G THEN 2700
  199. 3400 IF J < N THEN 2470
  200. 3410 IF I < N THEN 2450
  201. 3420 H0 = 1: IF W4 = P(1) THEN 3490
  202. 3440 FOR I = H0 TO W4: J = N(I): R(J, J) = R(J, J) + H(I): B(J, J) = B(J, J) + I(I): NEXT I
  203. 3490 FOR I = H0 TO N: S1 = 0: FOR J = H0 TO N
  204. 3520 IF P(J) = H0 THEN 3610
  205. 3530 FOR K = H0 TO N: IF P(K) = H0 THEN 3600
  206. 3550 S2 = R(J, K) * R(J, K) + B(J, K) * B(J, K)
  207. 3560 IF (S1 - S2) > 0 THEN 3600
  208. 3570 I1 = J: I2 = K: S1 = R(J, K) * R(J, K) + B(J, K) * B(J, K)
  209. 3600 NEXT K
  210. 3610 NEXT J
  211. 3620 P(I2) = P(I2) + 1: IF I1 = I2 THEN 3720
  212. 3640 FOR L = H0 TO N: S1 = R(I1, L): S2 = B(I1, L)
  213. 3670 R(I1, L) = R(I2, L): B(I1, L) = B(I2, L): R(I2, L) = S1: B(I2, L) = S2: NEXT L
  214. 3720 H(I) = I1: I(I) = I2: S1 = R(I2, I2): S2 = B(I2, I2)
  215. 3760 T = S1 * S1 + S2 * S2: R(I2, I2) = H0: B(I2, I2) = 0
  216. 3790 FOR L = H0 TO N: H1 = (R(I2, L) * S1 + B(I2, L) * S2) / T
  217. 3810 B(I2, L) = (B(I2, L) * S1 - R(I2, L) * S2) / T
  218. 3820 R(I2, L) = H1: NEXT L
  219. 3840 FOR L = H0 TO N: IF I2 = L THEN 3950
  220. 3860 S1 = R(L, I2): S2 = B(L, I2): R(L, I2) = 0: B(L, I2) = R(L, I2)
  221. 3900 FOR J = H0 TO N: H1 = R(L, J) - (R(I2, J) * S1 - B(I2, J) * S2)
  222. 3920 B(L, J) = B(L, J) - (R(I2, J) * S2 + B(I2, J) * S1)
  223. 3930 R(L, J) = H1: NEXT J
  224. 3950 NEXT L: NEXT I
  225. 3970 FOR I = H0 TO N: L = N + 1 - I: IF H(L) = I(L) THEN 4100
  226. 4000 I1 = H(L): I2 = I(L): FOR K = H0 TO N: S1 = R(K, I1): S2 = B(K, I1)
  227. 4050 R(K, I1) = R(K, I2): B(K, I1) = B(K, I2): R(K, I2) = S1: B(K, I2) = S2: NEXT K
  228. 4100 NEXT I
  229. 4110 FOR I = H0 TO N: J(I) = 0: K(I) = J(I): NEXT I
  230. 4150 FOR I = H0 TO E3: I1 = H0: IF C(E(I), 1) = -C(E(I), 2) THEN I1 = 2
  231. 4180 J(E(I)) = I1 * M(I) / M: K(E(I)) = -I1 * L(I) / M: NEXT I
  232. 4210 FOR I = H0 TO N: H(I) = 0: I(I) = H(I): FOR J = H0 TO N
  233. 4250 H(I) = H(I) + R(I, J) * J(J) - B(I, J) * K(J)
  234. 4260 I(I) = I(I) + R(I, J) * K(J) + B(I, J) * J(J)
  235. 4270 NEXT J: NEXT I
  236. 4280 IF P$ = "Y" THEN OPEN "LPT1" FOR OUTPUT AS #4
  237. 4290 PRINT : PRINT "*****  SOURCE DATA  *****": O1 = 0
  238. 4320 FOR I = H0 TO E3: J = E(I): I1 = H0: IF C(E(I), 1) = -C(E(I), 2) THEN I1 = 2
  239. 4330 H1 = -K(J) * M / I1: H2 = J(J) * M / I1
  240. 4360 T = H(J) * H(J) + I(J) * I(J): T1 = (H1 * H(J) + H2 * I(J)) / T
  241. 4380 T2 = (H2 * H(J) - H1 * I(J)) / T: O1 = O1 + (H1 * H(J) + H2 * I(J)) / 2
  242. 4400 PRINT "PULSE "; J; "VOLTAGE=("; L(I); ","; M(I); "J)"
  243. 4410 PRINT , "CURRENT="; H(J); ","; I(J); "J"
  244. 4420 PRINT , "IMPEDANCE=("; T1; ","; T2; "J)"
  245. 4430 NEXT I
  246. 4440 PRINT "POWER="; O1; "WATTS": IF B$ = "N" THEN 4540
  247. 4460 PRINT "*****  CURRRENT DATA  *****"
  248. 4470 PRINT "PULSE  REAL    IMAG.      MAG.    PHASE"
  249. 4480 PRINT " NO.   AMP.    AMP.       AMP.    DEG."
  250. 4490 FOR I = H0 TO N: S1 = SQR(H(I) * H(I) + I(I) * I(I))
  251. 4510 S2 = ATN(I(I) / H(I)) / P0: M9 = 10000: IF S2 <= 0 THEN 4518
  252. 4514 IF H(I) + I(I) < 0 THEN S2 = S2 - 180
  253. 4516 GOTO 4520
  254. 4518 IF H(I) < 0 THEN S2 = S2 + 180
  255. 4520 PRINT I; INT(H(I) * M9) / M9, INT(I(I) * M9) / M9, INT(S1 * M9) / M9, INT(S2 * M9) / M9: NEXT I
  256. 4540 PRINT : IF C$ = "N" THEN 5505
  257. 4560 K9 = .016678 / O1: PRINT "***** PATTERN DATA  *****"
  258. 4570 PRINT "ANGLE, DEGREES ** PATTERN VALUES,DB"
  259. 4590 PRINT "ZENITH", "AZIMUTH", "HOR.", "VERT."
  260. 4600 M1 = Q1: FOR I1 = H0 TO M3: G1 = Q2: FOR I2 = H0 TO G3: U3 = M1 * P0: U4 = G1 * P0
  261. 4660 V1 = -SIN(U3): V2 = COS(U3): R3 = COS(U4)
  262. 4690 T1 = R3 * V2: T2 = -R3 * V1: T3 = -SIN(U4)
  263. 4720 R1 = -T3 * V2: R2 = T3 * V1: FOR K = H0 TO G: IF K = H0 THEN 4830
  264. 4760 R3 = -R3: X3 = X1: Y3 = Y1: Z3 = Z1
  265. 4800 X4 = X2: Y4 = Y2: Z4 = Z2
  266. 4830 X1 = 0: Y1 = X1: Z1 = X1
  267. 4860 X2 = X1: Y2 = X1: Z2 = X1: FOR I = H0 TO N: IF K = H0 THEN 4920
  268. 4910 IF C(I, 1) = -C(I, 2) THEN 5230
  269. 4920 L = C(I, 2): IF L < C(I, 1) THEN L = C(I, 1)
  270. 4940 J = 2 * L - 1 + I: I3 = 3: F3 = H0: F4 = F3
  271. 4980 IF ABS(C(I, H0)) = ABS(C(I, 2)) THEN 5030
  272. 4990 I3 = 2: F4 = I3
  273. 5010 F3 = SGN(C(I, I3)): L = ABS(C(I, I3))
  274. 5030 O = -(R1 * D(L) + R2 * F(L) + R3 * G(L)) * F3
  275. 5040 S1 = W * S(L) / 2: IF ABS(O) < .0000001 THEN 5070
  276. 5060 GOTO 5090
  277. 5070 O = (2 - O * O * S1 * S1 / 3) * S1: GOTO 5100
  278. 5090 O = 2 * SIN(O * S1) / O
  279. 5100 S2 = W * (X(J) * R1 + Y(J) * R2 + Z(J) * R3)
  280. 5110 S1 = COS(S2): S2 = SIN(S2)
  281. 5130 B1 = (S1 * H(I) - S2 * I(I)) * O / F4: B2 = (S1 * I(I) + S2 * H(I)) * O / F4
  282. 5150 X1 = X1 + B1 * D(L) * F3: X2 = X2 + B2 * D(L) * F3
  283. 5170 Y1 = Y1 + B1 * F(L) * F3: Y2 = Y2 + B2 * F(L) * F3
  284. 5190 Z1 = Z1 + B1 * G(L) * F3: Z2 = Z2 + B2 * G(L) * F3
  285. 5210 I3 = I3 - H0: IF I3 = H0 THEN 5010
  286. 5230 NEXT I: IF K = H0 THEN 5310
  287. 5250 X1 = X3 - X1: X2 = X4 - X2
  288. 5270 Y1 = Y3 - Y1: Y2 = Y4 - Y2
  289. 5290 Z1 = Z3 + Z1: Z2 = Z4 + Z2
  290. 5310 NEXT K
  291. 5320 H2 = (X1 * T1 + Y1 * T2 + Z1 * T3) * G0
  292. 5330 H1 = (X2 * T1 + Y2 * T2 + Z2 * T3) * G0
  293. 5340 X4 = (X1 * V1 + Y1 * V2) * G0
  294. 5350 X3 = (X2 * V1 + Y2 * V2) * G0
  295. 5360 P1 = (X3 * X3 + X4 * X4) * K9: IF P1 > 1E-30 THEN 5400
  296. 5380 P1 = -999: GOTO 5410
  297. 5400 P1 = 4.343 * LOG(P1)
  298. 5410 P2 = K9 * (H1 * H1 + H2 * H2)
  299. 5420 IF P2 > 1E-30 THEN 5450
  300. 5430 P2 = -999: GOTO 5460
  301. 5450 P2 = 4.343 * LOG(P2)
  302. 5460 PRINT INT(G1 * M9) / M9, INT(M1 * M9) / M9, INT(P1 * M9) / M9, INT(P2 * M9) / M9
  303. 5470 G1 = G1 + G2: NEXT I2: M1 = M1 + M2: NEXT I1: PRINT
  304. 5500 PRINT : PRINT "PRESS R TO RERUN, ANY OTHER KEY FOR TO END"
  305. 5504 Q$ = INKEY$: IF Q$ = "" THEN 5504
  306. 5505 IF Q$ = "R" OR Q$ = "r" THEN RUN
  307. 5510 END
  308.  
  309.