• 検索結果がありません。

PP(tt) = (1 tt) qq 0 +(1 tt) tt qq 1 +(1 tt) tt qq + tt qq (0 ttt1) ここで制御点 qq 0 = (1,1), qq 1 = (,4), qq = (,4), qq = (,1) から定まるベジェ曲線を PP(tt) とし制御点 qq

N/A
N/A
Protected

Academic year: 2021

シェア "PP(tt) = (1 tt) qq 0 +(1 tt) tt qq 1 +(1 tt) tt qq + tt qq (0 ttt1) ここで制御点 qq 0 = (1,1), qq 1 = (,4), qq = (,4), qq = (,1) から定まるベジェ曲線を PP(tt) とし制御点 qq"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

B-スプライン曲線の一考察

山本 孝司

Consideration of the B-Spline Curves

Takashi YAMAMOTO

This paper proposes a method to describe and visualize B-spline curves for clear understanding of non-uniform rational B-spline curves used for designing software such as CAD. Particular attention is given to handling of the recursion formula to determine the basis functions, handling of the domain and the basis functions when increasing control points, and the effects of the knot vectors towards the B-spline curves. The paper also demonstrates how consideration of the B-spline curves helps solving certain problems associated with the Bezier curves used for drawing software such as Illustrator®. Finally, the paper shows how the mathematics used in the process of describing the B-spline curves is related to the mathematics taught at Salesian Polytechnic.

1.はじめに 山本(20111))は,イラストレーター等のコ ンピュータグラフィックス(CG)に使われるベ ジェ曲線の成り立ちを考察し,2 次のベジェ曲 線が放物線の一部であることを作図を通して確 認した.その結果作図が正しいことの検証のた めに使われる数学には,本校の3年前期くらい までに学習する数学の内容が幅広く含まれるこ とが分かった. 本論文は,ベジェ曲線の問題点を踏まえて, CAD 等の自由曲線に使われる非一様有理 B- スプライン曲線(NURBS) 注1) の理解に避けて 通れない B-スプライン曲線注2)を分かりやす く記述し視覚化することを主目的とするが,B -スプライン曲線で使われる数学が本校で学習 する数学とどのように関わっているかも考察す る. 2.B-スプライン曲線の考察 2.1 スプラインとは スプラインとはもともと弾力性のある定規の ことで,自由曲線を描く際,参照点にこの定規 をあてて最も適当と思われる形に調整して使っ ていた.このようにして描かれた曲線がスプラ イン曲線と呼ばれるものである.これをCG に 取り入れるにあたってはパラメトリック曲線を 使うが,すべての参照点を通る曲線を描くこと は不可能で,全体をいくつかの部分に分けて, その部分部分を多項式で表しそれをつないでい くという方法がとられる.最も良く使われるの は3 次式で,これを「自然なスプライン」とい っている.「自然なスプライン」の問題点は多項 式の係数を決めるための計算が面倒だというこ とと,参照点の変化に曲線が敏感になりすぎる ということにある.これを改善しようとして考 案されたのがベジェ曲線である.「自然なスプラ イン」との大きな違いは曲線が必ずしも参照点 を通らないということである.B-スプライン 曲線の考察の前にベジェ曲線を簡単に振り返り, その問題点を挙げてみる. 2.2 ベジェ曲線の問題点 𝑛𝑛 次のベジェ曲線𝑃𝑃(𝑡𝑡)は,𝑛𝑛 + 1個の制御点𝑞𝑞𝑖𝑖 と各制御点の重み関数𝐵𝐵𝑖𝑖𝑛𝑛を使って,次のように パラメトリック曲線として定義されている. 𝑃𝑃(𝑡𝑡) = � 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) 𝑞𝑞𝑖𝑖 (0 ≤ 𝑡𝑡 ≤ 1) 𝑛𝑛 𝑖𝑖𝑖𝑖 ⋯ (1) ここで𝐵𝐵𝑖𝑖𝑛𝑛(t)はバーンスタインの基底関数といい 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) = 𝐶𝐶 𝑖𝑖𝑛𝑛 (1 − 𝑡𝑡)𝑛𝑛𝑛𝑖𝑖 𝑡𝑡𝑖𝑖 , 𝐶𝐶 𝑖𝑖𝑛𝑛 =𝑖𝑖! (𝑛𝑛 − 𝑖𝑖)!𝑛𝑛! であった. 3 次のベジェ曲線は 4 個の制御点を使って次 のようになる.

(2)

𝑃𝑃(𝑡𝑡) = (1 − 𝑡𝑡)3 𝑞𝑞 0+ 3(1 − 𝑡𝑡)2 𝑡𝑡 𝑞𝑞1 + 3(1 − 𝑡𝑡) 𝑡𝑡2 𝑞𝑞 2+ 𝑡𝑡3 𝑞𝑞3(0 ≤ 𝑡𝑡 ≤ 1) ここで制御点 𝑞𝑞0= (1,1) , 𝑞𝑞1= (2,4) , 𝑞𝑞2= (3,4), 𝑞𝑞3= (3,1) から定まるベジェ曲線を𝑃𝑃(𝑡𝑡)とし制御点 𝑞𝑞0= (1,1) ,

𝑞𝑞

1′ = (1,3) , 𝑞𝑞2= (3,4), 𝑞𝑞3= (3,1) から定まるベジェ曲線を𝑃𝑃

(

𝑡𝑡

)

として図1に示し てみる. この図から一つの制御点の変化が,曲線全体 に大きく影響することが分かる.これがベジェ 曲線の問題点の一つである. 図1 制御点変更による影響 さらに制御点 𝑞𝑞0= (1,1) , 𝑞𝑞1= (2,3) , 𝑞𝑞2= (3,1), 𝑞𝑞3= (4,3) から定まるベジェ曲線を𝑃𝑃(𝑡𝑡)として図 2 に図示 してみよう. 図2 制御点が大きく変動する場合 この図から制御点が波打つように大きく変動 する場合に,ベジェ曲線はその変化に追随せず, なめらかになってしまっていることが分かる. これがベジェ曲線の問題点の2 つ目である. この主な原因は,制御点の個数が増えると, 曲線の次数もそれにともなって上がっていくこ とにある.たとえば 10 個の制御点に対して 9 次のベジェ曲線が必要になり,それは大変複雑 な関数なので,制御点の影響を受けやすかった り,逆に制御点の変化に追随できないというこ とが起きてしまう. 以上2 点を改善するために考えられた曲線が B-スプライン曲線である.非常に巧妙に組み 立てられたB-スプライン曲線はどのように構 成されているかを具体例を通してみていくこと にする. 2.3 B-スプライン曲線の定義 ベジェ曲線の場合の各制御点の重み関数𝐵𝐵𝑖𝑖𝑛𝑛 は次のようになる. 1 = ((1 − t) + t)n= � 𝐶𝐶 𝑖𝑖 𝑛𝑛 (1 − 𝑡𝑡)𝑛𝑛𝑛𝑖𝑖 𝑡𝑡𝑖𝑖 n i=0 これは1 の 2 項展開となっているので � 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) = 1 𝑛𝑛 𝑖𝑖=0 が常に成立している. また明らかに𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) > 0が成立している.この2 つの性質があるおかげで,ベジェ曲線は制御点 を繋ぐ凸多角形注3)(凸閉包)の中に含まれる. これを閉包性という.この性質を保ったまま, 制御点の個数を増やしても曲線の次数を上げな いで,なめらかに曲線を繋げていくのが B-ス プライン曲線である. その定義を見ていくことにする. 𝑛𝑛 次のB-スプライン曲線𝑃𝑃(𝑡𝑡)は,m + 1個の 制御点𝑞𝑞𝑖𝑖と各制御点の n次の重み関数 𝑁𝑁𝑖𝑖𝑛𝑛を使 って次のように,パラメトリック曲線として定 義される. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) 𝑞𝑞 𝑖𝑖 𝑚𝑚 𝑖𝑖=0 ⋯ (2) 定義域は後に考察する. 𝑁𝑁𝑖𝑖𝑛𝑛(t)は基底関数で𝑝𝑝 + 1個のノットベクトル � 𝑡𝑡0 , 𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , ⋯ , 𝑡𝑡𝑝𝑝�を使って次の式で与えら れる. 𝑁𝑁𝑖𝑖0(𝑡𝑡) = �1 𝑖𝑖𝑖𝑖 𝑡𝑡𝑖𝑖≤ 𝑡𝑡 < 𝑡𝑡𝑖𝑖𝑖1 0 その他 ⋯ (3) 𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡) =𝑡𝑡𝑡𝑡 − 𝑡𝑡𝑖𝑖 𝑖𝑖𝑖𝑛𝑛− 𝑡𝑡𝑖𝑖𝑁𝑁𝑖𝑖 𝑛𝑛𝑛1(𝑡𝑡) + 𝑡𝑡𝑖𝑖𝑖𝑛𝑛𝑖1− 𝑡𝑡 𝑡𝑡𝑖𝑖𝑖𝑛𝑛𝑖1− 𝑡𝑡𝑖𝑖𝑖1𝑁𝑁𝑖𝑖𝑖1 𝑛𝑛𝑛1(𝑡𝑡) ⋯ (4) ここでノットベクトルの成分𝑡𝑡𝑖𝑖をノットとい い,ノットは𝑡𝑡0≤ 𝑡𝑡1≤ 𝑡𝑡2⋯ 𝑡𝑡𝑝𝑝𝑛1≤ 𝑡𝑡𝑝𝑝を満たし

(3)

