• 締切済み

JAVAでの動く波のプログラミング

 Javaのプログラミングに関する質問です。  Javaを勉強中なのですが、sin波を動かす式がどうにも出来ません。以下は私が現状で考えたプログラミングです。 int x1, x2, y1, y2; x2 = getWidth()/5;  y2 = getHeight()/2; for (int i = 1; i <= 90; i++){ x1 = x2; y1 = y2; x2 = x0+(int)(i/30.0*200); y2 =getHeight()/2 -(int)(a*Math.sin(i/30.0*2*Math.PI/T*t)); g.drawLine(x1, y1, x2, y2); }  なんとか独学でこのようなものを考えたのですがまるでダメです。よろしければ止まっている波ではなく動く波のプログラミングの仕方をJavaで教えて頂けると幸いです。

みんなの回答

  • Procs
  • ベストアンサー率60% (3/5)
回答No.4

できたよー これでいいかな? http://pastebin.com/tW6xHcM8

nobiuu
質問者

お礼

すごいです!ありがとうございます!動いています! 私の考えていたものよりも、とても素晴らしいものを受け取らせていただきました。  これからもプログラミングを勉強し、これらに軸や他の波を足して合成波にしていきたいと思います。本当に感謝しております。ありがとうございました。

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.3

とりあえず、私の理解できない部分を外して int x0, x1, x2, y1, y2; x0 = 0; y2 = 200; x2=0; for (int i = 1; i <= 90; i++){ x1 = x2; y1 = y2; x2 = x0+(int)(i/30.0*200); y2 =100 -(int)(100*Math.sin(i/30.0*2*Math.PI)); g.drawLine(x1, y1, x2, y2);} で画像になりました。 微調整はしてください。

nobiuu
質問者

補足

ありがとうございます。aの値は200です。 時間によってyの値が変わり波が伝わるプログラミングを書きたいのですが、いったいどこにiを入れればいいのでしょうか。

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.2

aは何が入るのですか?(聞き忘れました) sinは1を超えることが無いですよ。(つまり、aが大きくないと上下につぶれる) Math.PI/T*t の結果はいくらです?ほぼ0ではないですか? Tやtは目的通りの値が入っていることは確認しましたか?

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.1

x0,T,tは何者ですか?とりあえずコンパイルは通してくださいな。

nobiuu
質問者

補足

失礼いたしました。 X0=getWidth()/5; :原点 T:周期 t:時間です。 コンパイルをしたところ、動きはするのですが左に位置する原点は移動せず、右に位置する波が左の原点の方に詰まるだけで全体が波として動かない状態です。

関連するQ&A