• ベストアンサー

Math.sin() を使った計算が合わない

お世話になります。 物体を投げたときの距離を出す問題なのですが、激しく計算が合わず、例文の通りの答えが出ません。(マイナス値になってしまう) double decel = 10; //減速率(秒) double angleA = 30; //発射角度 double veroU = 200; //水平移動距離(m/s) とした時、 double sinV = Math.sin(angleA); double cosH = Math.cos(angleA); で、 double vu = veroU * sinV; //縦の力 double hu = veroU * cosH; //水平の力 double t = (2 * vu) / decel; //減速率 double s = hu * t; //距離(m) とすると s の値がマイナス千二百あたりになってしまいます(プラス三千あたりが正解)。何か致命的に間違っているような気はするんですが…。 出来るだけ自力で解きたいので、ズバリの答えよりも、ヒントになるJAVAのアドバイス頂けるとありがたいです。宜しくご教示ください。 m(_ _)m

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

  • ベストアンサー
回答No.4

角の表し方には角度(degree)とラジアン(radian)があります。 π = 3.14159265… (円周率)としたとき 360°(degree) = 2π(radian) となります。 なので、30°(degree)というのはπ/6(radian)で表すことができます。 あとは他の回答者様が言われている通り、 double angleA = 30; //発射角度 という行をラジアンに直せば良いかと思います。

laser-disc
質問者

お礼

おおおおおおお!!! Math クラスの toRadians メソッドで解決しました!!いやっほう! 前 Math.cos(angleA); 後 Math.cos(Math.toRadians(angleA)); お恥ずかしながら、実際のコードはこんなんです。。。 コア コード <- Math クラスはここで使ってます。 http://kinugosiigomadowff.arrow.jp/miscsc/EntCmpDbl.java.txt ドライバ コード http://kinugosiigomadowff.arrow.jp/miscsc/DQ1_findgreaterdouble.java.txt 皆さん、本当にどうもありがとうございました!!!!!課題提出!課題提出ゥゥゥゥ!!

laser-disc
質問者

補足

lailai2580さん、説明ありがとうございます。 むむ、なんか、分かってきたかも! Σ(°-°) ...っていうか、小学校の頃まさか大人になってからこんな事勉強する気になると思わなかったので、「蟻とキリギリス」を地でいく感じです(涙)。でも、「わかる!」っていうのは癖になりますねー。勉強できなかった分、余計に。ええ。 さー、もうひと頑張り...

その他の回答 (3)

  • aperun8
  • ベストアンサー率38% (10/26)
回答No.3

解決しましたか? 回答者の皆さんが言っているのは RADIAN 角と DEGREE の使い分けをしているのかと言うことだと思いますよ。 30°= π/6 Radian ですよね・・ sin(π/6) = 0.5,sin30 = -0.988 double angleA = 30; //発射角度 の行を修正してください。 これではズバリになってしまうし・・

laser-disc
質問者

補足

aperun8さん、お世話になります。(^^) > これではズバリになってしまうし・・ いえ、自分はJava「超かけだし」&「さんすう落第人間」なので、頂いたアドバイスだけで「そうか!」とはなりませんで…なので大丈夫です(π?? 汗)。 怪しいのが単位の変換らしい、という所までは理解しました。もう少し粘ってみます!

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

単位はちゃんとラジアンにしてんの? 使ってる公式自体は正しいの?

laser-disc
質問者

補足

_ranco_さん、 お世話になります。 > 単位は う、素のままの数値です。 sinV の 入力が 30 だと計算結果が -0.9880... となってます。 > 公式自体は はい、課題の丸写しなので多分。

回答No.1

>ズバリの答えよりも、ヒントになる 検証してないので自信ないけどさ, これが答えなら,調整の仕様がないので angleAの単位と,三角関数の引数の単位は?

laser-disc
質問者

補足

himajin100000さん、お世話になります。 > 検証してないので ええ、ここまで頼ってしまうと剽窃になってしまうし、自分の勉強にならないので。ナゾナソみたいな質問方式ですんません(^^;)。 > angleAの単位 何もしてません。普通の double です。 > 三角関数の引数の単位 ってこれの事ですか...?(どの部分が「三角関数」なのかも怪しいです。) double vu = veroU * sinV; //(m/s) double hu = veroU * cosH; //(m/s) double t = (2 * vu) / decel; //(s) double s = hu * t; //(m)

関連するQ&A