𝑡𝑡0 𝑡𝑡1 𝑡𝑡2 𝑡𝑡3 𝑡𝑡4 𝑡𝑡5 𝑡𝑡6 𝑡𝑡7 𝑁𝑁00 𝑁𝑁1 0 𝑁𝑁2 0 𝑁𝑁3 0 𝑁𝑁4 0 𝑁𝑁50 𝑁𝑁60 𝑁𝑁01 𝑁𝑁1 1 𝑁𝑁21 𝑁𝑁31 𝑁𝑁41 𝑁𝑁51 𝑁𝑁02 𝑁𝑁12 𝑁𝑁22 𝑁𝑁32 𝑁𝑁42 𝑁𝑁03 𝑁𝑁13 𝑁𝑁23 𝑁𝑁33 ⋯ ⋯ 𝑁𝑁𝑖𝑖𝑛𝑛𝑛1 𝑁𝑁𝑖𝑖𝑖1𝑛𝑛𝑛1 𝑁𝑁𝑖𝑖𝑛𝑛 半開区間 [𝑡𝑡𝑖𝑖 , 𝑡𝑡𝑖𝑖𝑖1) を𝑖𝑖 番目のノット区間という. ノットベクトルには等しいノットがあっても良 く,例えば𝑡𝑡𝑖𝑖= 𝑡𝑡𝑖𝑖𝑖1= 𝑡𝑡𝑖𝑖𝑖2の場合に𝑡𝑡𝑖𝑖を多重ノッ トといい3 重になっているので𝑡𝑡𝑖𝑖(3)のように表 すこともある. 多重の場合は(3)式の𝑁𝑁𝑖𝑖0(𝑡𝑡)は𝑡𝑡の範囲が 0 と なるので0 と定める.また(4)式の𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡)に分母 が0 になるケースが出てくるがこの場合もすべ て0 と定める. 2.4 基底関数の構成と制御点の個数 𝑖𝑖 番目のノット区間 [𝑡𝑡𝑖𝑖 , 𝑡𝑡𝑖𝑖𝑖1) で(3)式が意味す るのは, 0 次の基底関数 𝑁𝑁𝑖𝑖0(𝑡𝑡) は 𝑖𝑖 番目のノッ ト区間のみで定値1 をとり,その他の区間では 定値0 をとる定値関数であるということである. (4)式は,n 次の基底関数は 2 つの 𝑛𝑛 𝑛 1 次の 基底関数とノットを使って再帰的に求まること を示している.この式をCox-de Boor の再帰公 式といっている. この節ではまずこの再帰公式に現れる基底関 数とノットの間の関係を掴む. まず(4)式の成り立ちを考える. (4)式で𝑛𝑛 = 3 , 𝑖𝑖 = 2とする.𝑁𝑁23(𝑡𝑡)は 3 次の 2 番目の基底関数で 𝑁𝑁23(𝑡𝑡) = 𝑡𝑡 𝑛 𝑡𝑡2 𝑡𝑡5𝑛 𝑡𝑡2𝑁𝑁2 2(𝑡𝑡) + 𝑡𝑡6𝑛 𝑡𝑡 𝑡𝑡6𝑛 𝑡𝑡3𝑁𝑁3 2(𝑡𝑡) ⋯ (5) より𝑁𝑁23(𝑡𝑡)は,2 次の 2 番目の基底関数𝑁𝑁22(𝑡𝑡)と 2 次の3 番目の基底関数𝑁𝑁32

(

𝑡𝑡

)

に,ノットから決 まる係数を乗じて求まる.このことを示したの が図3 の太い矢印である.同じことを𝑁𝑁22

(

𝑡𝑡

),

𝑁𝑁32 について考えると, 𝑁𝑁22(𝑡𝑡)を求めるには𝑁𝑁21と𝑁𝑁31 が必要になり,𝑁𝑁32を求めるには𝑁𝑁31と𝑁𝑁41が必要 になる.結局𝑁𝑁23

(

𝑡𝑡

)

を求めるには,図3 の𝑁𝑁23を 頂点とする三角形内の基底関数を下から上にさ かのぼっていくことになり,基底関数𝑁𝑁23(𝑡𝑡)が依 存するノット区間は,三角形の底辺から[𝑡𝑡2, 𝑡𝑡6) であることが分かる. 同様に考えて𝑁𝑁22(𝑡𝑡)を頂点とする三角形の底 辺から基底関数𝑁𝑁22(𝑡𝑡)が依存するノット区間は

[

𝑡𝑡2, 𝑡𝑡5

)

であることが分かり,𝑁𝑁32(𝑡𝑡)を頂点とする 三角形の底辺から基底関数𝑁𝑁32(𝑡𝑡)の依存するノ ット区間は

[

𝑡𝑡3, 𝑡𝑡6

)

であることが分かる. (5)式で,𝑁𝑁22(𝑡𝑡), 𝑁𝑁32の係数の分母は,その基底 関数が依存するノット区間の差になっているこ とが分かる. 一般に𝑁𝑁𝑖𝑖𝑛𝑛はノット区間 [ti, ti𝑖n𝑖1) に依存し, その中に含まれるノットの個数は 𝑛𝑛 + 2 個であ ることが図3 から確認することができる. 図3 基底関数の構成図 以上の考察をもとに(4)式に現れるノットの 関係を図解してみると次のようになる. 図4 再帰公式の図解 次にノット区間とそのノット区間で値を持つ 基底関数を調べることにより,次数𝑛𝑛と必要な 制御点の個数との関係を考察する.ここは理解 が難しいところである. 図5の三角形内の基底関数に注目して0番目 のノット区間[𝑡𝑡0, 𝑡𝑡1)で値を持つ基底関数は𝑁𝑁00の みである.また1 番目のノット区間[𝑡𝑡1, 𝑡𝑡2)で値 を持つ基底関数は 𝑁𝑁10と𝑁𝑁01 , 𝑁𝑁1 1である.更に2 番目のノット区間[𝑡𝑡2, 𝑡𝑡3)で値を持つ基底関数は 𝑁𝑁20と𝑁𝑁11 , 𝑁𝑁2 1 および𝑁𝑁02 , 𝑁𝑁12 , 𝑁𝑁22である. 図5 制御点とノットの関係 t 𝑛 ti ti𝑖n𝑖1𝑛 t ti𝑖n𝑖1𝑛 ti𝑖1 ti𝑖n𝑛 ti 𝑡𝑡0 𝑡𝑡1 𝑡𝑡2 𝑡𝑡3 𝑡𝑡4 𝑡𝑡5 𝑡𝑡6 𝑡𝑡7⋯ 𝑡𝑡𝑝𝑝 𝑁𝑁00 𝑁𝑁1 0 𝑁𝑁2 0 𝑁𝑁3 0 𝑁𝑁4 0 𝑁𝑁50 𝑁𝑁60 𝑁𝑁01 𝑁𝑁1 1 𝑁𝑁21 𝑁𝑁31 𝑁𝑁41 𝑁𝑁51 ⋯ 𝑁𝑁02 𝑁𝑁12 𝑁𝑁22 𝑁𝑁32 𝑁𝑁42 𝑁𝑁03 𝑁𝑁13 𝑁𝑁23 𝑁𝑁33 ⋯ ⋯ ⋯ ⋯ 𝑁𝑁0𝑛𝑛 𝑁𝑁1𝑛𝑛 ⋯ 𝑁𝑁𝑚𝑚𝑛𝑛 𝑃𝑃(𝑡𝑡) = (1 − 𝑡𝑡)3 𝑞𝑞 0+ 3(1 − 𝑡𝑡)2 𝑡𝑡 𝑞𝑞1 + 3(1 − 𝑡𝑡) 𝑡𝑡2 𝑞𝑞 2+ 𝑡𝑡3 𝑞𝑞3(0 ≤ 𝑡𝑡 ≤ 1) ここで制御点 𝑞𝑞0= (1,1) , 𝑞𝑞1= (2,4) , 𝑞𝑞2= (3,4), 𝑞𝑞3= (3,1) から定まるベジェ曲線を𝑃𝑃(𝑡𝑡)とし制御点 𝑞𝑞0= (1,1) ,

𝑞𝑞

1′= (1,3) , 𝑞𝑞2= (3,4), 𝑞𝑞3= (3,1) から定まるベジェ曲線を𝑃𝑃

(

𝑡𝑡

)

