○計算の基礎となる太陽と月の位置(黄経)の略算式 (海上保安庁水路部 )
'現式と違うところは、現式をTA(0)〜TA(19)のように整理して、
度に deg=PI/180 を乗じてラジアン計算としている。
'*****************太陽の黄径************************
OOKEI:
deg = 3.141592653589794 / 180
W = (YY - 1900) / 4: F = W - Int(W)
'YY に 西暦の4桁 MM に月 DD に日を入れる
V = Int(W): WW = V + F
Y = Int(1461 * WW): X = Int((MM + 7) / 10):
R = Int(1 - F): S = Int(0.44 * (MM + 4.4))
Z = Y + 31 * MM + DD + (X - 1) * R - X *
S - 27424
If (YY = 1900 And MM < 3) Or YY <=
1899 Then Z = Z + 1
If (YY = 2100 And MM >= 3) Or YY >=
2101 Then Z = Z - 1
jj = HH / 24: T = (Z + jj) / 365.25
HHは時間 T が時刻引数
TA(0) = deg * 279.0358 + deg * 360.00769
* T
TA(1) = (deg * 1.9159 - deg * 0.00005 * T)
* Sin(deg * 356.531 + deg * 359.991 * T)
TA(2) = (deg * 0.02) * Sin(deg * 353.06 +
deg * 719.981 * T)
TA(3) = -(deg * 0.0048) * Sin(deg * 248.64
- deg * 19.341 * T)
TA(4) = (deg * 0.002) * Sin(deg * 285# +
deg * 329.64 * T)
TA(5) = (deg * 0.0018) * Sin(deg * 334.2
- deg * 4452.67 * T)
TA(6) = (deg * 0.0018) * Sin(deg * 293.7
- deg * 0.2 * T)
TA(7) = (deg * 0.0015) * Sin(deg * 242.4
+ deg * 450.37 * T)
TA(8) = (deg * 0.0013) * Sin(deg * 211.1
+ deg * 225.18 * T)
TA(9) = (deg * 0.0008) * Sin(deg * 208# +
deg * 659.29 * T)
TA(10) = (deg * 0.0007) * Sin(deg * 53.5
+ deg * 90.38 * T)
TA(11) = (deg * 0.0007) * Sin(deg * 12.1
- deg * 30.35 * T)
TA(12) = (deg * 0.0006) * Sin(deg * 239.1
+ deg * 337.18 * T)
TA(13) = (deg * 0.0005) * Sin(deg * 10.1
- deg * 1.5 * T)
TA(14) = (deg * 0.0005) * Sin(deg * 99.1
- deg * 22.81 * T)
TA(15) = (deg * 0.0004) * Sin(deg * 264.8
+ deg * 315.56 * T)
TA(16) = (deg * 0.0004) * Sin(deg * 233.8
+ deg * 299.3 * T)
TA(17) = -(deg * 0.0004) * Sin(deg * 198.1
+ deg * 720.02 * T)
TA(18) = (deg * 0.0003) * Sin(deg * 349.6
+ deg * 1079.97 * T)
TA(19) = (deg * 0.0003) * Sin(deg * 241.2
- deg * 44.43 * T)
La = 0
For i = 0 To 19: La = La + TA(i): Next
以上の式を集計
Lb = La / deg
ラジアンの結果を角度になおす。
'Lb = (Lb / 360 - Int(Lb / 360)) * 360
360度以内の数値にする。
Do While Lb >= 360: Lb = Lb - 360: Loop
V.Basic の Do While 文を使うと
Do While Lb < 0: Lb = Lb + 360: Loop
2行だが分かりやすくなる。
Return
'*************月の黄経 *******************
OOkeiMoon:
T = T + (0.0317 * T + 1.43) * 10 ^ -6
太陽と同じTの値を左のように再計算する
AAA = 0: AAb = 0
For i = 81 To 84: L(i) = 0: Next
L(81) = deg * 0.004 * Sin(deg * 93.8 - deg
* 1.33 * T)
以下8行 は11 行目 の AAb を 事前に計算
L(82) = deg * 0.002 * Sin(deg * 248.6 - deg
* 19.34 * T)
L(83) = deg * 0.0006 * Sin(deg * 66 + deg
* 0.2 * T)
L(84) = deg * 0.0006 * Sin(deg * 249 - deg
* 19.3 * T)
For i = 81 To 84: AAA = AAA + L(i): Next
AAb = AAA / deg
'AAb = (AAb / 360 - Int(AAb / 360)) * 360
Do While AAb >= 360: AAb = AAb - 360:
Loop
Do While AAb < 0: AAb = AAb + 360: Loop
For i = 0 To 63: L(i) = 0: Next
L(0) = deg * 124.8754 + deg * 4812.67881
* T
L(1) = (deg * 6.2887) * Sin(deg * 338.915
+ deg * 4771.9886 * T + AAb * deg)
L(2) = (deg * 1.274) * Sin(deg * 107.248
- deg * 4133.3536 * T)
L(3) = (deg * 0.6583) * Sin(deg * 51.668
+ deg * 8905.3422 * T)
L(4) = (deg * 0.2136) * Sin(deg * 317.831
+ deg * 9543.9773 * T)
L(5) = (deg * 0.1856) * Sin(deg * 176.531
+ deg * 359.9905 * T)
L(6) = (deg * 0.1143) * Sin(deg * 292.463
+ deg * 9664.0404 * T)
L(7) = (deg * 0.0588) * Sin(deg * 86.16 +
deg * 638.635 * T)
L(8) = (deg * 0.0572) * Sin(deg * 103.78
- deg * 3773.363 * T)
L(9) = (deg * 0.0533) * Sin(deg * 30.58 +
deg * 13677.331 * T)
L(10) = (deg * 0.0459) * Sin(deg * 124.86
- deg * 8545.352 * T)
L(11) = (deg * 0.041) * Sin(deg * 342.38
+ deg * 4411.998 * T)
L(12) = (deg * 0.0348) * Sin(deg * 25.83
+ deg * 4452.671 * T)
L(13) = (deg * 0.0305) * Sin(deg * 155.45
+ deg * 5131.979 * T)
L(14) = (deg * 0.0153) * Sin(deg * 240.79
+ deg * 758.698 * T)
L(15) = (deg * 0.0125) * Sin(deg * 271.38
+ deg * 14436.029 * T)
L(16) = (deg * 0.011) * Sin(deg * 226.45
- deg * 4892.052 * T)
L(17) = (deg * 0.0107) * Sin(deg * 55.58
- deg * 13038.696 * T)
L(18) = (deg * 0.01) * Sin(deg * 296.75 +
deg * 14315.966 * T)
L(19) = (deg * 0.0085) * Sin(deg * 34.5 -
deg * 8266.71 * T)
L(20) = (deg * 0.0079) * Sin(deg * 290.7
- deg * 4493.34 * T)
L(21) = (deg * 0.0068) * Sin(deg * 228.2
+ deg * 9265.33 * T)
L(22) = (deg * 0.0052) * Sin(deg * 133.1
+ deg * 319.32 * T)
L(23) = (deg * 0.005) * Sin(deg * 202.4 +
deg * 4812.66 * T)
L(24) = (deg * 0.0048) * Sin(deg * 68.6 -
deg * 19.34 * T)
L(25) = (deg * 0.004) * Sin(deg * 34.1 +
deg * 13317.34 * T)
L(26) = (deg * 0.004) * Sin(deg * 9.5 + deg
* 18449.32 * T)
L(27) = (deg * 0.004) * Sin(deg * 93.8 -
deg * 1.33 * T)
L(28) = (deg * 0.0039) * Sin(deg * 103.3
+ deg * 17810.68 * T)
L(29) = (deg * 0.0037) * Sin(deg * 65.1 +
deg * 5410.62 * T)
L(30) = (deg * 0.0027) * Sin(deg * 321.3
+ deg * 9183.99 * T)
L(31) = (deg * 0.0026) * Sin(deg * 174.8
- deg * 13797.39 * T)
L(32) = (deg * 0.0024) * Sin(deg * 82.7 +
deg * 998.63 * T)
L(33) = (deg * 0.0024) * Sin(deg * 4.7 +
deg * 9224.66 * T)
L(34) = (deg * 0.0022) * Sin(deg * 121.4
- deg * 8185.36 * T)
L(35) = (deg * 0.0021) * Sin(deg * 134.4
+ deg * 9903.97 * T)
L(36) = (deg * 0.0021) * Sin(deg * 173.1
+ deg * 719.98 * T)
L(37) = (deg * 0.0021) * Sin(deg * 100.3
- deg * 3413.37 * T)
L(38) = (deg * 0.002) * Sin(deg * 248.6 -
deg * 19.34 * T)
L(39) = (deg * 0.0018) * Sin(deg * 98.1 +
deg * 4013.29 * T)
L(40) = (deg * 0.0016) * Sin(deg * 344.1
+ deg * 18569.38 * T)
L(41) = (deg * 0.0012) * Sin(deg * 52.1 -
deg * 12678.71 * T)
L(42) = (deg * 0.0011) * Sin(deg * 250.3
+ deg * 19208.02 * T)
L(43) = (deg * 0.0009) * Sin(deg * 81 - deg
* 8586# * T)
L(44) = (deg * 0.0008) * Sin(deg * 207 +
deg * 14037.3 * T)
L(45) = (deg * 0.0008) * Sin(deg * 31 - deg
* 7906.7 * T)
L(46) = (deg * 0.0007) * Sin(deg * 346 +
deg * 4052# * T)
L(47) = (deg * 0.0007) * Sin(deg * 294 -
deg * 4853.3 * T)
L(48) = (deg * 0.0007) * Sin(deg * 90 + deg
* 278.6 * T)
L(49) = (deg * 0.0006) * Sin(deg * 237 +
deg * 1118.7 * T)
L(50) = (deg * 0.0005) * Sin(deg * 82 + deg
* 22582.7 * T)
L(51) = (deg * 0.0005) * Sin(deg * 276 +
deg * 19088# * T)
L(52) = (deg * 0.0005) * Sin(deg * 73 - deg
* 17450.7 * T)
L(53) = (deg * 0.0005) * Sin(deg * 112 +
deg * 5091.3 * T)
L(54) = (deg * 0.0004) * Sin(deg * 116 -
deg * 398.7 * T)
L(55) = (deg * 0.0004) * Sin(deg * 25 - deg
* 120.1 * T)
L(56) = (deg * 0.0004) * Sin(deg * 181 +
deg * 9584.7 * T)
L(57) = (deg * 0.0004) * Sin(deg * 18 + deg
* 720# * T)
L(58) = (deg * 0.0003) * Sin(deg * 60 - deg
* 3814# * T)
L(59) = (deg * 0.0003) * Sin(deg * 13 - deg
* 3494.7 * T)
L(60) = (deg * 0.0003) * Sin(deg * 13 + deg
* 18089.3 * T)
L(61) = (deg * 0.0003) * Sin(deg * 152 +
deg * 5492# * T)
L(62) = (deg * 0.0003) * Sin(deg * 317 -
deg * 40.7 * T)
L(63) = (deg * 0.0003) * Sin(deg * 348 +
deg * 23221.3 * T)
La = 0
For i = 0 To 63: La = La + L(i): Next
以上の式を集計
LM = La / deg:
ラジアンの結果を角度になおす。
'LM = (LM / 360 - Int(LM / 360)) * 360
360度以内の数値にする。
Do While LM >= 360:LM =LM - 360: Loop
V.Basic の Do While 文を使うと
Do While LM <0: LM =LM + 360: Loop
2行だが分かりやすくなる。
Return
戻る