もう一度(これでだめな時は更新してください。) : 新しいNと場所で描き直します。
自動的編x方向グラフy方向グラフ高次凸包
(凸包)
B−スプライン曲線x方向B−スプライン曲線y方向B−スプライン曲線高次凸包B−スプライン曲線
ベジエ曲線x方向ベジエ曲線y方向ベジエ曲線高次凸包ベジエ曲線
四色問題について考えていたら
描きたくなった図
四色バージョン2一色
(凸包の重ね合わせ)
二色
三色五色六色
Catmull-Romスプライン曲線
タイルのtessellation
(空間充填系)
三角形正三角形平行四辺形三角形その2平行四辺形その2
四角形四角形の変形型1の凸六角形-型2の凸六角形の変形
クリック編
(注:B−スプラインは
7つのアプレットが
登場するので重いです。)
x方向グラフy方向グラフ高次凸包
(凸包)
B−スプライン曲線
(1に戻らない編)
B−スプライン曲線
(1に戻る編)
x方向B−スプライン曲線y方向B−スプライン曲線高次凸包B−スプライン曲線
ベジエ曲線
(0に戻らない編)
ベジエ曲線
(0に戻る編)
x方向ベジエ曲線y方向ベジエ曲線高次凸包ベジエ曲線
Catmull-Rom Spline的曲線
スクリーンセーバー

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)

ご意見、ご感想、お問い合わせ、お願い等がございましたら、お気軽に、
メール送信フォームからメールを送るか、
●掲示板に書き込むか、
どちらかお好きな方法で、ご連絡お願いいたします。


●大山崇のホームページの利用について
●大山崇のホームページ