パソコン活用研究BASIC&VB&EXCEL達人道場(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

グラフィックの基本3 (円を描く)


点描の続きとして、点(pset)で円を描く方法について、基礎的なことをまとめてみました。

1 点で円を描く
まず、psetを使い、点で円を描いてみましょう。
点で円を描く場合2つのアプローチがあります。

ひとつは、円の方程式(Rは半径)
を使ったアプローチ・・・(1)

もうひとつは、sin, cosを用いて、媒介変数nを使い、
X(n)=R*cos(2π/n) Y(n)=R*sin(2π/n) と表記
するアプローチです・・・(2)




(1)をBasicプログラムで記述すると(半径rとし、円の中心をp,qとする)
y = sqr(r*r-x*x)
x1=x+p: y1=q+y
x2=x+p: y2=q-y
と記述できます。

(2)は、媒介変数nとすると(半径rとし、円の中心をp,qとする)
t =3.14 * 2/n
x =r*cos(t)+p
y =r*sin(t)+q
と記述できます。

実際のプログラムは以下のようになります。(1)は100〜150行目、(2)は200〜240行目です。
いろいろ分割する数を変化させて実験できるように、最初に増分(STEP)を入力するようにしました。

10 cls
20 input "STEP:",s
100 for x=-100 to 100 step s
110 y=sqr(100*100-x*x)
120 px1=x+100:px2=x+100:py1=200+y:py2=200-y
130 pset(px1,py1)
140 pset(px2,py2)
150 next
200 for i=0 to 200 step s
210 t=3.14*2*i/200
220 x=cos(t)*100+400:y=sin(t)*100+200
230 pset(x,y)
240 next

ま、プログラムは単純でわかりやすいと思います。
さて、数学的には、どちらかというと(1)のアプローチがわかりやすいかと思いますが、プログラムにした場合
(1)の場合は、若干問題がります。等間隔で分割するとX=R, X=-Rの付近で、Yの変化率が大きく、X=0の付近
で小さくなるので、増分(STEP)が大きいときれいな円になりません。

(2)は中心角を等分しますので、点と点の間隔は等距離となり、(1)より見た目にきれいな円になります。

では、実際にテストしてみましょう。増分(STEP)を10とした場合です。増分が大きいので、(1)の点と点の
間隔はかなりふぞろいできれいな円になっていません。ま、(2)もきれいな円には見えていませんが。


増分(STEP)を2にしてみます。(1)ではどうしても、点と点の間隔のあいてしまう部分が残ってしまいます。
増分を小さくすると、(2)の方が円を描くのに適していることがわかると思います。







TOP PAGE >Basic活用研究目次