として図1に示し てみる. この図から一つの制御点の変化が,曲線全体 に大きく影響することが分かる.これがベジェ 曲線の問題点の一つである. 図1 制御点変更による影響 さらに制御点 𝑞𝑞0= (1,1) , 𝑞𝑞1= (2,3) , 𝑞𝑞2= (3,1), 𝑞𝑞3= (4,3) から定まるベジェ曲線を𝑃𝑃(𝑡𝑡)として図 2 に図示 してみよう. 図2 制御点が大きく変動する場合 この図から制御点が波打つように大きく変動 する場合に,ベジェ曲線はその変化に追随せず, なめらかになってしまっていることが分かる. これがベジェ曲線の問題点の2 つ目である. この主な原因は,制御点の個数が増えると, 曲線の次数もそれにともなって上がっていくこ とにある.たとえば 10 個の制御点に対して 9 次のベジェ曲線が必要になり,それは大変複雑 な関数なので,制御点の影響を受けやすかった り,逆に制御点の変化に追随できないというこ とが起きてしまう. 以上2 点を改善するために考えられた曲線が B-スプライン曲線である.非常に巧妙に組み 立てられたB-スプライン曲線はどのように構 成されているかを具体例を通してみていくこと にする. 2.3 B-スプライン曲線の定義 ベジェ曲線の場合の各制御点の重み関数𝐵𝐵𝑖𝑖𝑛𝑛 は次のようになる. 1 = ((1 − t) + t)n= � 𝐶𝐶 𝑖𝑖 𝑛𝑛 (1 − 𝑡𝑡)𝑛𝑛𝑛𝑖𝑖 𝑡𝑡𝑖𝑖 n i=0 これは1 の 2 項展開となっているので � 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) = 1 𝑛𝑛 𝑖𝑖=0 が常に成立している. また明らかに𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) > 0が成立している.この2 つの性質があるおかげで,ベジェ曲線は制御点 を繋ぐ凸多角形注3)(凸閉包)の中に含まれる. これを閉包性という.この性質を保ったまま, 制御点の個数を増やしても曲線の次数を上げな いで,なめらかに曲線を繋げていくのが B-ス プライン曲線である. その定義を見ていくことにする. 𝑛𝑛 次のB-スプライン曲線𝑃𝑃(𝑡𝑡)は,m + 1個の 制御点𝑞𝑞𝑖𝑖と各制御点の n次の重み関数 𝑁𝑁𝑖𝑖𝑛𝑛を使 って次のように,パラメトリック曲線として定 義される. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) 𝑞𝑞 𝑖𝑖 𝑚𝑚 𝑖𝑖=0 ⋯ (2) 定義域は後に考察する. 𝑁𝑁𝑖𝑖𝑛𝑛(t)は基底関数で𝑝𝑝 + 1個のノットベクトル � 𝑡𝑡0 , 𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , ⋯ , 𝑡𝑡𝑝𝑝�を使って次の式で与えら れる. 𝑁𝑁𝑖𝑖0(𝑡𝑡) = �1 𝑖𝑖𝑖𝑖 𝑡𝑡𝑖𝑖≤ 𝑡𝑡 < 𝑡𝑡𝑖𝑖𝑖1 0 その他 ⋯ (3) 𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡) =𝑡𝑡𝑡𝑡 − 𝑡𝑡𝑖𝑖 𝑖𝑖𝑖𝑛𝑛− 𝑡𝑡𝑖𝑖𝑁𝑁𝑖𝑖 𝑛𝑛𝑛1(𝑡𝑡) + 𝑡𝑡𝑖𝑖𝑖𝑛𝑛𝑖1− 𝑡𝑡 𝑡𝑡𝑖𝑖𝑖𝑛𝑛𝑖1− 𝑡𝑡𝑖𝑖𝑖1𝑁𝑁𝑖𝑖𝑖1 𝑛𝑛𝑛1(𝑡𝑡) ⋯ (4) ここでノットベクトルの成分𝑡𝑡𝑖𝑖をノットとい い,ノットは𝑡𝑡0≤ 𝑡𝑡1≤ 𝑡𝑡2⋯ 𝑡𝑡𝑝𝑝𝑛1≤ 𝑡𝑡𝑝𝑝を満たし

(4)

以上の考察から1つのノット区間で値を持つ 基底関数の個数は,0次の場合は1個,1次の場 合は2個,2次の場合は3個であることが分かる. (2)より基底関数と制御点の個数は一致して いることに注意すると,1つのノット区間が与 えられた時,制御点の個数は基底関数の次数に 依存し,0次の基底関数の場合は1個,1次の基 底関数の場合は2個,2次の基底関数の場合は3 個,一般にn次の基底関数の場合は,制御点の 個数はn+1個となることがわかる.(三角形の底 辺にある基底関数の個数) 2.5 B-スプライン曲線の閉包性の確認 2.3 節で見たようにベジェ曲線の基底関数は � 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) = 1 , 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) > 0 𝑛𝑛 𝑖𝑖𝑖𝑖 を常に満たしていた.これを閉包性といった. B-スプライン曲線の基底関数はどうだろうか. 具体的に確認してみる. まず1次の場合. ノット区間は[𝑡𝑡1, 𝑡𝑡2)で考えるので 𝑁𝑁𝑖1 + 𝑁𝑁1 1= −𝑡𝑡 + 𝑡𝑡−𝑡𝑡 2 1+ 𝑡𝑡2+ 𝑡𝑡 − 𝑡𝑡1 −𝑡𝑡1+ 𝑡𝑡2= 1 次に2次の場合. ノット区間は[𝑡𝑡2, 𝑡𝑡3)で考えるので 𝑁𝑁𝑖2+ 𝑁𝑁12+ 𝑁𝑁22= (−𝑡𝑡 + 𝑡𝑡3)2 (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) + (𝑡𝑡 − 𝑡𝑡1)(−𝑡𝑡 + 𝑡𝑡3) (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) +(−𝑡𝑡(𝑡𝑡 − 𝑡𝑡2)(−𝑡𝑡 + 𝑡𝑡4) 2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) + (𝑡𝑡 − 𝑡𝑡2)2 (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) =𝑡𝑡𝑡𝑡 − 𝑡𝑡3 2− 𝑡𝑡3+ −𝑡𝑡 + 𝑡𝑡2 𝑡𝑡2− 𝑡𝑡3 = −𝑡𝑡 + 𝑡𝑡3 −𝑡𝑡2+ 𝑡𝑡3+ 𝑡𝑡 − 𝑡𝑡2 −𝑡𝑡2+ 𝑡𝑡3= 1 一般に � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) = 𝑛𝑛 𝑖𝑖𝑖𝑖 −𝑡𝑡 + 𝑡𝑡n+1 −𝑡𝑡n+ 𝑡𝑡n+1+ 𝑡𝑡 − 𝑡𝑡n −𝑡𝑡n+ 𝑡𝑡𝑛𝑛+1= 1 ⋯ (6) が常に成立している.また図4から(4)で定義さ れる 𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡)は常に 𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡) > 0 ⋯ (7) を満たしていることは明らかである. (6)式 , (7)式よりB-スプライン曲線も閉包性 を持っていることが確認できた. 2.6 B-スプライン曲線の成り立ち 2.3 節で𝑛𝑛 次のB-スプライン曲線𝑃𝑃(𝑡𝑡)は, m + 1個の制御点𝑞𝑞𝑖𝑖と各制御点の重み関数𝑁𝑁𝑖𝑖𝑛𝑛を 使って次のようにパラメトリック曲線として定 義した. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) 𝑞𝑞𝑖𝑖 𝑚𝑚 𝑖𝑖𝑖𝑖 このときの 𝑡𝑡 の範囲はノットを使ってどのよ うに表されるのだろうか.また制御点が増えた ときノットをどのように扱えばよいのだろうか. 具体的に考えてみる. まず制御点3個からなる2次B-スプライン曲 線を求めてみる.2次なので求めなければなら ない基底関数は𝑁𝑁𝑖2, 𝑁𝑁12, 𝑁𝑁22の3つだが,基底関数 は一つ一つがCox-de Boorの再帰公式によって 再帰的に定義されているので,結局図5の太い 台形の中のノットと基底関数が必要になる. また3つの基底関数の定義域は,図5で基底関 数𝑁𝑁𝑖2, 𝑁𝑁12, 𝑁𝑁22を底辺とする三角形の頂点が位置 するノット区間[𝑡𝑡2, 𝑡𝑡3) = [2,3)である.そして対 象となるノットベクトルは�𝑡𝑡𝑖, 𝑡𝑡1, 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4 ,𝑡𝑡5 で,これを{0,1,2, 3,4,5}とする. この区間で台形内の基底関数を順に求めるこ とにする. 定義域を

[

𝑡𝑡2, 𝑡𝑡3

)

=

[

2,3

)

で考えるので,(3)よ り0 次の基底関数はノット区間[2,3)のみで定値 1 をとり他の区間はすべて 0 である.すなわち 𝑁𝑁𝑖𝑖= 0 , 𝑁𝑁1 𝑖= 0 , 𝑁𝑁2 𝑖= 1 , 𝑁𝑁3 𝑖= 0 , 𝑁𝑁4 𝑖= 0 (4)より 𝑁𝑁𝑖1(𝑡𝑡) =𝑡𝑡𝑡𝑡 − 𝑡𝑡𝑖 1− 𝑡𝑡𝑖𝑁𝑁𝑖 𝑖(𝑡𝑡) + 𝑡𝑡2− 𝑡𝑡 𝑡𝑡2− 𝑡𝑡1𝑁𝑁1 𝑖(𝑡𝑡) =𝑡𝑡 − 0 1 − 0 × 0 + 2 − 𝑡𝑡 2 − 1 × 0 = 0 同様にして 𝑁𝑁11(𝑡𝑡) = 3 − 𝑡𝑡 , 𝑁𝑁21(𝑡𝑡) = 𝑡𝑡 − 2 , 𝑁𝑁31(𝑡𝑡) = 0 𝑁𝑁𝑖2(𝑡𝑡) =(3 − 𝑡𝑡) 2 2 , 𝑁𝑁12(𝑡𝑡) = −𝑡𝑡2+ 5𝑡𝑡 − 11 2 𝑁𝑁22(𝑡𝑡) =(𝑡𝑡 − 2) 2 2 以上の基底関数をもとに 制御点を 𝑞𝑞𝑖= (1,1) , 𝑞𝑞1= (2,3) , 𝑞𝑞2= (4,1)とす ると(2)から2次のB-スプライン曲線は

(5)

𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖= 2 𝑖𝑖𝑖𝑖 (3 − 𝑡𝑡)2 2 𝑞𝑞𝑖 + �−𝑡𝑡2+ 5𝑡𝑡 −11 2 � 𝑞𝑞1+ (𝑡𝑡 − 2)2 2 𝑞𝑞2 (2 ≤ 𝑡𝑡 < 3) となり図6のような曲線となる. 図6 2次B-スプライン(制御点3) 次にこのまま制御点を1個増やしてみる. 2次B-スプライン曲線はあくまでも3個の基 底関数を持ち,それを繋いでいくという方法を とるので,先に考えた図5の三角形と台形をそ のまま1つ分平行移動することになる.求める 基底関数は𝑁𝑁12,𝑁𝑁22,𝑁𝑁32の3つである.基底関数の 定義域は,図5で基底関数𝑁𝑁12,𝑁𝑁22,𝑁𝑁32を底辺とす る一番右の三角形の頂点が位置するノット区間 [𝑡𝑡3, 𝑡𝑡4) = [3,4)である. そして対象となるノットベクトルは �𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4 ,𝑡𝑡5 , 𝑡𝑡6�でこれを{1,2, 3,4,5,6}とする. (8)式を求めたときと同様に台形内の基底関 数を求めると次のようになる. 𝑁𝑁1 𝑖= 0 , 𝑁𝑁2 𝑖= 0 , 𝑁𝑁3 𝑖= 1 , 𝑁𝑁4 𝑖= 0 , 𝑁𝑁5 𝑖= 0 𝑁𝑁11= 0 , 𝑁𝑁21(𝑡𝑡) = 4 − 𝑡𝑡 , 𝑁𝑁31(𝑡𝑡) = 𝑡𝑡 − 3 , 𝑁𝑁41= 0 𝑁𝑁21(𝑡𝑡) =12 (4 − 𝑡𝑡)2 , 𝑁𝑁22(𝑡𝑡) =232 + 7𝑡𝑡 − 𝑡𝑡2 𝑁𝑁32(𝑡𝑡) =12 (−3 + 𝑡𝑡)2 以上の基底関数をもとに 4番目の制御点を 𝑞𝑞3= (5,3)とすると(2)から 2次B-スプライン曲線は 𝑄𝑄(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖= 3 𝑖𝑖𝑖1 (4 − 𝑡𝑡)2 2 𝑞𝑞1 + �232 + 7𝑡𝑡 − 𝑡𝑡2� 𝑞𝑞 2+(𝑡𝑡 − 3) 2 2 𝑞𝑞3 (3 ≤ 𝑡𝑡 < 4) となり(8)式 , (9)式をまとめて図示すると図 7 のように 𝑡𝑡 = 3で連続でなめらかな曲線となる. (8)式 , (9)式をまとめて示すと 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 3 𝑖𝑖𝑖𝑖 (2 ≤ 𝑡𝑡 < 4) ⋯ (10) のようになるが,(10)式はあくまでも(8)式 , (9)式をまとめたもので,𝑡𝑡の範囲によって採用 する基底関数𝑁𝑁𝑖𝑖2 (𝑡𝑡)を変えなければならない. 2.5節で見た閉包性は4個の基底関数の和で成 立しているのではなく,あくまでも(次数+1)=3 個分の基底関数の和について成立していること に注意する必要がある. 図7 2次B-スプライン(制御点4) この節の最後に制御点 𝑞𝑞𝑖𝑖の個数 m + 1,ノッ トベクトルの個数 𝑝𝑝 + 1,次数 𝑛𝑛の間に成立する 関係を考察する.基底関数を決定するのに必要 なノットベクトルの個数は図5の台形から容易 に予想することができる. ノットベクトルを � 𝑡𝑡𝑖 , 𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4 , ⋯ , 𝑡𝑡𝑝𝑝� と しn次の基底関数を 𝑁𝑁𝑖𝑛𝑛, 𝑁𝑁1𝑛𝑛 , 𝑁𝑁2𝑛𝑛 , ⋯ 𝑁𝑁𝑚𝑚𝑛𝑛と して制御点を 𝑞𝑞𝑖 , 𝑞𝑞1 , 𝑞𝑞2 , 𝑞𝑞3 , ⋯ , 𝑞𝑞𝑚𝑚とする と,常に 𝑝𝑝 = 𝑚𝑚 + 𝑛𝑛 + 1なる関係がある.そして 𝑛𝑛次の B-スプライン曲線は次のように表され, その定義域は𝑛𝑛番目のノットから𝑚𝑚番目のノッ トにわたっている. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) 𝑞𝑞𝑖𝑖 𝑚𝑚 𝑖𝑖𝑖𝑖 ( 𝑡𝑡𝑛𝑛≤ t < 𝑡𝑡𝑚𝑚𝑚1) ⋯ (11) 2.7 つなぎ目での連続性 ノットベクトルに対応する曲線上の点をノ ット点という.図7 で 𝑡𝑡 = 3に対するノット点 𝑃𝑃(3)と 𝑄𝑄(3)が 一 致 し , 方 向 微 分 係 数 𝑃𝑃′(3)と 𝑄𝑄′(3)が一致することを一般的に示してみよう. ノットベクトルを� 𝑡𝑡𝑖 , 𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4, , 𝑡𝑡5,�とし 制御点を 𝑞𝑞𝑖 , 𝑞𝑞1 , 𝑞𝑞2とすると ⋯ (8) ⋯ (9) 以上の考察から1つのノット区間で値を持つ 基底関数の個数は,0次の場合は1個,1次の場 合は2個,2次の場合は3個であることが分かる. (2)より基底関数と制御点の個数は一致して いることに注意すると,1つのノット区間が与 えられた時,制御点の個数は基底関数の次数に 依存し,0次の基底関数の場合は1個,1次の基 底関数の場合は2個,2次の基底関数の場合は3 個,一般にn次の基底関数の場合は,制御点の 個数はn+1個となることがわかる.(三角形の底 辺にある基底関数の個数) 2.5 B-スプライン曲線の閉包性の確認 2.3 節で見たようにベジェ曲線の基底関数は � 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) = 1 , 𝐵𝐵𝑖𝑖𝑛𝑛 (𝑡𝑡) > 0 𝑛𝑛 𝑖𝑖𝑖𝑖 を常に満たしていた.これを閉包性といった. B-スプライン曲線の基底関数はどうだろうか. 具体的に確認してみる. まず1次の場合. ノット区間は[𝑡𝑡1, 𝑡𝑡2)で考えるので 𝑁𝑁𝑖1 + 𝑁𝑁1 1= −𝑡𝑡 + 𝑡𝑡−𝑡𝑡 2 1+ 𝑡𝑡2+ 𝑡𝑡 − 𝑡𝑡1 −𝑡𝑡1+ 𝑡𝑡2= 1 次に2次の場合. ノット区間は[𝑡𝑡2, 𝑡𝑡3)で考えるので 𝑁𝑁𝑖2+ 𝑁𝑁12+ 𝑁𝑁22= (−𝑡𝑡 + 𝑡𝑡3)2 (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) + (𝑡𝑡 − 𝑡𝑡1)(−𝑡𝑡 + 𝑡𝑡3) (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) +(−𝑡𝑡(𝑡𝑡 − 𝑡𝑡2)(−𝑡𝑡 + 𝑡𝑡4) 2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) + (𝑡𝑡 − 𝑡𝑡2)2 (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) =𝑡𝑡𝑡𝑡 − 𝑡𝑡3 2− 𝑡𝑡3+ −𝑡𝑡 + 𝑡𝑡2 𝑡𝑡2− 𝑡𝑡3 = −𝑡𝑡 + 𝑡𝑡3 −𝑡𝑡2+ 𝑡𝑡3+ 𝑡𝑡 − 𝑡𝑡2 −𝑡𝑡2+ 𝑡𝑡3= 1 一般に � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) = 𝑛𝑛 𝑖𝑖𝑖𝑖 −𝑡𝑡 + 𝑡𝑡n+1 −𝑡𝑡n+ 𝑡𝑡n+1+ 𝑡𝑡 − 𝑡𝑡n −𝑡𝑡n+ 𝑡𝑡𝑛𝑛+1= 1 ⋯ (6) が常に成立している.また図4から(4)で定義さ れる 𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡)は常に 𝑁𝑁𝑖𝑖𝑛𝑛(𝑡𝑡) > 0 ⋯ (7) を満たしていることは明らかである. (6)式 , (7)式よりB-スプライン曲線も閉包性 を持っていることが確認できた. 2.6 B-スプライン曲線の成り立ち 2.3 節で𝑛𝑛 次のB-スプライン曲線𝑃𝑃(𝑡𝑡)は, m + 1個の制御点𝑞𝑞𝑖𝑖と各制御点の重み関数𝑁𝑁𝑖𝑖𝑛𝑛を 使って次のようにパラメトリック曲線として定 義した. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖𝑛𝑛 (𝑡𝑡) 𝑞𝑞𝑖𝑖 𝑚𝑚 𝑖𝑖𝑖𝑖 このときの 𝑡𝑡 の範囲はノットを使ってどのよ うに表されるのだろうか.また制御点が増えた ときノットをどのように扱えばよいのだろうか. 具体的に考えてみる. まず制御点3個からなる2次B-スプライン曲 線を求めてみる.2次なので求めなければなら ない基底関数は𝑁𝑁𝑖2, 𝑁𝑁12, 𝑁𝑁22の3つだが,基底関数 は一つ一つがCox-de Boorの再帰公式によって 再帰的に定義されているので,結局図5の太い 台形の中のノットと基底関数が必要になる. また3つの基底関数の定義域は,図5で基底関 数𝑁𝑁𝑖2, 𝑁𝑁12, 𝑁𝑁22を底辺とする三角形の頂点が位置 するノット区間[𝑡𝑡2, 𝑡𝑡3) = [2,3)である.そして対 象となるノットベクトルは�𝑡𝑡𝑖, 𝑡𝑡1, 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4 ,𝑡𝑡5 で,これを{0,1,2, 3,4,5}とする. この区間で台形内の基底関数を順に求めるこ とにする. 定義域を

[

𝑡𝑡2, 𝑡𝑡3

)

=

[

2,3

)

