もう一度(これでだめな時は更新してください。) : 新しいNと場所で描き直します。
B−スプライン曲線(2000年12月9日公開、2001年2月3日第8回の改訂)
上はJAVAで作られています。メモリを大量に使ったり、重くなるかもしれません。その時は、ごめんなさい。
実行後に画面をスクロールしたり、アプレット全体が画面に入ってないと、間違った画面になるかもしれないので、気をつけてください。画面の大きさを決めてから”もう一度”をクリックするか、更新(reload)してください。
●B−スプライン曲線
B−スプライン曲線とは、点達を利用して、複雑な曲線を描く方法の1つです。ここでは、q次B−スプライン曲線というのをやってます。
aが0の時には、1番の点からN番の点まで行くのに、なんとなく、2番、3番の点・・・の近くを通っているのがわかると思います。
aが1の時には、1番の点から出かけて1番の点に戻るのに、なんとなく、2番、3番の点・・・の近くを通っているのがわかると思います。
qが1の時には、点と点を結んで行くかんじになります。
これの描きかたはとても面倒です。でも説明したいのでします。わかりにくいので、覚悟してください。
画面上にN個の点達、P(1),P(2),...,P(N)があるとします。
q=2,3,・・・と数字tに対して、
M(q,t)=(1/q)×[(t+(q+1)/2)×M(q-1,t+0.5)+((q+1)/2-t)×M(q-1,t-0.5)]
を考えます。ただし、M(1,t)は
-1<t<=0の時、
M(1,t)=t+1
0<t<1の時、
M(1,t)=-t+1
t<=-1もしくはt>=1の時、
M(1,t)=0
です。
また、qが与えられているとき、qの関数φ(q)を、(「ファイ」と読みます)
φ(q)=「q/2を超えない最大の整数」
とします。この時、q次のB−スプライン曲線上の点P(t)は、-φ(q)<=t<=N+φ(q)で定義され、
P(t)=M(q,t+2φ(q))×P(-2φ(q))+M(q,t+2φ(q)-1)×P(-2φ(q)+1)+M(q,t+2φ(q)-2)×P(-2φ(q)+2)+・・・+M(q,t)×P(0)+M(q,t-1)×P(1)+M(q,t-N)×P(N)+M(q,t-N-1)×P(N+1)+・・・+M(q,t-N-2φ(q))×P(N+2φ(q))
となります。ただしP(i)はiが1より小さいときはP(1)、iがNより大きい時はP(N)と同じであるとします。
上の説明はわかりにくいので、参考書を紹介します。
●参考文献:
・杉原厚吉著、岩波書店、FORTRAN 計算幾何プログラム
・杉原厚吉著、共立出版、グラフィックスの数理
●Javaプログラムのダウンロード(bspl.java 5KB)
ご意見、ご感想、お問い合わせ、お願い等がございましたら、お気軽に、
メール送信フォームからメールを送るか、
●掲示板に書き込むか、
どちらかお好きな方法で、ご連絡お願いいたします。
●大山崇のホームページの利用について
●大山崇のホームページ