0
私のプログラムは極座標グラフウィンドウです。私の問題は、グラフr=a*sin(b*theta)
の場合です。私の具体的な例はa=12
とb=8
です。私は次に描かれたポイントを接続すると、私は何かのショー以下の取得:極座標グラフ座標を接続する
ラインが素敵に見えますが、正しくない花びら、全体に描かれているように見えます。以下の点や線を描画するコードである:
for(int i=0; i< ptr.size(); i++){
drawPoint(g2d, ptr.get(i), ptt.get(i));
if(connectPoints && i!=ptr.size()-1){
g.drawLine((int)(origin_x+Math.cos(ptt.get(i))*ptr.get(i)*ppp),
(int)(origin_y-Math.sin(ptt.get(i))*ptr.get(i)*ppp),
(int)(origin_x+Math.cos(ptt.get(i+1))*ptr.get(i+1)*ppp),
(int)(origin_y-Math.sin(ptt.get(i+1))*ptr.get(i+1)*ppp));
}
}
ptr
は、r値を含み、ptt
はシータ値を含みます。ポイントを追加する行は次のとおりです。
for(double i=0; i<100; i+=0.1){
pg.plot(12*Math.cos(8*i), i);
}
なぜこのようなことが起こりますか?どのように修正することができますか?あらかじめありがとう!
この例ではうまくいきました。ポイントのプロットは、極座標グラフウィンドウのテストクラスで行われますが、ステップ数を知らずにポイントのリストしか持たずにこれを修正する方法はありますか? – Dando18
@ Dando18クイックアンサーは_yes_です。それを実装するかどうかは、コードのどの部分を変更できるかによって異なります。私の最初の考えは 'r'と' theta'の両方を保持する 'PolarCoordinate'クラスを作成することでした。おそらく '0 <= theta <2 * Math.PI'を保証するべきです。これらをリストに入れ、 'theta 'でリストをソートします。その後、それらをプロットすることができます。 – bradimus
リストにポイントを追加する前に 'theta%= 2 * Math.PI'を追加して解決しました。 – Dando18