• ベストアンサー

リサージュ図形

javaでリサージュ図形を描きたいのですが、さっぱりソースがわかりません。x=sin(W1 * t) y=sin(w2 * t)で与えられて、w1,w2は自分でテキストフィールドで設定して、tは0から1000までfor文でまわそうと思ってます。

  • Java
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • keikan
  • ベストアンサー率42% (75/176)
回答No.1

まあ、こんな感じでいかがかな^^ /* <applet code="Sample0001.class" width="400" height="400"></applet> */ import java.awt.*; import java.applet.Applet; public class Sample0001 extends Applet { Point pt1=new Point(0,0); int W1=2,W2=4; public void paint (Graphics g) { g.drawString("リサージュを描画する",10,60); for(int i=1;i<1000;i++){ pt1.x=(int)(Math.sin(W1 * i) * 100) ; pt1.y=(int)(Math.sin(W2 * i) * 100) ; g.drawLine(pt1.x + 200,-pt1.y+200,pt1.x + 200,-pt1.y+200); } } } pt1に対する*100は座標への拡大です。 -1<=SIN<=1ですので結果として -100<=pt1<=100になります。 最後のdrawLineで、xに200、yを符号を反転して(マイナスにして)200足しているのは座標原点の移動とY軸の反転を行っています。 W1,W2いじってみるとおもしろいのでテキストボックス等で随時修正が加えられるようになるともっとおもしろそうですね^^

kuropanda
質問者

お礼

本当にありがとうございます。これから、w1、w2の修正できるようなプログラムを追加してみたいと思います。

関連するQ&A

  • リサージュ図形作図

    リサージュ図形作図 高校でオシロスコープを使ってリサージュ図形を観察しました。そのレポートで「リサージュ図形「8」および「S」(みたいな感じ)の形になることをx-yの振動を合成して作図によって求めよ」ということなのですが… いろいろ調べたのですがx=Asinωt y=Bsinωt みたいな感じでωtの値を少しずつ変えて(x、y)の値をとると書いてあるのですが… うまくできません。 また、違う図形にするにはどこの比を変えればよいのでしょうか?AとBの比を変えると違う図形になるのですか? 画像などで説明していただけると大変助かります。

  • リサージュ図形に関して

    リサージュ図形に関して オシロスコープでリサージュ図形を観察した後の課題なのですが、 Y軸とX軸の周波数が1:1のとき図形が止まらないで動いているのはどうしてでしょうか? 別の質問の回答で同じ周波数で位相差だけが連続的に変化しているからというのがあったのですが…よくわかりませんでした。 あと、リサージュ図形「8(みたいな形)」「S(みたいな形)」になることをX-Yの振動を合成して作図によって確かめろとあるのですが、これはx軸、Y軸の点をプロットして結ぶだけでいいのですかね? どなたかわかりやすく教えてください。

  • リサジュー図形

    リサジュー図形についての質問なのですが。 X軸Y軸方向に印加する電圧・時間・波形が90度位相ずれた場合のリサジュー図形ってどうなるのですか?

  • リサージュ図形の軸

    リサージュ図形のx軸を周波数とするとy軸は何になるのですか?

  • リサジューの作図法

    物理の質問です。 リサジューの図形作図方法でx=Asinωt、y=Bcosωtの式のときの軌道の図形を簡単に作図せよという問題で。 リサジューを使って図を書く手順が分からないのですが、どうすればいいか教えてください(__ 教科書に詳しく載って無くて...

  • VB4でリサージュ図形の面積測定

    オシロのCH1,CH2それぞれの波形データを取り込む。位相差があるためにCH1の値がaのときCH2の値はb、cとなった場合(リサージュ図形は楕円になるとき)ですが、 (bとcの差)*CH1の1周期分=楕円のリサージュ図形の面積 となりますよね? この場合の (bとcの差)*CH1の1周期分=楕円のリサージュ図形の面積 の部分をVB4で組みたいのですがどのような感じにすればよいでしょうか?ちなみにX-Yモードにすると波形データが読み取れないため、別々に読み取ったあとで計算する形なのでこのようになっています。 分かりにくいかもしれませんがよろしくお願いします。

  • 媒介変数表示→陰関数表示

    例えばリサージュ曲線で、 x=sin3t y=sin5t という媒介変数表示されたもので 媒介変数tを消去してxとyだけで表す 具体的な方法が分かりません。 上のリサージュに関しては、チェビシェフの多項式(sinヴァージョン)を利用して、 sin3t=-4(sint)^3+3sint=U_3(sint) sin5t=16(sint)^5-20(sint)^3+5sint=U_5(sint) とすれば、求めるグラフの方程式は U_5(x)=U_3(y) (具体的には16x^5-20x^3+5x=-4y^3+3y) で出るのですが…。 リサージュ曲線だけに限ったことでもかまいません。 どうしてこのような操作で出来るのでしょうか? また、一般的な方法があるのならば、それもご教授いただけると幸いです。

  • リサジュー曲線について

    リサジュー曲線について http://www.nichimu.or.jp/kshiken/pdf/h15_shiken/riku-gi-2/kiso/kiso.pdf ↑のB-5の問題を解く時に、 アの問題だったらx=sinθ、y=sin2θとおいて θ=0,π/4、π/2・・・といった代表的な角度を代入して大まかな曲線を描いています。 ただ、位相差を考慮していくとものすごく時間がかかります。 また、それぞれが合っているか間違っているかを判定しなくてはいけないので、 間違いと判定するのがものすごく大変です。 他に効率的な解き方はあるのでしょうか? 全部丸暗記は無しでお願いします。

  • リサージュの図について・・・・・・

    次のような互いに垂直な2つの単振動を合成した運動経路を求める場合・・・・・・・・ {X=cos2πt {Y=-sinπt 周期の異なる単振動の合成を行えばよいのでしょうか?? どのような感じになりますか? 経路の図も出来ますか?

  • 透視投影図形の回転

    C言語で透視投影の図形(3次元)を作成しました。 プログラムは下のような感じになりました。 static struct {int f; double x,y,z;}a[] ...(略) for(j=0; a[j].f!=-999; j++){//-999が来るまで描画  h=-a[j].x*sin(ay)/vp+a[j].z*cos(ay)/vp+n/vp+1;  px=(a[j].x*cos(ay)+a[j].z*sin(ay)+1)/h;  py=(a[j].y+m)/h;   if(a[j].f==-1) //-1が先頭にあるなら    pDC->MoveTo(px+200,-py+200);//描画の始点   else //そうでないなら    pDC->LineTo(px+200,-py+200);//線の終点 } これに、わかっているx軸まわり・y軸まわりの回転変換マトリックスを掛け合わせた、統合変換マトリックスの式 x=x*cosθ-z*sinθ y=x*sin^2θ+y*cosθ+z*sinθcosθ z=x*sinθcosθ-y*sinθ+z*cos^2θ を使用して図形を回転させたいのですが、プログラム中にはpDC->MoveTo(px+200,-py+200);のようにxとyしか出力がなく、z=をどう出力しようかと悩んでいます。また、回転を表示させるのに、 描画→回転させたx,y座標の算出→一度画面を白く塗りつぶす→描画 ということをfor文でやっていこうと思うのですが、画面がとてもちらついてしまいます。ちらつかない方法があれば教えてください。

専門家に質問してみよう