gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

スプライン曲線で花びらを描く

2019-03-10 08:08:18 | ブログ
 1月27日付のブログで紹介したスプライン曲線の続きとして、最小限のデータ点を与えてスプライン補間し、花びらのような閉曲線を描けるのか否か試してみることにした。

 花びらのデータ(xj,yj);(j=1,2,...,N)は、平面データであるから、一価関数の形をしていない。そこで、データ点の位置を極座標で表現することにし、データ点の位置を示す動径rは偏角tの関数とみる。tは0から2パイまでの区間に存在すればよい。

 花びらは5弁とし、花びら図形の山の頂点で5点、谷の頂点で5点、合計10点のデータ点をとり、これらデータ点の間をスプライン補間するものとする。山の頂点でr=6、谷の頂点でr=2としてみた。

 花びら山を中点とする区間と花びら谷を中点とする区間の大きさを均等にとるのではなく、パイ/15を1単位として前者では4単位、後者では2単位の区間とした。これによってBスプライン関数は、2単位区間用の関数と4単位区間用の関数の2種類できることになる。

 区間[0,2パイ]の0境界と2パイ境界では、節点が多重化するので、境界近くでは1個の2次式片のBスプラインと2個の2次式片を連結したBスプラインとが現れる。このため、3個の2次式片を連結した上記のBスプライン関数の配列の規則性が失われる。区間[0,2パイ]でこの規則性を保持するために、境界附近のBスプラインを設けるために、両端に余分な5単位の領域を追加し、区間を[0-5単位,2パイ+5単位]とした。

 3連結のBスプライン関数は、その中点に関して対称関数である。また、花びら山と花びら谷のスプライン曲線も各々その中点に関して対称であればよい。従って、Bスプライン関数の両端の2次式片のBスプライン係数は等しくなる。そうすると、Bスプライン係数を求めるための連立方程式は、2単位区間用のBスプラインの線形結合式と4単位区間用のBスプラインの線形結合式の2式だけとなり、未知の係数は2個となり、係数の算出は容易である。

 Bスプライン曲線を1単位について10個の点列で表現することにすると、計算に関与する区間は[-50,350]であり、Excelでは1つずつ加算する整数の連続データを生成すればよい。そうすると、偏角tは、各整数*PI()/150で表せる。

 動径rはtの関数となり、3個のBスプラインの線形結合式で表現する。各区間の最初の整数に対応してrの計算式を設定し、この計算式をその区間の最後のrまでコピーする。

 このようにして、各区間についてrの値が計算できたら、その中点のtについて意図したデータ値(r=6または2)になっていることを確認する。

 すべてのrの計算ができたら、区間[0,300]に対応するrについて、x=rcost,y=rsintの計算式により、(x,y)の値を計算する。

 図は、(x,y)の値を散布図としてグラフ表示したものである。



 このグラフを見ると、スプライン補間の技法を利用し、2次式のスプライン曲線によって10点のデータから5弁の花びら図形を描けることが分かる。

 Excelのグラフ表示では、x軸の目盛間隔とy軸の目盛間隔が等しくなるとは限らない。このため、花びらの図形は、やや歪んだものとなった。

 参考文献
 吉本富士市著「インターネット時代の数学―スプライン」(共立出版)

最新の画像もっと見る

コメントを投稿