で考えるので,(3)よ り0 次の基底関数はノット区間[2,3)のみで定値 1 をとり他の区間はすべて 0 である.すなわち 𝑁𝑁𝑖𝑖= 0 , 𝑁𝑁1 𝑖= 0 , 𝑁𝑁2 𝑖= 1 , 𝑁𝑁3 𝑖= 0 , 𝑁𝑁4 𝑖= 0 (4)より 𝑁𝑁𝑖1(𝑡𝑡) =𝑡𝑡𝑡𝑡 − 𝑡𝑡𝑖 1− 𝑡𝑡𝑖𝑁𝑁𝑖 𝑖(𝑡𝑡) + 𝑡𝑡2− 𝑡𝑡 𝑡𝑡2− 𝑡𝑡1𝑁𝑁1 𝑖(𝑡𝑡) =𝑡𝑡 − 0 1 − 0 × 0 + 2 − 𝑡𝑡 2 − 1 × 0 = 0 同様にして 𝑁𝑁11(𝑡𝑡) = 3 − 𝑡𝑡 , 𝑁𝑁21(𝑡𝑡) = 𝑡𝑡 − 2 , 𝑁𝑁31(𝑡𝑡) = 0 𝑁𝑁𝑖2(𝑡𝑡) =(3 − 𝑡𝑡) 2 2 , 𝑁𝑁12(𝑡𝑡) = −𝑡𝑡2+ 5𝑡𝑡 − 11 2 𝑁𝑁22(𝑡𝑡) =(𝑡𝑡 − 2) 2 2 以上の基底関数をもとに 制御点を 𝑞𝑞𝑖= (1,1) , 𝑞𝑞1= (2,3) , 𝑞𝑞2= (4,1)とす ると(2)から2次のB-スプライン曲線は

(6)

𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 2 𝑖𝑖𝑖𝑖 = 𝑞𝑞𝑖(−𝑡𝑡 + 𝑡𝑡3)2 (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) + 𝑞𝑞1( (𝑡𝑡 − 𝑡𝑡1)(−𝑡𝑡 + 𝑡𝑡3) (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) +(−𝑡𝑡(𝑡𝑡 − 𝑡𝑡2)(−𝑡𝑡 + 𝑡𝑡4) 2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4)) + 𝑞𝑞2(𝑡𝑡 − 𝑡𝑡2)2 (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) 𝑃𝑃′

(

𝑡𝑡

)

