[PHP] 太陽高度角と方位角の計算 : してログ

[PHP] 太陽高度角と方位角の計算

PHP天文 2013118

太陽高度角と方位角を、与えられた日時と経緯度から計算する関数を作成しました。 直接の元にした計算プログラムは、こちらのページのC言語版です。 計算方法については、こちらのページをご覧ください。

使い方
list( $elevation, $azimuth ) = solar_angle( $lat, $lon, $dt, $timelon );

与えられた引数における太陽高度角と方位角を返します。 lat、lon はそれぞれ、緯度、経度です。 dt にタイムスタンプ、timelon は標準時における子午線経度を指定してください。 すべての引数は省略でき、その場合、lat、lon は日本経緯度原点、dt は現在日時、timelon は 135 が使われます。 経緯度を六十進で与えたい場合は、139+44/60+28.8869/3600(東経139度44分28秒8869)のような式で書くことができます。 戻り値は、高度、方位の順の配列になりますので、list( $e, $a ) のように受け取って下さい(元プログラムではラジアンですが、度数に変換しています)。

うるう年については特別考慮していません(元のプログラムでは2月は28日固定として通算日を計算していますが、PHP版では date('z') によりうるう年の2月は29日になる点だけ異なります)。 これについては、太陽年との端数 0.2422×n 日を「$A = 2 * pi() * $yday / 365」このあたりの式で調整してあげればいいのかなと思いましたが、ちょっと自信が無いのでこのままとしました。 よりベタ移植がいい人は、通算日の計算を元プログラムに合わせて変更してください。

また、dec2sex、dir16 の関数を同梱しています。 dec2sex は、十進経緯度を六十進表記に変換します。 dir16 は、方位角(度)を16方位(南南東とか)に変換します。

こちらの関数は、LHCAM で使用するために作成しました。

0 件のコメント
名前:
コメント: