- ベストアンサー
北斗七星の位置と角度
日時から北斗七星の位置と角度を計算で求める方法はありますか? わかりやすくお願いしますm(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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>
その他の回答 (3)
- equinox2
- ベストアンサー率48% (321/660)
恒星の位置計算はこんな方法です。 http://star.gs/nyumon/keisan.htm ・北斗七星の各星の赤経・赤緯を調べる。 ・観測地の緯度・経度を調べる。 ・上記の計算方法で計算する。
私は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度基準にすれば良いです。 とりあえずは「雑な計算をし」合っているか確かめるべきです。 計算が合わないなら、その理由を考える事です。 太陽年と恒星年は別物です。 恒星は歳差の影響を受けます。 私も意地悪ですので、 たまに方程式にはに故意的な間違いを記載しておく事があります。 使えばすぐに気が付く物ですから。^○^ 使わなければ永久に知る事はありません。 頑張って勉強してください。^^
お礼
詳しい解説ありがとうござます^o^ 気付いた点は一ヶ月30度ってところだけです・・・。 ありがとうございました。
- 砲術長(@houjutucho)
- ベストアンサー率20% (327/1566)
天文年間・天文ガイド等の雑誌を読むか 星座早見盤を、ご利用して下さい。
お礼
模範プログラムありがとうございました。 とても参考になりました^^