掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
極座標で曲線を描く (ID:35950)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
極座標を使って曲線を描こうとしているのですが、円積曲線の方がどうしてもきちんと描けません。 どこに原因があるのでしょうか? //円積曲線を描く { 2θ r = ---------- πsinθ 2θ x = r・cosθ= ----------・cosθ πsinθ 2θ 2θ y = r・sinθ= ----------・sinθ= ---- πsinθ π } procedure TScrForm.FDrawQuadratrix(TargetCanvas: TCanvas); var i: Integer; Ex, Ey, Er, Th: Extended; begin with TargetCanvas do begin Pen.Width := SubWidth; Pen.Color := clRed; Th := 0; Er := 5*2*Th/Pi*sin(th);//5倍に Ex := Er*cos(Th); Ey := 5*2*Th/Pi; MoveTo( RealToDispX(Ex),RealToDispY(Ey) ); //数学座標からPC座標へ変換 //グラフの 1 は 20 ピクセル i := 0; while i <= 90 do //1/4円 begin Th := Th+Pi/36; //角度の変化(180/36 = 5度) Er := 5*2*Th/Pi*sin(th); Ex := Er*cos(Th); Ey := (2*Th)/Pi; Inc(i,5); LineTo(RealToDispX(Ex),RealToDispY(Ey) ); end; end; end; //クローバを描く r = a・cos3θ こちらはOK! procedure TScrForm.FDrawclover(TargetCanvas: TCanvas); var i: Integer; Ex, Ey, Er, Th: Extended; begin with TargetCanvas do begin Pen.Width := SubWidth; Pen.Color := TColor($8ED38C); Th := 0; Er := 5*cos(3*th); Ex := Er*cos(Th); Ey := Er*sin(Th); MoveTo( RealToDispX(Ex),RealToDispY(Ey) ); i := 0; while i <= 180 do //半円 begin Th := Th+Pi/36; //角度の変化(180/36 = 5度) Er := 5*cos(3*th); Ex := Er*cos(Th); Ey := Er*sin(Th); Inc(i,5); LineTo(RealToDispX(Ex),RealToDispY(Ey) ); end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.