みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

北斗七星の位置と角度

日時から北斗七星の位置と角度を計算で求める方法はありますか?
わかりやすくお願いしますm(__)m

投稿日時 - 2009-02-06 17:24:03

QNo.4694625

すぐに回答ほしいです

質問者が選んだベストアンサー

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>

投稿日時 - 2009-02-07 10:35:09

お礼

模範プログラムありがとうございました。
とても参考になりました^^

投稿日時 - 2009-02-24 20:38:28

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

恒星の位置計算はこんな方法です。
http://star.gs/nyumon/keisan.htm

・北斗七星の各星の赤経・赤緯を調べる。
・観測地の緯度・経度を調べる。
・上記の計算方法で計算する。

投稿日時 - 2009-02-07 06:52:18

ANo.2

私は8月の9時の位置を覚えているので暗算でしてしまうので
計算した事がありません。
http://www.nao.ac.jp/hoshizora/image/chart08_s.jpg

北斗七星は真西です。

9月には15度斜めに(西に)傾き、
http://www.ksky.ne.jp/~tatsuo/gif/9gatu.gif

http://www.nao.ac.jp/hoshizora/chartlist.html

11月に真下へ。
2月には真東へ。
5月には真上へ。
1ヶ月で15度。3ヶ月で90度を加えています。
(実際には360/恒星年)

これを計算すれば、
2月15日の8時を基準点に取り、
観測月日(経過日数)を度に置き換えます。
(計算結果1)

時刻8時を基準点に取り、7時なら-15度、9時なら+15度を加えます。

結果が90度なら、真南。
180度なら真西。
270度なら真下。
となります。

真北を0度にしたい場合、
11月15日8時を0度基準にすれば良いです。

とりあえずは「雑な計算をし」合っているか確かめるべきです。
計算が合わないなら、その理由を考える事です。

太陽年と恒星年は別物です。
恒星は歳差の影響を受けます。

私も意地悪ですので、
たまに方程式にはに故意的な間違いを記載しておく事があります。
使えばすぐに気が付く物ですから。^○^

使わなければ永久に知る事はありません。
頑張って勉強してください。^^

投稿日時 - 2009-02-06 23:59:29

お礼

詳しい解説ありがとうござます^o^
気付いた点は一ヶ月30度ってところだけです・・・。

ありがとうございました。

投稿日時 - 2009-02-24 20:35:06

ANo.1

天文年間・天文ガイド等の雑誌を読むか
星座早見盤を、ご利用して下さい。

投稿日時 - 2009-02-06 17:47:53

あなたにオススメの質問