質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

5170閲覧

Javaで反発係数を考慮した物体の自由落下運動の実験をしています。

asdf123456789

総合スコア25

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

1クリップ

投稿2017/08/22 13:10

編集2017/08/22 13:20

理想の運動タイトル通り、反発係数を考慮した物体の自由落下運動の実験をしています。

その一部です。

Java

1 public void run() { 2 3 while (true) { 4 5 6 //水平方向 7 x += vx; 8 9 if(x >= WIDTH || x < 0) { 10 vx -= 1; 11 } 12 13 //鉛直方向 14 15 16 if (Vec == false && time < Math.sqrt(2 * Y0 / G)) { 17 //Vecは物体が自由落下から鉛直投げ上げに移行する際にtrueになります。 18 19 y = Y0 - 0.5 * G * time * time; 20 21 if(y < 0.000) { 22 y = 0; 23 } 24 25 } else if (time >= Math.sqrt(2 * Y0 / G) || Vec == true) { 26 27 y = E * Math.sqrt(2 * G * Y0) * time - 0.5 * G * time * time; 28 29 30 if(y < 0) { 31 y = 0; 32 } 33 34 if (Vec == false) { 35 Vec = true; 36 } 37 } 38 39 if (y <= 0.000 && Vec == true) { 40 time = 0; 41 exe_deci = true; 42 //実行を何回もさせないようにするためのフラグ?です。 43 } 44 45 if(y >= E * E * Y0 -1.00 && exe_deci == true) { 46 //E *= E; 47 exe_deci = false; 48 } 49 50 51 time += 0.1; 52 53 54 55 System.out.println(y); 56 //座標を出力してグラフ化して試行錯誤してます(^^;) 57 58 repaint(); 59 60 try { 61 62 Thread.sleep(20); 63 64 } catch (InterruptedException e) { 65 66 e.printStackTrace(); 67 68 } 69 70 } 71 72 }

理想はこんな感じなのですが、なかなかうまくいきません...
何かアドバイス等をいただけると幸いです。(^^;)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/08/22 14:30

どのように上手くいかないのか書いてください。コンパイルできないのか、実行中落ちるのか、想定通りの結果にならないのか。特に最後の場合、現状の結果が必要でしょう。
asdf123456789

2017/08/23 03:58

申し訳ありません... 今回は自己解決できましたが、以後それらの情報も含めて投稿できるように心がけます。
LouiS0616

2017/08/23 04:07

いえいえ、お気になさらず。解決されたようで何よりです。
guest

回答1

0

自己解決

試行錯誤を繰り返していたところ、自己解決に至りました。
鉛直投げ上げの運動に移行する際、timeを0にするタイミング?と反発係数の処理のタイミングを誤っていたようです。

↓以下、成功したプログラムの一部です。出力された数値をグラフ化するときれいな放物線を描きます。

Java

1public void run() { 2 3 while (true) { 4 5 6 //水平方向 7 x += vx; 8 9 if(x >= WIDTH || x < 0) { 10 vx -= 1; 11 } 12 13 //鉛直方向 14 if (Vec == false && time < Math.sqrt(2 * Y0 / G)) { 15 16 y = Y0 - 0.5 * G * time * time; 17 18 if(y < 0.000) { 19 y = 0; 20 } 21 22 } else if (time >= Math.sqrt(2 * Y0 / G) || Vec == true) { 23 24 if (Vec == false) { 25 Vec = true; 26 time = 0; 27 } 28 29 y = E * Math.sqrt(2 * G * Y0) * time - 0.5 * G * time * time; 30 31 if(y < 0) { 32 y = 0; 33 } 34 35 } 36 37 if (y <= 0.000 && Vec == true) { 38 time = 0; 39 E *= E; 40 } 41 42 time += 0.2; 43 44 45 46 System.out.println(y); 47 48 repaint(); 49 50 try { 51 52 Thread.sleep(20); 53 54 } catch (InterruptedException e) { 55 56 e.printStackTrace(); 57 58 } 59 60 } 61 62 }

投稿2017/08/23 03:56

asdf123456789

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問