JavaScriptで書くとこんな感じです。 北極星と北斗七星の位置計算(東京)
------- ここから ------
<HTML>
<HEAD>
<TITLE>北斗七星の位置</TITLE>
<script language="JavaScript">
<!--
function Calcmjd(yy,mm,dd)
{ // 準ユリウス日(mjd)の計算
if( mm <= 2) {
y = yy - 1; m = mm + 12;
} else {
y = yy; m = mm;
}
ret = Math.floor(365.25 * y) + Math.floor(y / 400) - Math.floor(y / 100) ;
ret = ret + Math.floor(30.59 * ( m - 2)) + dd - 678912;
return ret;
}
// -->
</script>
</HEAD>
<BODY BGCOLOR="#E0E0EE">
<script language="JavaScript">
<!--
//
RA = new Array(8); // 赤経データ
DE = new Array(8); // 赤緯データ
NM = new Array(8); // 星名データ
PI = 3.14159265358979;
RAD = 180.0 / PI;
KEIDO = 139.75; // 経度 東経139度45分(東京)
IDO = 35.65; // 緯度 北緯35度39分(東京)
//
// 日時関連データの設定
//
CuDate = new Date(); // 現在の日時
yy = CuDate.getYear();
mm = CuDate.getMonth() + 1;
dd = CuDate.getDate();
hr = CuDate.getHours();
mn = CuDate.getMinutes();
sc = CuDate.getSeconds();
MJD = Calcmjd(yy,mm,dd) + hr / 24 + mn / 1440 + sc / 86400 - 0.375;
d = (0.671262 + 1.002737909 * (MJD - 40000) + KEIDO/360);
LST = 2*PI*(d - Math.floor(d));
document.write("<TT><CENTER><B>東京から見た北斗七星の位置<P>");
document.write(yy, "年", mm, "月", dd,"日 ", hr, "時", mn,"分",sc,"秒");
document.write("<P> 方位角 高度")
// 星のデータの設定
RA[0] = 2.5300; DE[0] = 89.267; NM[0] = "UMi α ";
RA[1] = 11.062; DE[1] = 61.750; NM[1] = "UMa α ";
RA[2] = 11.030; DE[2] = 56.383; NM[2] = "UMa β ";
RA[3] = 11.897; DE[3] = 53.700; NM[3] = "UMa γ ";
RA[4] = 12.257; DE[4] = 57.033; NM[4] = "UMa δ ";
RA[5] = 12.900; DE[5] = 55.967; NM[5] = "UMa ε ";
RA[6] = 13.398; DE[6] = 54.933; NM[6] = "UMa ζ ";
RA[7] = 13.792; DE[7] = 49.317; NM[7] = "UMa η ";
// 星の表示位置の計算
document.write("<BR>");
srid = Math.sin(IDO / RAD);
crid = Math.cos(IDO / RAD);
for (i=0;i<8;i++) {
ra = 15 * RA[i] / RAD;
dc = DE[i] / RAD;
ha = LST - ra;
sdc = Math.sin(dc);
cdc = Math.cos(dc);
sha = Math.sin(ha);
cha = Math.cos(ha);
xs = sdc * srid + cdc * crid * cha;
h = Math.asin(xs);
s = cdc * sha;
c = cdc * srid * cha - sdc * crid;
if (c < 0) a = Math.atan(s/c) + PI;
else if (c > 0 && s <= 0) a = Math.atan(s/c) + 2*PI;
else a = Math.atan(s/c);
if (h == 0) h = 0.00001;
a = a * RAD;
h = h * RAD;
if (h < 0) continue;
if (a < 10) sa = "00" + a;
else if (a < 100) sa = "0" + a;
else sa = "" + a;
if (h < 10) sh = "0" + h;
else sh = "" + h;
if (i == 1) document.write("<BR>");
ssa = sa.substring(0,6);
ssh = sh.substring(0,5);
document.write(NM[i]," ",ssa," ",ssh,"<BR>");
}
// -->
</script>
</BODY>
</HTML>
お礼
模範プログラムありがとうございました。 とても参考になりました^^