曲線の描画方法


1.曲線の描画方法

 曲線を表現する場合、折れ線データとしてデータを持つと、拡大した場合に

きれいに表示されません。また、拡大した場合にもきれいに表示できるように

精度を上げると、データ量が膨大になってしまいます。そこで、制御点という

代表点の座標値をもとにして、曲線を表示する式が使われます。

 なめらかな曲線を描画するための代表的な式の例としては、ベジェ曲線や

Bスプライン曲線などがあります。

 

 また、曲線を表す多項式には、いろいろな次数の多項式が考えられます。

 コンピュータグラフックの世界では、接線方向と、曲率が、連続していると

きれいに表示できるため、3次の多項式を使うのが一般的です。

 そこで、本ページでは、3次の多項式に限って解説することにします。

 

 また、これらの曲線の指定方法にも、いろいろな方法があります。

 曲線の式の種類と曲線の指定方法は、違いますので、区別しましょう。

 通過点から、曲線の式をを導き出すためには、指定された条件を元にして

掃き出し法を使って、連立方程式を解く必要があります。

 

・曲線の式の種類の例

  ベジェ曲線

  Bスプライン曲線

 

・曲線の位置の指定方法の例

  端点と通過点で指定する方法

  端点と制御点で指定する方法

 

・曲線の端点の状態の指定方法の例

  何も指定しない方法(接線ベクトル=0)

  接線ベクトルを指定する方法(方向と大きさを指定)

  接線方向と、曲率を指定する方法

  閉曲線指定をする方法

 

 

2.曲線の描画サンプル

 

 曲線の描画サンプルとして、3次のベジェ曲線と3次のBスプライン曲線を

描いて見ます。

 ベジェ曲線は、端点と接線ベクトルを指定する方法を採用し、Bスプライン

曲線は、通過点を指定する方法を採用することで、それぞれのメリットを生か

して使うことができます。

 

3次のベジェ曲線

 使用例:  PhotoShop、Illustrator

 指定方法: 端点と、端点の接線ベクトルを指定(制御点)

 特徴:   細かい指定が可能

       連続した曲線を描くのは大変

 

3次のBスプライン曲線

 使用例:  CADソフト、各種シミュレーション

 指定方法: 通過点を複数個指定

 特徴:   連続した曲線が簡単に描ける

       指定した点を通る曲線が簡単に描ける

 

 Bスプライン曲線には、ノットベクトルの間隔が等間隔かどうかによって、

ユニフォームなBスプライン曲線と、ノンユニフォームなBスプライン曲線に

分かれます。

 曲線を指定するための座標値の間隔が大きく異なる場合は、ユニフォームな

Bスプライン曲線の方がきれいに描画することができます。

 しかし、ノンユニフォームなBスプライン曲線は、NURBSとも言って、

IGESなどのCADのデータ変換用フォーマットなどで採用されています。

 

 それから、PhotoShopがほんとうにベジェ曲線の式を採用している

かどうかは、不明です。実際に描いてみて、比較するしかありません。

 

3.各曲線の式

3.1.ベジェ曲線

 ベジェ曲線には、n次のベジェ曲線が存在しますが、PhotoShopやIllustrattorなどで、一般的に利用されているのは、3次のベジェ曲線です。3次のベジェ曲線とは、2個の端点と2つの制御点をひとつの媒介変数(パラメータ)を使用した方程式で表現される曲線です。

 ベジェ曲線を描く場合、始点と終点と、各点の接線方向と曲率を視覚的に設定することができます。そのため、接線方向を合わせることにより、複数のベジェ曲線をなめらかに接続することもできます。

 

 3次のベジェ曲線は、4つの制御点をそれぞれP0,P1,P2,P3とすると、

と表すことができます。

 tは、媒介変数または、パラメータと言ってベクトルの始点から終点に向かって増加します。

 つまり、線分をこのパラメータで表すと、1次元の式になるわけです。

 Pは、端点(アンカーポイント)と制御点ですから、指定された点のx座標とy座標を代入するだけでOKです。

 ですから、あとは、FORループで、パラメータを0から1まで少しずつ変化させていけば、直線だろうが曲線だろうが簡単に描けるわけです。

 

3.2.Bスプライン曲線