パソコン活用研究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活用研究目次