ベジェ曲線
ベジェ曲線︵ベジェきょくせん、Bézier Curve︶またはベジエ曲線とは、N 個の制御点から得られる N− 1 次曲線である。フランスの自動車メーカー、シトロエン社のド・カステリョ とルノー社のピエール・ベジェにより独立に考案された。ド・カステリョの方が先んじていたが、その論文が公知とならなかったためベジェの名が冠されている[1]。コンピューター上で滑らかな曲線を描くのに2次ベジェ曲線 (Quadratic Bézier curve) や3次ベジェ曲線 (Cubic Bézier curve) などが広く利用されている。
原語︵フランス語︶における Bézier の発音はベズィエに近く、﹁ベジェ曲線﹂より﹁ベジエ曲線﹂の方がこれに忠実と言えるが、いずれの呼称も用いられている。
応用
編集
コンピュータ上で滑らかな曲線を書く場合にベジェ曲線はよく利用されており、ベクターグラフィクスなどのコマンドにも用意されていることが多い。
特に、2次だけでなく、3次ベジェ曲線までサポートされていることが多い。これは、始点と第1制御点を結ぶ線分が始点における曲線の接線になり、第2制御点と終点を結ぶ線分が終点における曲線の接線になるため、直感的に理解しやすいことにある。また、始点と第1制御点の距離によって始点付近の曲率が制御できるため、作図を行うソフトウェア︵ドローソフト︶で手作業により曲線を描く際に線の形を整えやすい。
PostScriptやそのフォント (Type1フォント)、SVGやHTML5のcanvasで3次ベジェ曲線を使うことができる。Adobe Flash Playerも11.0以降では使える。Microsoft WindowsのGDI/GDI+、Direct2D、.NET Frameworkの
System.Drawing.
Drawing2D.GraphicsPath
、WPFのSyste
m.Windows.Media.BezierSegment
では3次ベジェをサポートする[2][3][4][5][6]。
一部は2次ベジェ曲線までのサポートである。Adobe Flash Playerは10.3までは2次までである。
AWT︵Java 1.2以降で追加されたQuadCurve2D
, CubicCurve2D
の派生クラス︶、SkiaのSkPath
およびAndroidのandroid.graphics.Path
は2次と3次のベジェ両方を直接サポートする[7][8][9]。
定義
編集
制御点を B0, B1, ..., BN−1 とすると、ベジェ曲線は、
と表現される。ここで、Jn, i(t) はバーンスタイン基底関数である。
t が 0 から1まで変化する時、B0 と BN−1 を両端とするベジェ曲線が得られる。一般には両端以外の制御点は通らない。
ベジェ曲面︵曲面パッチなどとも︶と呼ばれるような、3次元空間内の曲面への拡張にはいくつか手法がある。たとえば、目的の曲面においてパッチの端点となる3点とその3点における接平面を指定するという方法や、4点を指定し2方向のクロスハッチングのようにして面を構成するという方法がある。
作図法
編集脚注
編集- ^ 鳥谷浩志; 千代倉弘明 (1991). 3次元CADの基礎と応用. 共立出版. ISBN 9784320025394
- ^ Line and Curve Functions - Windows applications | Microsoft Docs
- ^ ID2D1GeometrySink::AddBezier(const D2D1_BEZIER_SEGMENT) (d2d1.h) | Microsoft Docs
- ^ D2D1_BEZIER_SEGMENT (d2d1.h) | Microsoft Docs
- ^ GraphicsPath.AddBezier Method (System.Drawing.Drawing2D) | Microsoft Docs
- ^ BezierSegment Class (System.Windows.Media) | Microsoft Docs
- ^ Geometric Primitives (The Java™ Tutorials > 2D Graphics > Overview of the Java 2D API Concepts)
- ^ skia/SkPath.h at master · google/skia
- ^ Path | Android Developers