De Casteljauのアルゴリズムのt
おかげで、ベジエ曲線をいくつかのパラメーターで2つの部分に分割することは簡単です。
NURBSカーブに同様のアルゴリズムはありますか?NURBSカーブを分割する方法は?
De Casteljauのアルゴリズムのt
おかげで、ベジエ曲線をいくつかのパラメーターで2つの部分に分割することは簡単です。
NURBSカーブに同様のアルゴリズムはありますか?NURBSカーブを分割する方法は?
回答:
NURBSカーブが通常任意の点で分割される方法は、ノット挿入です。多重度が最大になるまで分割点にノットを挿入します。最大多重度になると、2つの分割曲線を読み取ることができます。
ただし、任意のポイントで分割したくない場合があります。最終的な目標が曲線などを描くことである場合、新しいものを挿入するよりも、既存のノットポイントで曲線を分割する(つまり、すべてのノットが最大の多重度になるまでノット挿入を実行する)価値があります。
このプロセスは、NURBSを均一な有理Bスプラインに分割します。それができたら、de Boorのアルゴリズムを使用してさらに分割できます。
ノットベクトルのノット数は次のとおりです。
numKnots = degreeOfCurve + numControlPoints + 1
またはご希望の場合:
numKnots = orderOfCurve + numControlPoints
したがって、ノットを挿入すると、制御点の数が1つ増えます。
NURBSカーブに沿って移動すると、各ノットは1つのコントロールポイントが「ドロップアウト」し、別のコントロールポイントが「入る」場所を表します。ノット値が繰り返される場合、これは複数の制御点がこの場所で置き換えられることを意味します。
次数が1より大きいカーブの場合、1つの単純な理由で、最後のノットと複数のノットが複数回繰り返されます。開始するには複数のポイントを取り込む必要があり、終了するには複数のポイントを排出する必要があります。
簡単にするために、ここでは3次曲線について考えてみましょう。
ノットベクトルが[0,0,1,1]の曲線は、均一なBスプライン曲線です。
ノットベクトル[0,0,1,1,2,2]を持つ曲線は不均一ですが、t = 1で接続する2つの均一なBスプライン曲線と考えることができ、1つは[0,0 、1,1]および[1,1,2,2]に対応するもの。ノットの多様性は3次曲線を「開始」および「終了」するのに十分であるため、これを行うことができます。
[0,0,1,2,2]のようなノットベクトルを持つカーブに直面している場合、カーブの形状を変更せずに1にノットを挿入できます(これはノット挿入手順です)。これにより、制御点の数が1つ増えます。ノット挿入手順は、新しいノットの周囲のポイントを調整して、それに対応します。しかし、これを実行すると、2つの均一なBスプライン曲線ができます。
ノットを挿入しても、同じ場所に挿入するノットが多すぎない限り、制御点が重なることはありません。「多すぎる」とは、カーブの次数を意味します。したがって、不均一な3次曲線の場合は、ノットを挿入してすべてのノットが多重度2になるようにします。これにより、隣接する多数の均一な3次曲線が得られ、de Boorのアルゴリズムを使用してさらに分割できます。