(アステロイド曲線のお話) 2003.7.21
 
アステロイドという曲線がある。

サイクロイドと並んで,有名な曲線である。昔,ギザギザのついた歯車に鉛筆を刺して,同じくギザギザのついた大きな輪の中を回してきれいな図形を描くという文具?のようなおもちゃがあった。記憶のどこかにあるのでは?コンピュータでも有名な曲線である。数学的に書き方は大きく二つある。

  • 一つ目は,両軸上に端点を持つ長さ一定の線分を動かしていくと, 包絡線としてアステロイドが現われる。(Fig1)

Fig1

  • もう一つの描き方として,円に内接するもう一つの円を滑らせずに回転させて出来る軌跡としても表現できる。(Fig2)

Fig2

数学的には,微分(数学V)を利用しても描けますが,コンピュータの得意とするところでしょう。
式では,
  x = cos3θ,y = sin3θ
と表せる。(媒介変数表示,パラメータ表示とも言う)θを利用して,x,yを決定する方法。
また,別の表現として,
  x2/3+y2/3=1
と言う書き方もある。

これらの表現の違いは,陽関数,陰関数,パラメータ表示の違いと言われている。

★ 陽関数とは

関数y=f(x)を使って2次元の曲線を表現する方法を曲線の陽的表現(explicit representation)という。f(x)はxの値を入れると何か値を返してくれるルールと考えられる。xの値をf(x)に入れてyの値を求めれば(x,y)は曲線上の点となる。

y=f(x)という曲線の表現方法は分かりやすいが欠点がある。1つxの値に対してf(x)は1つの値しか返さないので,同じxの値で何個もyの値がある曲線を表現するのは面倒になる。例えば円がその例である。xの値1つに対しyの値は2つあります。原点中心で半径がrの円を表現するためにはy=±√r−x2のように上の曲線を表す式と下の曲線を表す式に分ける必要がある。陽的表現で1つのxの値に対してyの値が何個もあるような曲線を表す場合は1つのルールだけでは表せないことになる。 

★陰関数とは

関数f(x,y)=0で2次元の曲線を表現する方法を陰的表現(implicit representation)という。この表現方法ではf(x,y)というルールにxの値,yの値を入れたとき0が返ってくれば点(x,y)は曲線の上の点である判断する。 

★パラメータ表示とは

2つの関数x=f(t),y=g(t)を使って2次元の曲線を表現する方法をパラメトリック表現(parametric representation)という。f(t),g(t)はtの 値を入れるとそれぞれ何か値を返してくれるルールと考えられる。xの値とyの値はそれぞれのルールにtの値を入れると決定する。tを動かすと(x,y)は曲線を描く。この表現方法を使うと陽的表現のようにyの値はxの値によって決まるわけではないので1つのxの値に対してyの値が何個もあるような曲線も表現することができる。

 

今回のグラフの書き方講座

  • 「ディスプレイキャプチャーあれ」を起動して,録画枠をマウスで設定する。
       AVIファイルとして動画を取り込む。
  • 「AVI2BMP」を起動し,一枚ずつBMPの静止画に変換する。
       BMPが10枚から20枚程度作成される。
  • 「PictureGeer」を起動し,一連のファイルを指定し,アニメーションツールを起動する。
       サイズや展開速度を調整しながら書き出す。
念のため,BASICソースも乗せておく。あいかわらず,いい加減な描き方である。
10 CLS 3
20 width 80,40
30 '----------------zahyou
40 line(300,10)-(300,600),6
50 line(10,300)-(600,300),6
60 '----------------line
70 for i=0 to 300 step 10
80 line (300,i)-(300+i,300),4
90 for k=1 to 2000 : next
100 next
110 end