= −2𝑞𝑞0(−𝑡𝑡 + 𝑡𝑡3) (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3)+ 𝑞𝑞1( 𝑡𝑡 − 𝑡𝑡1 (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡3 1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) − 𝑡𝑡 − 𝑡𝑡2 (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡4 2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4)) + 2𝑞𝑞2(𝑡𝑡 − 𝑡𝑡2) (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) これより 𝑃𝑃(𝑡𝑡3) =𝑞𝑞2(𝑡𝑡2− 𝑡𝑡3) + 𝑞𝑞1(𝑡𝑡3− 𝑡𝑡4) 𝑡𝑡2− 𝑡𝑡4 ⋯ (12) 𝑃𝑃(𝑡𝑡3) = 𝑞𝑞1−𝑞𝑞2 𝑡𝑡2− 𝑡𝑡4⋯ (13) ノットベクトルを� 𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4 ,𝑡𝑡5 , 𝑡𝑡6 �とし制御 点を 𝑞𝑞1 , 𝑞𝑞2 , 𝑞𝑞3 とすると 𝑄𝑄(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 3 𝑖𝑖𝑖1 =(−𝑡𝑡𝑞𝑞1(−𝑡𝑡 + 𝑡𝑡4)2 2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) + 𝑞𝑞2( (𝑡𝑡 − 𝑡𝑡2)(−𝑡𝑡 + 𝑡𝑡4) (−𝑡𝑡2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) +(−𝑡𝑡(𝑡𝑡 − 𝑡𝑡3)(−𝑡𝑡 + 𝑡𝑡5) 3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5)) + 𝑞𝑞3(𝑡𝑡 − 𝑡𝑡3)2 (−𝑡𝑡3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5) 𝑄𝑄′(𝑡𝑡)= −2𝑞𝑞1(−𝑡𝑡 + 𝑡𝑡4) (−𝑡𝑡2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) + 𝑞𝑞2(− 𝑡𝑡 − 𝑡𝑡2 (−𝑡𝑡2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡4 2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) − 𝑡𝑡 − 𝑡𝑡3 (−𝑡𝑡3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡5 3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5)) + 2𝑞𝑞3(𝑡𝑡 − 𝑡𝑡3) (−𝑡𝑡3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5) これより 𝑄𝑄(𝑡𝑡3) =𝑞𝑞2(𝑡𝑡2− 𝑡𝑡3) + 𝑞𝑞1(𝑡𝑡3− 𝑡𝑡4) 𝑡𝑡2− 𝑡𝑡4 ⋯ (14) 𝑄𝑄(𝑡𝑡3) = 𝑞𝑞1−𝑞𝑞2 𝑡𝑡2− 𝑡𝑡4⋯ (15) (12)式 と (14)式より𝑃𝑃(𝑡𝑡3) = 𝑄𝑄(𝑡𝑡3), (13)式 と (15)式より𝑃𝑃′(𝑡𝑡 3) = 𝑄𝑄′(𝑡𝑡3)である. よってノットベクトル𝑡𝑡 = 𝑡𝑡3におけるノット 点で関数値および方向微分係数は一致する.こ れよりB-スプライン曲線は制御点を増やした とき,つなぎ目でなめらかに接続されることが わかる. 2.8 ノットの変化と曲線の形状 ノットベクトルが等間隔のとき一様といい, 等間隔でないとき非一様という. 一様のときは,図6,図7から分かるようにノ ット点は各制御点を結ぶ線分の中点を通り,制 御点の始点と終点を通らない.興味深いのは非 一様の場合である.この節ではノットベクトル が非一様の場合に,ノットベクトルとB-スプ ライン曲線の形状とにどのような関係があるか を具体的に見ていく. 以下B-スプライン曲線の次数 𝑛𝑛 = 2,制御 点の個数 𝑚𝑚 = 4の場合について考える.この場 合のノット区間は2.6 節でみたように[𝑡𝑡2, 𝑡𝑡3)と [𝑡𝑡3, 𝑡𝑡4)なのでまず𝑡𝑡2, 𝑡𝑡3を変化させて曲線の変化 を考察してみる. ①{0,1,2, a, 4,5,6}で2 < 𝑎𝑎 < 4の場合. 図8で曲線Pのノットベクトルは 𝑎𝑎 = 3の場 合で{0,1,2, 3 ,4,5,6}である.これは一様である. 曲線Qのノットベクトルは𝑎𝑎 = 3.8の場合で {0,1,2, 3.8 ,4,5,6}である. 曲線Rのノットベクトルは𝑎𝑎 = 2.2の場合で {0,1,2, 2.2 ,4,5,6}である. 図8から3番目のノット点は線分 𝑞𝑞1𝑞𝑞2上にあ って 𝑎𝑎 𝑎 2のとき制御点 𝑞𝑞𝑖, 𝑞𝑞1 , 𝑞𝑞2からなるB- ス プ ラ イ ン 曲 線 は 点𝑞𝑞1に 重 複 し , 制 御 点 𝑞𝑞1, 𝑞𝑞2, 𝑞𝑞3に対するB-スプライン曲線は点𝑞𝑞1を 始点とする曲線となることが予想できる. 図8 𝑎𝑎を2と4の間で変化させた場合 また𝑎𝑎 𝑎 3のとき制御点𝑞𝑞1, 𝑞𝑞2, 𝑞𝑞3からなるB- スプライン曲線は点𝑞𝑞2に重複し,制御点 𝑞𝑞𝑖, 𝑞𝑞1 , 𝑞𝑞2に対するB-スプライン曲線は点𝑞𝑞2を終点と

(7)

する曲線となることが予想できる.次にこのこ とを確認する. ②{0,1,2, a, 4,5,6}で𝑎𝑎 = 2および𝑎𝑎 = 4の場合. 曲線Pのノットベクトルは一様で {0,1,2, 3 ,4,5,6}である. 図9 𝑎𝑎 = 2または𝑎𝑎 = 4の場合 図9 から分かるように,曲線 S のノットベク トルは

{

0,1,2, 2,4,5,6

}

𝑡𝑡 = 2 で制御点𝑞𝑞1に重複 し,ノット区間[2,4)で曲線 S となっている. 曲線Tのノットベクトルは{0,1,2, 4,4,5,6}でノッ ト区間[2,4)で曲線Tとなり,𝑡𝑡 = 4で制御点𝑞𝑞2に 重複している. ③{0,1, a, 3,4,5,6}で2 < 𝑎𝑎 < 4の場合. 図10の曲線Uのノットベクトルは𝑎𝑎 = 1.2の 場合で,曲線Vのノットベクトルは𝑎𝑎 = 2.8の場 合である. 図10から2番目のノット点は線分 𝑞𝑞0𝑞𝑞1上にあ って 𝑎𝑎 𝑎 1のとき制御点 𝑞𝑞0, 𝑞𝑞1 , 𝑞𝑞2からなるB- スプライン曲線の始点は点𝑞𝑞0に近づき,a𝑎 3の ときは図8の曲線Rと同様に制御点𝑞𝑞0, 𝑞𝑞1, 𝑞𝑞2から なるB-スプライン曲線は制御点𝑞𝑞1に重複する ことが予想できる. a𝑎 3の場合はすでに確認 済なので次に𝑎𝑎 𝑎 1の場合について確認する. 図10 𝑎𝑎を1と3の間で変化させた場合 ④{0,1, a, 3,4,5,6}で𝑎𝑎 = 1の場合. ノットが重複しているのでCox-de Boorの再 帰公式に従って制御点の個数4の2次B-スプラ イン曲線を丁寧に求めて見る. 図11 多重ノットの場合の基底関数の構成図 まず図11 の左の三角形に注目し,2 番目の ノット区間[𝑡𝑡2, 𝑡𝑡3) = [1,3)を考え 2 次の基底関数 𝑁𝑁02 , 𝑁𝑁12, 𝑁𝑁22を求める.基底関数を決定するため に必要なノットは,図11 の台形内にあるノッ トすなわち𝑡𝑡0 から𝑡𝑡5までである. (3)より 0 次の基底関数はノット区間[𝑡𝑡2, 𝑡𝑡3) = [1,3)のみで定値 1 をとり他の区間はすべて 0 で ある.すなわち 𝑁𝑁00= 0 , 𝑁𝑁1 0= 0 , 𝑁𝑁2 0= 1 , 𝑁𝑁3 0= 0 , 𝑁𝑁4 0= 0 (4)より 𝑁𝑁01(𝑡𝑡) =𝑡𝑡𝑡𝑡 𝑡 𝑡𝑡0 1𝑡 𝑡𝑡0𝑁𝑁0 0(𝑡𝑡) + 𝑡𝑡2𝑡 𝑡𝑡 𝑡𝑡2𝑡 𝑡𝑡1𝑁𝑁1 0(𝑡𝑡) =𝑡𝑡 𝑡 0 1 𝑡 0 × 0 + 1 𝑡 𝑡𝑡 1 𝑡 1 × 0となるが ここで分母が0の分数は0と取り決めてあるの で 𝑁𝑁01(𝑡𝑡) = 0となる.以上に注意して基底関数を 求めると以下のようになる. 𝑁𝑁11(𝑡𝑡) =3 𝑡 𝑡𝑡2 , 𝑁𝑁21(𝑡𝑡) =𝑡𝑡 𝑡 12 , 𝑁𝑁31(𝑡𝑡) = 0 𝑁𝑁02(𝑡𝑡) = (3 𝑡 𝑡𝑡) 2 4 , 𝑁𝑁12(𝑡𝑡) = 𝑡 17 12 + 11𝑡𝑡 6 𝑡 5𝑡𝑡2 12 𝑁𝑁22(𝑡𝑡) =(𝑡𝑡 𝑡 1) 2 6 以上の基底関数をもとに 制御点を 𝑞𝑞0= (1,1) , 𝑞𝑞1= (2,4) , 𝑞𝑞2= (5,1)とす ると(2)から2次のB-スプライン曲線は次のよ うになる. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 2 𝑖𝑖𝑖0 =(3 𝑡 𝑡𝑡)4 2 𝑞𝑞0+ �𝑡1712 +11𝑡𝑡6 𝑡5𝑡𝑡 2 12 � 𝑞𝑞1 +(𝑡𝑡 𝑡 1)6 2 𝑞𝑞2 (1 ≤ 𝑡𝑡 < 3) ⋯ (16) 𝑡𝑡0 𝑡𝑡1 𝑡𝑡2 𝑡𝑡3 𝑡𝑡4 𝑡𝑡5 𝑡𝑡6 𝑡𝑡7 0 1 1 3 4 5 6 7 𝑁𝑁00 𝑁𝑁1 0 𝑁𝑁2 0 𝑁𝑁3 0 𝑁𝑁4 0 𝑁𝑁50 𝑁𝑁60 𝑁𝑁01 𝑁𝑁1 1 𝑁𝑁21 𝑁𝑁31 𝑁𝑁41 𝑁𝑁51 𝑁𝑁02 𝑁𝑁12 𝑁𝑁22 𝑁𝑁32 𝑁𝑁42 𝑁𝑁03 𝑁𝑁 13 𝑁𝑁23 𝑁𝑁33 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 2 𝑖𝑖𝑖𝑖 = 𝑞𝑞𝑖(−𝑡𝑡 + 𝑡𝑡3)2 (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) + 𝑞𝑞1( (𝑡𝑡 − 𝑡𝑡1)(−𝑡𝑡 + 𝑡𝑡3) (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) +(−𝑡𝑡(𝑡𝑡 − 𝑡𝑡2)(−𝑡𝑡 + 𝑡𝑡4) 2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4)) + 𝑞𝑞2(𝑡𝑡 − 𝑡𝑡2)2 (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) 𝑃𝑃′

(

𝑡𝑡

)

= −2𝑞𝑞0(−𝑡𝑡 + 𝑡𝑡3) (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3)+ 𝑞𝑞1( 𝑡𝑡 − 𝑡𝑡1 (−𝑡𝑡1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡3 1+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡3) − 𝑡𝑡 − 𝑡𝑡2 (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡4 2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4)) + 2𝑞𝑞2(𝑡𝑡 − 𝑡𝑡2) (−𝑡𝑡2+ 𝑡𝑡3)(−𝑡𝑡2+ 𝑡𝑡4) これより 𝑃𝑃(𝑡𝑡3) =𝑞𝑞2(𝑡𝑡2− 𝑡𝑡3) + 𝑞𝑞1(𝑡𝑡3− 𝑡𝑡4) 𝑡𝑡2− 𝑡𝑡4 ⋯ (12) 𝑃𝑃(𝑡𝑡3) = 𝑞𝑞1−𝑞𝑞2 𝑡𝑡2− 𝑡𝑡4⋯ (13) ノットベクトルを� 𝑡𝑡1 , 𝑡𝑡2 , 𝑡𝑡3 , 𝑡𝑡4 ,𝑡𝑡5 , 𝑡𝑡6 �とし制御 点を 𝑞𝑞1 , 𝑞𝑞2 , 𝑞𝑞3 とすると 𝑄𝑄(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 3 𝑖𝑖𝑖1 =(−𝑡𝑡𝑞𝑞1(−𝑡𝑡 + 𝑡𝑡4)2 2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) + 𝑞𝑞2( (𝑡𝑡 − 𝑡𝑡2)(−𝑡𝑡 + 𝑡𝑡4) (−𝑡𝑡2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) +(−𝑡𝑡(𝑡𝑡 − 𝑡𝑡3)(−𝑡𝑡 + 𝑡𝑡5) 3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5)) + 𝑞𝑞3(𝑡𝑡 − 𝑡𝑡3)2 (−𝑡𝑡3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5) 𝑄𝑄′(𝑡𝑡)= −2𝑞𝑞1(−𝑡𝑡 + 𝑡𝑡4) (−𝑡𝑡2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) + 𝑞𝑞2(− 𝑡𝑡 − 𝑡𝑡2 (−𝑡𝑡2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡4 2+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡4) − 𝑡𝑡 − 𝑡𝑡3 (−𝑡𝑡3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5) +(−𝑡𝑡 −𝑡𝑡 + 𝑡𝑡5 3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5)) + 2𝑞𝑞3(𝑡𝑡 − 𝑡𝑡3) (−𝑡𝑡3+ 𝑡𝑡4)(−𝑡𝑡3+ 𝑡𝑡5) これより 𝑄𝑄(𝑡𝑡3) =𝑞𝑞2(𝑡𝑡2− 𝑡𝑡3) + 𝑞𝑞1(𝑡𝑡3− 𝑡𝑡4) 𝑡𝑡2− 𝑡𝑡4 ⋯ (14) 𝑄𝑄(𝑡𝑡3) = 𝑞𝑞1−𝑞𝑞2 𝑡𝑡2− 𝑡𝑡4⋯ (15) (12)式 と (14)式より𝑃𝑃(𝑡𝑡3) = 𝑄𝑄(𝑡𝑡3), (13)式 と (15)式より𝑃𝑃′(𝑡𝑡 3) = 𝑄𝑄′(𝑡𝑡3)である. よってノットベクトル𝑡𝑡 = 𝑡𝑡3におけるノット 点で関数値および方向微分係数は一致する.こ れよりB-スプライン曲線は制御点を増やした とき,つなぎ目でなめらかに接続されることが わかる. 2.8 ノットの変化と曲線の形状 ノットベクトルが等間隔のとき一様といい, 等間隔でないとき非一様という. 一様のときは,図6,図7から分かるようにノ ット点は各制御点を結ぶ線分の中点を通り,制 御点の始点と終点を通らない.興味深いのは非 一様の場合である.この節ではノットベクトル が非一様の場合に,ノットベクトルとB-スプ ライン曲線の形状とにどのような関係があるか を具体的に見ていく. 以下B-スプライン曲線の次数 𝑛𝑛 = 2,制御 点の個数 𝑚𝑚 = 4の場合について考える.この場 合のノット区間は2.6 節でみたように[𝑡𝑡2, 𝑡𝑡3)と [𝑡𝑡3, 𝑡𝑡4)なのでまず𝑡𝑡2, 𝑡𝑡3を変化させて曲線の変化 を考察してみる. ①{0,1,2, a, 4,5,6}で2 < 𝑎𝑎 < 4の場合. 図8で曲線Pのノットベクトルは 𝑎𝑎 = 3の場 合で{0,1,2, 3 ,4,5,6}である.これは一様である. 曲線Qのノットベクトルは𝑎𝑎 = 3.8の場合で {0,1,2, 3.8 ,4,5,6}である. 曲線Rのノットベクトルは𝑎𝑎 = 2.2の場合で {0,1,2, 2.2 ,4,5,6}である. 図8から3番目のノット点は線分 𝑞𝑞1𝑞𝑞2上にあ って 𝑎𝑎 𝑎 2のとき制御点 𝑞𝑞𝑖, 𝑞𝑞1 , 𝑞𝑞2からなるB- ス プ ラ イ ン 曲 線 は 点𝑞𝑞1に 重 複 し , 制 御 点 𝑞𝑞1, 𝑞𝑞2, 𝑞𝑞3に対するB-スプライン曲線は点𝑞𝑞1を 始点とする曲線となることが予想できる. 図8 𝑎𝑎を2と4の間で変化させた場合 また𝑎𝑎 𝑎 3のとき制御点𝑞𝑞1, 𝑞𝑞2, 𝑞𝑞3からなるB- スプライン曲線は点𝑞𝑞2に重複し,制御点 𝑞𝑞𝑖, 𝑞𝑞1 , 𝑞𝑞2に対するB-スプライン曲線は点𝑞𝑞2を終点と

(8)

次に図11の右の三角形に注目し,2番目の ノット区間[𝑡𝑡3, 𝑡𝑡4) = [3,4)を考え基底関数𝑁𝑁12, 𝑁𝑁22,𝑁𝑁32を求める.基底関数を決定するために必 要なノットは,図11の台形を右に1つだけ平 行移動して𝑡𝑡1 から𝑡𝑡6までである. (3)より 0 次の基底関数はノット区間[𝑡𝑡3, 𝑡𝑡4) = [3,4)のみで定値 1 をとり他の区間はすべて 0 で ある.すなわち 𝑁𝑁1 0= 0 , 𝑁𝑁2 0= 0 , 𝑁𝑁3 0= 1 , 𝑁𝑁4 0= 0, 𝑁𝑁5 0= 0 (4)より N11(𝑡𝑡) =𝑡𝑡𝑡𝑡 𝑡 𝑡𝑡1 2𝑡 𝑡𝑡1𝑁𝑁1 0(𝑡𝑡) + 𝑡𝑡3𝑡 𝑡𝑡 𝑡𝑡3𝑡 𝑡𝑡2𝑁𝑁2 0(𝑡𝑡) =𝑡𝑡 𝑡 1 1 𝑡 1 × 0 + 3 𝑡 𝑡𝑡 3 𝑡 1 × 0 = 0 同様にして 𝑁𝑁21(𝑡𝑡) = 4 𝑡 𝑡𝑡 , 𝑁𝑁31(𝑡𝑡) = 𝑡𝑡 𝑡 3 , 𝑁𝑁41(𝑡𝑡) = 0 𝑁𝑁12(𝑡𝑡) =(4 𝑡 𝑡𝑡) 2 3 , 𝑁𝑁22(𝑡𝑡) = 𝑡 53 6 + 17𝑡𝑡 3 𝑡 5𝑡𝑡2 6 𝑁𝑁32(𝑡𝑡) =(𝑡𝑡 𝑡 3) 2 2 以上の基底関数をもとに 制御点を 𝑞𝑞1= (2,4) , 𝑞𝑞2= (5,1) , 𝑞𝑞3= (6,4)とす ると(2)から2次のB-スプライン曲線は次のよ うになる. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 3 𝑖𝑖𝑖1 =(4 𝑡 𝑡𝑡)3 2 𝑞𝑞1+ �𝑡536 +17𝑡𝑡3 𝑡5𝑡𝑡 2 6 � 𝑞𝑞2 +(𝑡𝑡 𝑡 3)2 2 𝑞𝑞3 (3 ≤ 𝑡𝑡 < 4) ⋯ (17) (16),(17)をグラフにすると図12の曲線Lとなる. 曲線Lのノットベクトルは𝑎𝑎 = 1の場合で {0,1, 1 , 3,4,5,6}である.𝑎𝑎 = 1で制御点 𝑞𝑞0, 𝑞𝑞1 , 𝑞𝑞2 からなるB-スプライン曲線の始点は制御点𝑞𝑞0 に一致していることが分かる. 図12 𝑎𝑎 = 1場合 図9と図12から制御点 𝑞𝑞0を始点とし 𝑞𝑞2を終 点とするB-スプライン曲線を作るには {0,1, 𝑎𝑎, 𝑏𝑏, 4,5,6}で𝑎𝑎 𝑎 1 , 𝑏𝑏 𝑎 4 とすれば良いこ とが見えてくる. 次にこのことを確認することにする. ⑤{0,1, 𝑎𝑎, 𝑏𝑏, 4,5,6}で𝑎𝑎 = 1 , 𝑏𝑏 = 4の場合 図13の曲線Mのノットベクトルは𝑎𝑎 = 1, 𝑏𝑏 = 4の場合で{0,1, 1 ,4,4,5,6}である.この場合のB -スプライン曲線は確かに制御点 𝑞𝑞0を始点と し 𝑞𝑞2を終点としていることが分かる.これは 2次のベジェ曲線そのものである. ノットベクトルが{0,1, 1 ,4,4,5,6}のB-スプラ イン曲線は2次のベジェ曲線に一致することを 数式で確認して見る. (1)式から2次のベジェ曲線は 𝑃𝑃(𝑡𝑡) = (1 𝑡 𝑡𝑡)2 𝑞𝑞 0+ 2(1 𝑡 𝑡𝑡) 𝑡𝑡 𝑞𝑞1+ 𝑡𝑡2𝑞𝑞2 (0 ≤ 𝑡𝑡 ≤ 1) ⋯ (18) と表される. 一方Cox-de Boorの再帰公式より求めたB-ス プライン曲線は 𝑀𝑀(𝑠𝑠) = 19 (4 𝑡 𝑠𝑠)2 𝑞𝑞 0+29 (4 𝑡 𝑠𝑠)(𝑡1 + 𝑠𝑠) 𝑞𝑞1 +19 (𝑡1 + 𝑠𝑠)2𝑞𝑞 2(1 ≤ 𝑠𝑠 < 4) ⋯ (19) となる. ここで 𝑡𝑡と 𝑠𝑠の範囲に注意してs = 3t + 1と変 換すると(19)式は(18)式に一致することが示さ れる.よって(19)式は2次のベジェ曲線を表す. ちなみに次のノットベクトルによって表され る曲線はすべて同一の曲線を表し,2次ベジェ 曲線に一致する. {0,1, 1 ,2,2,3,4}, {0,2, 2 ,4,4,5,6}, ⋯ {0, 𝑎𝑎, 𝑎𝑎 , 𝑏𝑏, 𝑏𝑏, b + 1, b + 2} 図13 {0,1, 𝑎𝑎, 𝑏𝑏, 4,5,6}で𝑎𝑎 = 1 , 𝑏𝑏 = 4の場合

(9)

B-スプライン曲線は,ノットベクトルの取 り方次第でベジェ曲線をも含むという点におい ても優れているといえる. 次に図12の曲線Lの終点が制御点𝑞𝑞𝑞𝑞3に一致す る場合を考察することにする. 次数 2,制御点の個数 4の B-スプライン曲 線のノット区間[𝑡𝑡𝑡𝑡2, 𝑡𝑡𝑡𝑡3),[𝑡𝑡𝑡𝑡3, 𝑡𝑡𝑡𝑡4)のうち𝑡𝑡𝑡𝑡2, 𝑡𝑡𝑡𝑡3を変化 させて曲線の変化を考察してきたが,ここで 𝑡𝑡𝑡𝑡2を1,𝑡𝑡𝑡𝑡3を3として𝑡𝑡𝑡𝑡4を変化させてみる. ⑥{0,1,1,3, a, 5,6}で3 < 𝑎𝑎𝑎𝑎 < 5の場合. a → 3の場合は⑤の考察からベジェ曲線に近 づくことが予想できるので,a → 5としてみる. 図14 {0,1, 1,3, a, 5,6}で𝑎𝑎𝑎𝑎 = 4.8の場合 図14の曲線Nのノットベクトルは𝑎𝑎𝑎𝑎 = 4.8の 場合で{0,1, 1 , 3, 4.8 ,5 , 6}である. 予想通りB-スプライン曲線の終点は制御点 𝑞𝑞𝑞𝑞3に近づいていくことが確認される. 最後に𝑎𝑎𝑎𝑎 = 5としてみる. {0,1,1,3, a, 5,6}で𝑎𝑎𝑎𝑎 = 5の場合. 図15の曲線Gのノットベクトルは𝑎𝑎𝑎𝑎 = 5の場 合で{0,1, 1 , 3, 5 ,5 , 6}である. B-スプライン曲線の終点は制御点𝑞𝑞𝑞𝑞3に一致 することが確認される. 図15 {0,1, 1,3, a, 5,6}で 𝑎𝑎𝑎𝑎 = 5 の場合 2.9 ベジェ曲線の問題点の改善 2.2節でベジェ曲線の問題点を2つあげた.こ の節ではこれがどのように改善されているかを 見る. ①制御点の変化に対する曲線への影響 図16に制御点 𝑞𝑞𝑞𝑞0 𝑞𝑞𝑞𝑞0′に変化するとき,制御 点4の3次ベジェ曲線がどのように変化するか を示す.広範囲で曲線全体が変化しているのが 見てとれる. 図16 制御点4の3次のベジェ曲線 図17 制御点4の2次B-スプライン曲線 図17に制御点4の2次B-スプライン曲線が同 じく制御点 𝑞𝑞𝑞𝑞0の変化に対してどのように変化す るかを示す.ノットベクトル{0,1, 1 ,3,5,5,6}に対 して3番目のノット点 𝑡𝑡𝑡𝑡 = 3 からあとの曲線(セ グメント)は全く影響を受けていないことが分 かる. ②制御点の変動に対する曲線の追随 制御点がジグザグに激しく変動する場合の曲 線の変化を比べてみる. 図18に制御点4の3次ベジェ曲線を示す.2.2 節でもみたようにベジェ曲線は制御点の変化に 追随できない.図19に制御点4の2次B-スプラ イン曲線を示す.ベジェ曲線に比べて大幅に改 善されているのが見てとれる. 以上ベジェ曲線の問題点がB-スプライン曲 線によって大幅に改善されていることを示した. 次に図11の右の三角形に注目し,2番目の ノット区間[𝑡𝑡3, 𝑡𝑡4) = [3,4)を考え基底関数𝑁𝑁12, 𝑁𝑁22,𝑁𝑁32を求める.基底関数を決定するために必 要なノットは,図11の台形を右に1つだけ平 行移動して𝑡𝑡1 から𝑡𝑡6までである. (3)より 0 次の基底関数はノット区間[𝑡𝑡3, 𝑡𝑡4) = [3,4)のみで定値 1 をとり他の区間はすべて 0 で ある.すなわち 𝑁𝑁1 0= 0 , 𝑁𝑁2 0= 0 , 𝑁𝑁3 0= 1 , 𝑁𝑁4 0= 0, 𝑁𝑁5 0= 0 (4)より N11(𝑡𝑡) =𝑡𝑡𝑡𝑡 𝑡 𝑡𝑡1 2𝑡 𝑡𝑡1𝑁𝑁1 0(𝑡𝑡) + 𝑡𝑡3𝑡 𝑡𝑡 𝑡𝑡3𝑡 𝑡𝑡2𝑁𝑁2 0(𝑡𝑡) =𝑡𝑡 𝑡 1 1 𝑡 1 × 0 + 3 𝑡 𝑡𝑡 3 𝑡 1 × 0 = 0 同様にして 𝑁𝑁21(𝑡𝑡) = 4 𝑡 𝑡𝑡 , 𝑁𝑁31(𝑡𝑡) = 𝑡𝑡 𝑡 3 , 𝑁𝑁41(𝑡𝑡) = 0 𝑁𝑁12(𝑡𝑡) =(4 𝑡 𝑡𝑡) 2 3 , 𝑁𝑁22(𝑡𝑡) = 𝑡 53 6 + 17𝑡𝑡 3 𝑡 5𝑡𝑡2 6 𝑁𝑁32(𝑡𝑡) =(𝑡𝑡 𝑡 3) 2 2 以上の基底関数をもとに 制御点を 𝑞𝑞1= (2,4) , 𝑞𝑞2= (5,1) , 𝑞𝑞3= (6,4)とす ると(2)から2次のB-スプライン曲線は次のよ うになる. 𝑃𝑃(𝑡𝑡) = � 𝑁𝑁𝑖𝑖2 (𝑡𝑡) 𝑞𝑞𝑖𝑖 3 𝑖𝑖𝑖1 =(4 𝑡 𝑡𝑡)3 2 𝑞𝑞1+ �𝑡536 +17𝑡𝑡3 𝑡5𝑡𝑡 2 6 � 𝑞𝑞2 +(𝑡𝑡 𝑡 3)2 2 𝑞𝑞3 (3 ≤ 𝑡𝑡 < 4) ⋯ (17) (16),(17)をグラフにすると図12の曲線Lとなる. 曲線Lのノットベクトルは𝑎𝑎 = 1の場合で {0,1, 1 , 3,4,5,6}である.𝑎𝑎 = 1で制御点 𝑞𝑞0, 𝑞𝑞1 , 𝑞𝑞2 からなるB-スプライン曲線の始点は制御点𝑞𝑞0 に一致していることが分かる. 図12 𝑎𝑎 = 1場合 図9と図12から制御点 𝑞𝑞0を始点とし 𝑞𝑞2を終 点とするB-スプライン曲線を作るには {0,1, 𝑎𝑎, 𝑏𝑏, 4,5,6}で𝑎𝑎 𝑎 1 , 𝑏𝑏 𝑎 4 とすれば良いこ とが見えてくる. 次にこのことを確認することにする. ⑤{0,1, 𝑎𝑎, 𝑏𝑏, 4,5,6}で𝑎𝑎 = 1 , 𝑏𝑏 = 4の場合 図13の曲線Mのノットベクトルは𝑎𝑎 = 1, 𝑏𝑏 = 4の場合で{0,1, 1 ,4,4,5,6}である.この場合のB -スプライン曲線は確かに制御点 𝑞𝑞0を始点と し 𝑞𝑞2を終点としていることが分かる.これは 2次のベジェ曲線そのものである. ノットベクトルが{0,1, 1 ,4,4,5,6}のB-スプラ イン曲線は2次のベジェ曲線に一致することを 数式で確認して見る. (1)式から2次のベジェ曲線は 𝑃𝑃(𝑡𝑡) = (1 𝑡 𝑡𝑡)2 𝑞𝑞 0+ 2(1 𝑡 𝑡𝑡) 𝑡𝑡 𝑞𝑞1+ 𝑡𝑡2𝑞𝑞2 (0 ≤ 𝑡𝑡 ≤ 1) ⋯ (18) と表される. 一方Cox-de Boorの再帰公式より求めたB-ス プライン曲線は 𝑀𝑀(𝑠𝑠) = 19 (4 𝑡 𝑠𝑠)2 𝑞𝑞 0+29 (4 𝑡 𝑠𝑠)(𝑡1 + 𝑠𝑠) 𝑞𝑞1 +19 (𝑡1 + 𝑠𝑠)2𝑞𝑞 2(1 ≤ 𝑠𝑠 < 4) ⋯ (19) となる. ここで 𝑡𝑡と 𝑠𝑠の範囲に注意してs = 3t + 1と変 換すると(19)式は(18)式に一致することが示さ れる.よって(19)式は2次のベジェ曲線を表す. ちなみに次のノットベクトルによって表され る曲線はすべて同一の曲線を表し,2次ベジェ 曲線に一致する. {0,1, 1 ,2,2,3,4}, {0,2, 2 ,4,4,5,6}, ⋯ {0, 𝑎𝑎, 𝑎𝑎 , 𝑏𝑏, 𝑏𝑏, b + 1, b + 2} 図13 {0,1, 𝑎𝑎, 𝑏𝑏, 4,5,6}で𝑎𝑎 = 1 , 𝑏𝑏 = 4の場合

(10)

図18 制御点4の3次ベジェ曲線 図19 制御点4の2次B-スプライン曲線 3.おわりに ベジェ曲線は幾何学的にもアプローチするこ とができ,比較的容易に理解が可能である.し かしB-スプライン曲線は幾何学的なアプロー チは難しく Cox-de Boorの再帰公式を繰り返し 適用しながら,基底関数を求めていく必要があ る.基底関数を求めるだけでも結構計算が面倒 であるが,そこに制御点が入り,しかもノット ベクトルという非常に便利ではあるが,とっつ きにくいものが混ざって,初学者には大変分か りにくい曲線である.特に基底関数を決定する 再帰公式の扱い,制御点を増やした時の定義域 と基底関数のとり方,ノットベクトルの曲線に 対する影響については,この辺を解説している 参考書は少なく,視覚化するのに大変苦労した. 本論文の主要目的はベジェ曲線の問題点を踏 まえてB-スプライン曲線の成り立ちを分かり やすく視覚化してCAD等に使われる非一様有 理B-スプライン曲線(NURBS)の理解のとっ かかりを掴むことであったが,高専3年次位で 理解できるところまで噛み砕いて解説し視覚化 できたかどうかは疑問が残る.これは今後の課 題としたい. B-スプライン曲線を理解し視覚化する過程 で,2年次の微分積分学で扱う数列の和や漸化 式,3年次の解析学で扱うパラメーター表示の 微分,関数の連続性,2年次の代数幾何学で扱 う分点公式の発展等が必要になることが分かっ た.また途中の計算は非常に煩雑で手計算では 追いつかず,数式処理ソフトが必要不可欠であ る.再帰公式を繰り返して基底関数を求める過 程で適当な言語によるプログラムを利用するの が良いと思われる.将来高専3年生くらいまで の数学と,幾何ソフト,グラフ描画ソフト,数 式処理ソフト等を使ってCGに使われる自由曲 線を材料にして高専の数学を意欲的に学ぶこと ができる教材を作りたい. 最終目的であるNURBS曲線を考察するに当 たっては,有理B-スプライン曲線の理解が必 要になる.これも今後の課題としたい. 本論文のグラフ描写にはフリーソフト GRAPESを使い,計算には数式処理ソフト Mathematica8を使った.また本論文を書くに あたり,最も参考になったのは,ミシガン工科 大学 ,コンピュータサイエンス学部 Dr . C . – K . Shene の講義ノート「Introduction to Computing with Geometry Notes」2)であった. 具体的な計算やノットベクトルの使い方を記述 しているテキストが見当たらない中,この講義 ノートは大変有益であった.氏に心から感謝し たい. 文献 1) 山本 孝司,ベジェ曲線の一考察,サレジオ工業高等 専門学校研究紀要,第37 号,p.17~p.23,(2011) 2) http://www.cs.mtu.edu/~shene/COURSES/cs3621/ NOTES/ ,Last update: May 4, 2011

