5

私はgluNurbsCurveいくつかのコントロールポイントでいくつかの曲線を描くために使用しています。レッドブックで説明されている基本的なセットアップが正しく機能しているので、それを拡張しようとしています。
このサンプルは次のようになります。

float knots[8] = {0,0,0,0,1,1,1,1};
float pnts[4][3] = { {...},{...},{...},{...} };
GLUnurbsObj *m = gluNewNurbsRenderer();
gluBeginCurve(n);
gluNurbsCurve(n, 8, knots, 3, pnts, 4, GL_MAP1_VERTEX_3)
gluEndCurve(n);

私が疑問に思っていたのは、ノットデータの意味です。結果にどのように影響しますか?そこで実験できる他のオプションは何ですか?
何らかの理由で、これを適切に説明するチュートリアルが見つかりませんでした。

4

2 に答える 2

6

実際、結び目のベクトルを説明するオンラインのサイトはたくさんあります。これはGL固有のものではなく、NURBSの固有のプロパティです。したがって、グーグルで「NURBSノットベクトル」と入力すると、詳細な説明が表示されます。

通常、ノットベクトルの長さはでknot_vector_length = number_of_points + degree_of_curve + 1あり、重要なのは比率であり、絶対値ではありません。だから{0,1,2,3}と同じです {0,2,4,6}

私の意見では、最も重要なノットベクトルは次のとおりです。

1) {0,1,2,3,4,5,6,...}

これにより、最後(または最初)のポイントを繰り返すと、曲率の連続性でカーブを簡単に延長できますdegree_of_curve-1が、これは、カーブが実際には開始ポイントと終了ポイントを通過しないため、最後(または最初)を繰り返す必要があることを意味します。degree_of_curve-1連続する閉曲線を作成するためのポイント。

他の重要な形式は

2) {0,0,0,1,2,3,...,n,n,n}

一方、0最初とn最後は繰り返しdegree_of_curve + 1ます。これはあなたが使用したフォームでもあります。これにより、最初のポイントで始まり、指定した最後のポイントで終わるNURBSカーブが得られます。しかし、それは位置の連続性を与えるだけです。したがって、これを使用して閉曲線を作成すると、接線方向の不連続性が発生する可能性が高くなります。

ところで。ポイントのみがdegree_of_curve + 1あり、2番目の形式を使用する場合は、0sと1sのみがあります。結果のスプラインは、ベジェ曲線と同じになります。

これは、画像や数学的背景なしで説明するのは本当に難しいです(バーンスタイン多項式)

于 2011-06-04T15:51:35.043 に答える
0
A knot vector is the curve parameter at which the continuity changes. Try to 

「ベジェ」曲線がどのように記述されているかを理解します。次数がnum_control_points-1である曲線を作成します。したがって、4つの制御点を持つベジェ曲線の場合。次数3(次数= 4)の曲線が得られます。したがって、この曲線のどこにでも。連続性はC2になります。これは、曲率の連続性があることを意味します。この曲線のノットベクトルは(0、0、0、0、1、1、1、1)になります。これは、上記のコードスニペットからのものです。ノットベクトルと曲線の制御点を指定しました。

したがって、パラメータ0でそれを知ることができます。C0の連続性があります。パラメータ1でも同じです。パラメータのノット値が多くなります。これは、そのパラメーターでの連続性が低下していることを意味します。私が言っていることをあなたが理解してくれることを願っています。曲線の次数が3であるため、連続性は(C3-> C2-> C1-> C0)から低下します。これが(0-> 0-> 0-> 0)の略です。

私はまだ研究中です(:Pを研究しています)。均一なノットベクトルの場合、曲線は途中でどのように始まるかを調べています。今のところ、ノットベクトルが(0、1、2、3..7)の場合を想定します。これは、パラメータ0〜1の間に1つの曲線があることを示しています。1〜2の間に別のものがあります。つまり、基本的に曲線全体を7つに分割しました(もちろん、程度はあなたによって異なります)。これを次数3の曲線とすると、それぞれ次数3の7つの異なる曲線があることを意味します。

あなたが私が言ったことに従ったことを望みます。ステップ1として、ノットベクトルの意味を理解しようとします。ステップ2は、これらがCox De-Boor再帰方程式(少し複雑になります)でどのように使用されるかを示します。最後に、重みの意味がわかります。これが、頭字語NURBS(Non Uniform Rationalized Bスプライン)の「R」の理由です。提供したスニペットは、UniformBスプライン曲線用です。つまり、基本的に、NURBSは可能な曲線の集合体にすぎません。:)

于 2014-03-20T14:44:09.280 に答える