[ブログに戻る](/ja/blog) # NURBS曲線の作成

Vladimir Savelyev 5月 17, 2018 [\#rendering](/ja/blog/tag/rendering) [\#Example](/ja/blog/tag/example) [\#getting started](/ja/blog/tag/getting-started)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

Teighaを使用すると、Teigha GeライブラリとそのクラスOdGeNurbCurve2dおよびOdGeNurbCurve3dを使用して、非一様有理Bスプライン（NURBS）曲線を作成できます。

曲線の3Dバージョンを考えてみましょう（2D曲線はすべて同じ動作をします）。NURBS曲線は、その次数、重み付き制御点のセット、およびノットベクトルによって定義されます。このデータは、コンストラクタを使用して曲線に設定できます。

```
OdGeNurbCurve3d(
    int degree,
    const OdGeKnotVector& knots,
    const OdGePoint3dArray& controlPoints,
    const OdGeDoubleArray& weights,
    bool isPeriodic = false);

```

しかし、これはNURBSを記述する「コア」となる数学的データであり、必要な形状を作成するために直感的に使用することはできません。もう1つのオプションは、フィットデータを使用してNURBSを作成することです。これは、フィットデータを設定するコンストラクタです。

```
OdGeNurbCurve3d(
    const OdGePoint3dArray& fitPoints,
    const OdGeVector3d& startTangent,
    const OdGeVector3d& endTangent,
    bool startTangentDefined = true,
    bool endTangentDefined = true,
    const OdGeTol& fitTol = OdGeContext::gTol);

```

ここでは、曲線が通過する補間点であるフィットポイントを使用します。これは、フィットポイントが曲線上に存在することを意味します。次の図は、フィットポイントと制御点の違いを示しています。

![image1](/files/inline-images/image002_12.jpg)開始および終了接線は、曲線の端点での接線を定義するベクトルです。対応するフラグを「false」に設定することで、これらを定義することはできません。フィット許容差は、曲線がフィットポイントから逸脱してもよい距離です。デフォルトではゼロであり、曲線はすべてのフィットポイントを正確に通過します。次の図は、これらのパラメータの影響を示しています。

![image2](/files/inline-images/image004_5.jpg)終了接線が定義されていません

![image3](/files/inline-images/image006_2.jpg)終了接線が定義されています

![image4](/files/inline-images/image008_2.jpg)フィット許容差が定義されており、曲線はフィットポイントの「近く」を通過します

また、各フィットポイントで接線を定義するフィットポイントを持つNURBSを作成することもできます。次のコンストラクタを使用します。

```
OdGeNurbCurve3d(
    const OdGePoint3dArray& fitPoints,
    const OdGeVector3dArray& fitTangents,
    const OdGeTol& fitTolerance = OdGeContext::gTol,
    bool isPeriodic = false);

```

曲線が最初に制御点とノットを使用して作成された場合でも、フィットデータを作成して使用できます。関数buildFitDataを使用します。

データベースの目的で、OdDbSplineクラスを使用して3D NURBS曲線を表すこともできます。必要な形状のOdGeNurbCurve3d曲線を作成し、setFromOdGeCurveメソッドを使用してOdDbSplineクラスに設定できます。

## 今すぐ始める

**ODAソフトウェアを60日間無料でお試しください。  
リスクなし、クレジットカード不要。**

[無料で試す](https://www.opendesign.com/ja/free-trial)