注記

注1) NURBS曲線とはNon-uniform rational B-spline の略.

2)BはBasisの略である.

注2)凸多角形とは,図形の中の任意の2点を結ぶ線分が,

図 18  制御点4の3次ベジェ曲線  図 19  制御点4の2次B-スプライン曲線  3.おわりに ベジェ曲線は幾何学的にもアプローチするこ とができ,比較的容易に理解が可能である.し かし B-スプライン曲線は幾何学的なアプロー チは難しく   Cox-de Boorの再帰公式を繰り返し 適用しながら,基底関数を求めていく必要があ る.基底関数を求めるだけでも結構計算が面倒 であるが,そこに制御点が入り,しかもノット ベクトルという非常に便利ではあるが,とっつ きにくいものが混ざって,初学者には大変分か

参照

関連したドキュメント

P‐ \ovalbox{\tt\small REJECT}根倍の不定性が生じてしまう.この他対数写像を用いた議論 (Step 1) でも 1のp‐ \ovalbox{\tt\small REJECT}根倍の不定性が

Next we shall prove Lemma 3.. Then G=F' follows from Proposition 1. This completes the proof of Lemma 3. Let us consider the exact sequence.. r\

This work studies the problem of the exact controlability in the boundary of the equation u tt + u xxxx = 0 in a domain with moving boundary.. Key words and phrases: Exact

TC10NM仕様書 NS-9582 Rev.5 Page

いまし *1 加を累ぬる \ovalbox{\tt\small REJECT} よ,乗と号し,減を累ぬる□□ \ovalbox{\tt\small REJECT}

向上を図ることが出来ました。看護職員養成奨学金制度の利用者は、27 年度 2 名、28 年度 1 名、29 年

1年次 2年次 3年次 3年次 4年次. A学部入学

・ 11 日 17:30 , FP ポンプ室にある FP 制御盤の故障表示灯が点灯しているこ とを確認した。 FP 制御盤で故障復帰ボタンを押したところ, DDFP