○計算の基礎となる太陽と月の位置(黄経)の略算式  (海上保安庁水路部   

'現式と違うところは、現式を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は時間     が時刻引数

 

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 L >= 360: L = L - 360: Loop         V.Basic Do While 文を使うと

Do While L < 0: L = L + 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

戻る