日の出、南中、入り

 投稿者:SECOND  投稿日:2010年11月17日(水)17時41分18秒
  !山中さんとダブってしまったが、書いてしまっていたので、捨てるのもモッタイナイかと、
!投稿することにした。合わせてご参考に。


!を、そのまま計算したものであるが、
!"Calculate current Julian Cycle" と、"Approximate Solar Noon" の2項目を取外し
!
!代りに、J* =JulianDate.( UT 00:00 に換算)-(当地~当地の中央標準時との時差)
!
!とした。J* は、変数名に使用できないので、Jx のシンボルを用いている。
!プログラムは、1~12月間の16ポイントで、暦象年表と比較表示している。
!-------------------------------------------------------

OPTION ANGLE DEGREES
!
! E135°00'           N34°38'          !明石市相生町(現在の天文町2丁目)
! E139°44' 28.8759"  N35°39' 29.1572" !東京(日本経緯度原点)旧東京天文台
!
LET Ls=135                      !当地の中央標準時の経度(明石市)
LET Lw=139 +44/60 +28.8759/3600 !          当地の経度(東京)
LET φ= 35 +39/60 +29.1572/3600 !          当地の緯度(東京)
PRINT USING "東京都の、緯度=##.###°経度=###.###°" :φ,Lw
!
!均時差= 視太陽時-平均太陽時 ・・明石市でのみ、JST 12:00-均時差 に南中する。
!
!東京都の           均時差    出   南中     入
DATA 2010, 1, 7, " -6m01.6s  6:51 11:47:07 16:43"
DATA 2010, 2, 7, "-14m04.6s  6:36 11:55:07 17:14"
DATA 2010, 3, 7, "-11m08.7s  6:04 11:52:09 17:41"
DATA 2010, 4, 7, " -2m17.1s  5:20 11:43:17 18:07"
DATA 2010, 4,16, " +0m04.0s  5:08 11:40:57 18:15"
DATA 2010, 5, 7, " +3m25.7s  4:44 11:37:36 18:32"
DATA 2010, 6, 7, " +1m15.6s  4:25 11:39:48 18:55"
DATA 2010, 6,13, " +0m03.9s  4:25 11:41:00 18:58"
DATA 2010, 7, 7, " -4m49.6s  4:31 11:45:53 19:00"
DATA 2010, 8, 7, " -5m50.5s  4:53 11:46:52 18:40"
DATA 2010, 9, 2, " +0m08.1s  5:13 11:40:52 18:08"
DATA 2010, 9, 7, " +1m47.0s  5:17 11:39:13 18:01"
DATA 2010,10, 7, "+12m00.0s  5:40 11:29:00 17:17"
DATA 2010,11, 7, "+16m20.5s  6:08 11:24:42 16:41"
DATA 2010,12, 7, " +8m47.8s  6:37 11:32:17 16:28"
DATA 2010,12,25, " +0m14.0s  6:48 11:40:51 16:33"

DO
   READ IF MISSING THEN EXIT DO: YY,MM,DD,w$
   PRINT "暦象年表の東京→ ";w$
   CALL sun( YY,MM,DD )
   PRINT
LOOP

!---------------------------
! 日の出、入りの計算と表示
!---------------------------

SUB sun( YY,MM,DD )
   LET Jx=JDN00(YY,MM,DD)-.5 -((Lw-Ls)/360)  !JD.年月日(UT00:00) - (当地~当地の中央標準時との時差)
   !                                                                       (近日点 0°=2000.1.3_14:00)
   LET M= MOD( 357.5291 +.98560028*(Jx-2451545.0) ,360) !M 平均近点角 ←Jx,(357.5291°=2000.1.1_00:00)
   LET C= 1.9148*SIN(M) +.02*SIN(2*M) +.0003*SIN(3*M)   !C 補正( 近点角-平均近点角) ← M
   LET λ= MOD( M +C +282.9372, 360)                    !λ黄経 ← M,C,(282.9372= 近日点2000.1.3_14:00の黄経)
   !
   LET Jtransit= Jx +.0053*SIN(M) -.0069*SIN(2*λ)                 !太陽 南中の julian date
   !
   LET δ= ASIN( SIN(λ)*SIN(23.45) )                              !太陽の赤緯 ← 黄経λ
   LET W0= ACOS( (SIN(-.83) -SIN(φ)*SIN(δ)) /(COS(φ)*COS(δ)) ) !南中~SunSetの角度
   !
   LET Jset= Jtransit +W0/360
   LET Jrise= Jtransit-(Jset-Jtransit)
   !
   PRINT USING "####/##/## ":YY,MM,DD;
   PRINT "日の出 南中 入 ";
   CALL HM(Jrise)
   CALL HMS(Jtransit)
   CALL HM(Jset)
   PRINT USING " Jx=#######.#####":Jx;
   PRINT USING " Jrise=#######.##### Jtransit=#######.##### Jset=#######.#####":Jrise,Jtransit,Jset;
   PRINT " 太陽の赤緯δ=";δ;
   PRINT "時角ω=";W0
END SUB

!-------------------------
! 時、分 の表示
!-------------------------

SUB HM(J)
   LET h=24*FP(J)
   LET m=ROUND(60*FP(h))
   LET h=IP(h)
   IF m=60 THEN
      LET m=0
      LET h=h+1
   END IF
   PRINT USING " ##:%%": h,m;
END SUB

!-------------------------
! 時、分、秒 の表示
!-------------------------

SUB HMS(J)
   LET h=24*FP(J)
   LET m=60*FP(h)
   LET h=IP(h)
   LET s=ROUND(60*FP(m))
   LET m=IP(m)
   IF s=60 THEN
      LET s=0
      LET m=m+1
      IF m=60 THEN
         LET m=0
         LET h=h+1
      END IF
   END IF
   PRINT USING " ##:%%:%%": h,m,s;
END SUB

!-------------------------------------------------------------
!Julian Day Number( JDN 1900.3.1~ 2100.2.28 ) 近年の範囲
!-------------------------------------------------------------

!西暦年月日 YY.MM.DD から、ユリウス日 J_ の計算
FUNCTION JDN00( YY,MM,DD)
   IF 2< MM THEN
      LET WM=MM+1
      LET WY=YY
   ELSE
      LET WM=MM+13
      LET WY=YY-1
   END IF
   LET JDN00=INT(365.25*WY)+INT(30.6001*WM)+DD+1720982
END FUNCTION

END !下の画像は、クリックして(1/1)にした後で、さらに、クリック、又は、保存しないと原寸になりません。
 

戻る