NURBS曲線の作成

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

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

image2

終了接線が定義されていません

image3

終了接線が定義されています

image4

フィット許容差が定義されており、曲線はフィットポイントの「近く」を通過します

また、各フィットポイントで接線を定義するフィットポイントを持つ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日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す