ここから本文です

http://www.geocities.jp/taddy_frog/AberrationCorrection.html JavaScriptで、 ...

tad********さん

2011/6/1108:05:00

http://www.geocities.jp/taddy_frog/AberrationCorrection.html
JavaScriptで、
向点から天体の視位置までの角度と
自分が飛んでる速度を入力したら
向点から天体真位置までの角度が出る
プログラムを作りました。
だけど

変な答えが出るばかりで、
訳が分からないです。
下のJavaプログラムを書き直して作りました。

ちなみに、最初の回答者のlebby_tadpole氏は、
ぼくと同一人物です。
ベストアンサーを選ばない限りは、
何度でも回答を書き直せます。


import java.io.*;
class AberrationCorrection
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("恒星光行差の補正です。見かけの向点距離を入力して、真の向点距離を求めます。");

System.out.println("秒速何キロで動いてますか。(km/s)");
String str1 = br.readLine();
double V = Double.parseDouble(str1);

System.out.println("天体の向点距離は? (度)");
String str2 = br.readLine();
double ApparentThetadeg = Double.parseDouble(str2);

System.out.println("天体の向点距離は? (分)");
String str3 = br.readLine();
double ApparentThetamin = Double.parseDouble(str3);

System.out.println("天体の向点距離は? (秒)");
String str4 = br.readLine();
double ApparentThetasec = Double.parseDouble(str4);

double ApparentTheta = ApparentThetadeg + ApparentThetamin/60 + ApparentThetasec/3600;
double ApparentThetarad = Math.toRadians(ApparentTheta);
double C=299792.458;

double TrueThetarad=Math.acos((Math.cos(ApparentThetarad)-(V/C))/(1-(V/C)*Math.cos(ApparentThetarad)));
double TrueTheta=Math.toDegrees(TrueThetarad);

double TrueThetamin = (TrueTheta * 60) % 60;
double TrueThetasec = (TrueThetamin * 60) % 60;

System.out.println("真の向点距離は");
System.out.print(TrueTheta);
System.out.println("度");
int ddeg = (int)TrueTheta;
System.out.print(ddeg);
System.out.print("度");
System.out.print(TrueThetamin);
System.out.println("分");
System.out.print(ddeg);
System.out.print("度");
int dmin= (int)TrueThetamin;
System.out.print(dmin);
System.out.print("分");
System.out.print(TrueThetasec);
System.out.print("秒です。");
}
}

閲覧数:
243
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

dra********さん

2011/6/1114:04:24

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

leb********さん

編集あり2011/6/1215:41:01

ぼくは、taddy_frogと同一人物です。





dragonquestlot_s_crestさん
回答ありがとうございます。
すみませんが、Javaプログラムの方は
問題なく動きます。
JavaScriptは、同じ式だと思うのですが、
変な答えが出てしまいます。



spared_turkeyさん
回答ありがとうございます。
JavaScriptの精度がJavaより悪いんですか。
それなら質問の趣向を変えて、
JavaプログラムをJavaアプレットに書き直す方法を知りたいです。

acos((cos90-0.3)/(1-0.3*cos90))=107.4576
なんですけど、
90度0分0秒と、
秒速89937.7374
を入力したら、
答えが0になるのは、
誤差の範囲を超えてるような気がします。


回答を書き直した後、消えた人がいるんですが、
ぼくの手には負えないので、
別の式を探して試してみます。
ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる