Computer-graphics-curves

提供:Dev Guides
移動先:案内検索

コンピュータグラフィックス曲線

コンピューターグラフィックスでは、多くの場合、さまざまな種類のオブジェクトを画面に描画する必要があります。 オブジェクトは常に平らではないため、オブジェクトを描くには何度も曲線を描く必要があります。

曲線の種類

曲線は、無限に大きいポイントのセットです。 各ポイントには、エンドポイントを除く2つのネイバーがあります。 曲線は、*明示的、暗黙的、*および*パラメトリック曲線*の3つのカテゴリに大きく分類できます。

暗黙の曲線

暗黙的な曲線表現は、曲線上の点があるかどうかをテストできる手順を使用することにより、曲線上の点のセットを定義します。 通常、暗黙的な曲線は、次の形式の暗黙的な関数によって定義されます-

f(x、y)= 0

多値曲線(x値に対して複数のy値)を表すことができます。 一般的な例は円で、その暗黙的な表現は

*x ^ 2 ^ + y ^ 2 ^-R ^ 2 ^ = 0*

明示的な曲線

数学関数y = f(x)は、曲線としてプロットできます。 このような関数は、曲線の明示的な表現です。 明示的な表現は、垂直線を表現できず、単一値でもあるため、一般的ではありません。 xの各値について、通常、yの単一の値のみが関数によって計算されます。

パラメトリック曲線

パラメトリック形式の曲線は、パラメトリック曲線と呼ばれます。 明示的および暗黙的な曲線表現は、関数が既知の場合にのみ使用できます。 実際には、パラメトリック曲線が使用されます。 二次元パラメトリック曲線は次の形式を持っています-

P(t)= f(t)、g(t)またはP(t)= x(t)、y(t)

関数fとgは、曲線上の任意の点の(x、y)座標になり、パラメーターtが特定の間隔[a、b]、通常[0、1]で変化したときに点が取得されます。

ベジェ曲線

ベジェ曲線は、フランス人エンジニア* PierreBézier*によって発見されました。 これらの曲線は、他のポイントの制御下で生成できます。 制御点を使用した近似接線は、曲線の生成に使用されます。 ベジェ曲線は、数学的に次のように表すことができます-

\ sum _ \ {k = 0} ^ \ {n} P _ \ {i} \ {B _ \ {i} ^ \ {n}}(t)

ここで、$ p _ \ {i} $は点の集合であり、$ \ {B _ \ {i} ^ \ {n}}(t)$は次の式で与えられるバーンスタイン多項式を表します-

\ {B _ \ {i} ^ \ {n}}(t)= \ binom \ {n} \ {i}(1-t)^ \ {n-i} t ^ \ {i}

ここで、 n は多項式の次数、 i はインデックス、 t は変数です。

最も単純なベジェ曲線は、点$ P _ \ {0} $から$ P _ \ {1} $までの直線です。 二次ベジェ曲線は、3つの制御点によって決定されます。 3次ベジェ曲線は、4つの制御点によって決定されます。

ベジエ曲線

ベジェ曲線のプロパティ

ベジェ曲線には次の特性があります-

  • これらは通常、制御点を結合するセグメントで構成される制御ポリゴンの形状に従います。
  • それらは常に最初と最後の制御点を通過します。
  • それらは、それらを定義する制御点の凸包に含まれています。
  • 曲線セグメントを定義する多項式の次数は、定義するポリゴンポイントの数よりも1つ少なくなります。 したがって、4つの制御点の場合、多項式の次数は3です。 3次多項式。
  • ベジェ曲線は、通常、定義するポリゴンの形状に従います。
  • 終点での接線ベクトルの方向は、最初と最後のセグメントによって決定されるベクトルの方向と同じです。
  • ベジェ曲線の凸包特性により、多項式が制御点にスムーズに追従することが保証されます。
  • 制御ポリゴンと交差するよりも多くの直線がベジェ曲線と交差することはありません。
  • アフィン変換では不変です。
  • ベジェ曲線はグローバルな制御を示すため、制御点を移動すると曲線全体の形状が変化します。
  • 与えられたベジェ曲線は、ポイントt = t0で、パラメータ値t = t0に対応するポイントで結合する2つのベジェセグメントに分割できます。

B-スプライン曲線

バーンスタイン基底関数によって生成されるベジェ曲線は、柔軟性が制限されています。

  • まず、指定された多角形の頂点の数により、曲線を定義する結果の多項式の順序が固定されます。
  • 2番目の制限特性は、曲線全体のすべてのパラメーター値について、ブレンド関数の値がゼロ以外であることです。

Bスプライン基底には、特殊なケースとしてバーンスタイン基底が含まれています。 Bスプライン基底は非グローバルです。

Bスプライン曲線は、制御点PiとBスプライン基底関数$ N _ \ {i、} $ k(t)の線形結合として定義されます。

$ C(t)= \ sum _ \ {i = 0} ^ \ {n} P _ \ {i} N _ \ {i、k}(t)、$ $ n \ geq k-1、$ $ t \:\イプシロン\:[tk-1、tn + 1] $

どこで、

  • \ {$ p _ \ {i} $:i = 0、1、2….n}は制御点です
  • kは、Bスプライン曲線の多項式セグメントの次数です。 次数kは、曲線が次数k-1の区分的多項式セグメントで構成されることを意味します
  • $ N _ \ {i、k}(t)$は「正規化されたBスプラインブレンド関数」です。 それらは、kの順序と、通常「ノットシーケンス」と呼ばれる非減少の実数のシーケンスによって記述されます。

\ {t _ \ {i}:i = 0、... n + K}

N〜i〜、k関数は次のように説明されています-

N _ \ {i、1}(t)= \ left \\ {\ begin \ {matrix} 1、&if \:u \:\ epsilon \:[t _ \ {i、} t _ \ {i + 1 })\\ 0、&それ以外の場合\ end \ {matrix} \ right。

k> 1の場合

N _ \ {i、k}(t)= \ frac \ {t-t _ \ {i}} \ {t _ \ {i + k-1}} N _ \ {i、k-1}(t)+ \ frac \ {t _ \ {i + k} -t} \ {t _ \ {i + k}-t _ \ {i + 1}} N _ \ {i + 1、k-1}(t)

and

t \:\ epsilon \:[t _ \ {k-1}、t _ \ {n + 1})

B-スプライン曲線の特性

B-スプライン曲線には次の特性があります-

  • パラメーター値のBスプライン基底関数の合計は1です。
  • 各基底関数は、すべてのパラメーター値に対して正またはゼロです。
  • 各基底関数には、k = 1を除き、正確に1つの最大値があります。
  • 曲線の最大次数は、定義するポリゴンの頂点の数に等しくなります。
  • Bスプライン多項式の次数は、定義するポリゴンの頂点の数に依存しません。
  • Bスプラインでは、各頂点が関連する基底関数がゼロ以外のパラメーター値の範囲でのみ曲線の形状に影響を与えるため、曲線サーフェスをローカルで制御できます。
  • 曲線は、変動を小さくする特性を示します。
  • 曲線は、通常、定義するポリゴンの形状に従います。
  • アフィン変換は、定義するポリゴンの頂点に適用することにより、曲線に適用できます。
  • 定義ポリゴンの凸包内の曲線。