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スプライン曲線