ベジェ曲線 ( ベジェきょくせん 、( 英 : Bézier curve )は N+1 個の制御点から得られる N 次曲線 である。ベジエ曲線 とも。
以下の要素を所与とする:
次数:
N
∈
N
{\displaystyle N\in {\mathbb {N}}}
パラメータ:
t
∈
R
,
0
≤
t
≤
1
{\displaystyle t\in {\mathbb {R}},\ 0\leq t\leq 1}
制御点:
N
+
1
{\displaystyle N+1}
個のベクトル
{
B
i
|
i
∈
{
0
,
1
,
.
.
.
,
N
}
}
{\displaystyle \{\mathbf {B} _{i}\ |\ i\in \{0,1,...,N\}\}}
これらを用いて
N
{\displaystyle N}
次ベジェ曲線
P
(
t
)
{\displaystyle \mathbf {P} (t)}
は複数の表現により定義される。以下はその一例である。
バーンスタイン基底関数
J
N
,
j
(
t
)
{\displaystyle J_{N,j}(t)}
を用いて、
N
{\displaystyle N}
次ベジェ曲線は以下のように定義される[ 1] :
P
(
t
)
=
∑
i
=
0
N
B
i
J
N
,
i
(
t
)
=
∑
i
=
0
N
B
i
(
N
i
)
t
i
(
1
−
t
)
N
−
i
{\displaystyle \mathbf {P} (t)=\sum _{i=0}^{N}\mathbf {B} _{i}J_{N,i}(t)=\sum _{i=0}^{N}\mathbf {B} _{i}{N \choose i}t^{i}(1-t)^{N-i}}
この形式でのベジェ曲線の定義は「ベジェ曲線のバーンスタイン表現」とも呼ばれる[ 2] [ 3] 。
ベクトル
B
i
r
(
t
)
{\displaystyle \mathbf {B} _{i}^{r}(t)}
に関する漸化式 を以下のように定義する:
B
i
r
(
t
)
=
{
B
i
(
t
)
,
r
=
0
,
i
∈
{
0
,
1
,
.
.
.
,
N
}
(
1
−
t
)
B
i
r
−
1
(
t
)
+
t
B
i
+
1
r
−
1
(
t
)
,
r
∈
{
1
,
.
.
.
,
N
}
,
i
∈
{
0
,
1
,
.
.
.
,
N
−
r
}
{\displaystyle \mathbf {B} _{i}^{r}(t)={\begin{cases}\mathbf {B} _{i}(t),&r=0,&i\in \{0,1,...,N\}\\(1-t)\mathbf {B} _{i}^{r-1}(t)+t\mathbf {B} _{i+1}^{r-1}(t),&r\in \{1,...,N\},&i\in \{0,1,...,N-r\}\\\end{cases}}}
この漸化式を用い
N
{\displaystyle N}
次ベジェ曲線は
P
(
t
)
=
B
0
N
(
t
)
{\displaystyle \mathbf {P} (t)=\mathbf {B} _{0}^{N}(t)}
で定義される[ 4] 。
このアルゴリズムはド・カステリョのアルゴリズム (英語版 ) (英 : De Casteljau's algorithm )と呼ばれる。
ベジェ曲線は、シルベスターやケイリーの方法により、陰関数(陰伏方程式)
F
(
x
,
y
)
=
0
{\displaystyle F(x,y)=0}
で表現できる[ 5] 。
N 次ベジェ曲線の始点は端の制御点
B
0
{\displaystyle \mathbf {B} _{0}}
と、終点はもう一方の端の制御点
B
N
{\displaystyle \mathbf {B} _{N}}
と一致する。
バーンスタイン基底関数 は
J
N
,
i
(
0
)
=
δ
i
,
0
{\displaystyle J_{N,i}(0)=\delta _{i,0}}
,
J
N
,
i
(
1
)
=
δ
i
,
N
{\displaystyle J_{N,i}(1)=\delta _{i,N}}
である(⇒バーンスタイン多項式#バーンスタイン基底関数の特性 )。よってベジェ曲線を構成する殆どの項は端点において 0 となり
P
(
0
)
=
B
0
1
{\displaystyle \mathbf {P} (0)=\mathbf {B} _{0}1}
,
P
(
1
)
=
B
N
1
{\displaystyle \mathbf {P} (1)=\mathbf {B} _{N}1}
となる。つまり始点
P
(
0
)
{\displaystyle \mathbf {P} (0)}
が
B
0
{\displaystyle \mathbf {B} _{0}}
と、終点
P
(
1
)
{\displaystyle \mathbf {P} (1)}
が
B
N
{\displaystyle \mathbf {B} _{N}}
と一致する。
10次のバーンスタイン基底関数。0≦t≦1
ベジェ曲線は制御点座標の加重平均 と見做せる。
バーンスタイン基底関数は常に和が1であり(⇒バーンスタイン多項式#1の分割 )[ 6] 、かつ
0
≤
t
≤
1
{\displaystyle 0\leq t\leq 1}
において非負である(⇒バーンスタイン多項式#区間非負 )。よってベジェ曲線上の点 P (t =T ) は各制御点 B i が J n , i (T ) で重みづけされた加重平均と見做せる[ 7] [ 6] 。この意味で各バーンスタイン基底関数は混合比とも呼ばれる[ 6] 。
ベジェ曲線の端点を除いた領域は、その座標が全ての制御点の座標から影響を受ける。
ベジェ曲線は制御点座標の加重平均であり(⇒#制御点の加重平均 )、その重みであるバーンスタイン基底関数は
0
<
t
<
1
{\displaystyle 0<t<1}
において常に正である(⇒バーンスタイン多項式#区間正値 )。よって端点以外では全制御点の座標が大なり小なり曲線の各点へ反映されている。端点は例外であり、単一制御点の座標のみで決定される。
ベジェ曲線は一般には両端以外の制御点は通らない。
ベジェ曲線の制御点の加重平均 特性により、制御点を必ず通る t = T が存在するなら J n , i (T ) が i = I で 1、他で 0 になる点があるはずである。図からわかるように、これは t = 0 or 1 のみに限られる。よって一般にはベジェ曲線は両端以外の制御点を通らない。制御点の座標によっては加重平均がたまたまある制御点と一致する場合がありうるので、制御点を通るのが常に両端のみ、というわけではない。
ベジェ曲線は制御点の数に基づいて分類される。以下はその一例である。
2次ベジェ曲線 (英語版 ) ( にじベジェきょくせん 、( 英 : quadratic Bézier curve )は3つの制御点で構成されるベジェ曲線である。
2次ベジェ曲線は次の式で定義される[ 8] :
P
(
t
)
=
∑
i
=
0
2
B
i
J
2
,
i
(
t
)
=
(
1
−
t
)
2
B
0
+
2
t
(
1
−
t
)
B
1
+
t
2
B
2
=
(
B
0
−
2
B
1
+
B
2
)
t
2
+
(
−
2
B
0
+
2
B
1
)
t
+
B
0
{\displaystyle {\begin{aligned}\mathbf {P} (t)&=\sum _{i=0}^{2}\mathbf {B} _{i}J_{2,i}(t)\\&=(1-t)^{2}\mathbf {B} _{0}+2t(1-t)\mathbf {B} _{1}+t^{2}\mathbf {B} _{2}\\&=(\mathbf {B} _{0}-2\mathbf {B} _{1}+\mathbf {B} _{2})t^{2}+(-2\mathbf {B} _{0}+2\mathbf {B} _{1})t+\mathbf {B} _{0}\\\end{aligned}}}
上式よりベジェ曲線の性質を満たすことが容易に確認できる。t の次数より2次ベジェ曲線は高々 2次の曲線であると確認でき、代入によりP (0) = B 0 と P (1) = B 2 で両端制御点の通過が確認できる。
P
(
t
)
=
[
t
2
t
1
]
[
1
−
2
1
−
2
2
0
1
0
0
]
[
B
0
B
1
B
2
]
{\displaystyle \mathbf {P} (t)={\begin{bmatrix}t^{2}&t&1\end{bmatrix}}{\begin{bmatrix}1&-2&1\\-2&2&0\\1&0&0\end{bmatrix}}{\begin{bmatrix}\mathbf {B} _{0}\\\mathbf {B} _{1}\\\mathbf {B} _{2}\end{bmatrix}}}
x
=
a
0
t
2
+
a
1
t
+
a
2
y
=
b
0
t
2
+
b
1
t
+
b
2
{\displaystyle {\begin{array}{l}x=a_{0}t^{2}+a_{1}t+a_{2}\\y=b_{0}t^{2}+b_{1}t+b_{2}\end{array}}}
とすると、
F
(
x
,
y
)
=
a
2
2
b
0
2
−
a
1
a
2
b
0
b
1
+
a
0
a
2
b
1
2
+
a
1
2
b
0
b
2
−
2
a
0
a
2
b
0
b
2
−
a
0
a
1
b
1
b
2
+
a
0
2
b
2
2
{\displaystyle F(x,y)=a_{2}^{2}b_{0}^{2}-a_{1}a_{2}b_{0}b_{1}+a_{0}a_{2}b_{1}^{2}+a_{1}^{2}b_{0}b_{2}-2a_{0}a_{2}b_{0}b_{2}-a_{0}a_{1}b_{1}b_{2}+a_{0}^{2}b_{2}^{2}}
+
(
−
2
a
2
b
0
2
+
a
1
b
0
b
1
−
a
0
b
1
2
+
2
a
0
b
0
b
2
)
x
+
(
−
a
1
2
b
0
+
2
a
0
a
2
b
0
+
a
0
a
1
b
1
−
2
a
0
2
b
2
)
y
{\displaystyle \qquad \qquad +(-2a_{2}b_{0}^{2}+a_{1}b_{0}b_{1}-a_{0}b_{1}^{2}+2a_{0}b_{0}b_{2})x+(-a_{1}^{2}b_{0}+2a_{0}a_{2}b_{0}+a_{0}a_{1}b_{1}-2a_{0}^{2}b_{2})y}
+
b
0
2
x
2
−
2
a
0
b
0
x
y
+
a
0
2
y
2
=
0
{\displaystyle \qquad \qquad +b_{0}^{2}x^{2}-2a_{0}b_{0}xy+a_{0}^{2}y^{2}\qquad =0}
となる。
曲線の始点と終点および原点で囲まれた領域の面積はガウスグリーンの定理[ 9] で求めることができる。
S
=
1
6
[
B
0
x
B
1
x
B
2
x
]
[
0
2
1
−
2
0
2
−
1
−
2
0
]
[
B
0
y
B
1
y
B
2
y
]
{\displaystyle S={\frac {1}{6}}{\begin{bmatrix}{B_{0}}_{x}&{B_{1}}_{x}&{B_{2}}_{x}\end{bmatrix}}{\begin{bmatrix}0&2&1\\-2&0&2\\-1&-2&0\end{bmatrix}}{\begin{bmatrix}{B_{0}}_{y}\\{B_{1}}_{y}\\{B_{2}}_{y}\end{bmatrix}}}
ド・カステリョのアルゴリズムを用いて任意の
t
{\displaystyle t}
で分割することができる。分割後の2曲線の制御点は
[
B
0
0
(
t
)
B
0
1
(
t
)
B
0
2
(
t
)
]
{\displaystyle {\begin{bmatrix}\mathbf {B} _{0}^{0}(t)&\mathbf {B} _{0}^{1}(t)&\mathbf {B} _{0}^{2}(t)\end{bmatrix}}}
と
[
B
0
2
(
t
)
B
1
1
(
t
)
B
2
0
(
t
)
]
{\displaystyle {\begin{bmatrix}\mathbf {B} _{0}^{2}(t)&\mathbf {B} _{1}^{1}(t)&\mathbf {B} _{2}^{0}(t)\end{bmatrix}}}
である。
2次ベジェ曲線と等価な3次ベジェ曲線の制御点は
[
B
0
B
0
+
2
B
1
3
2
B
1
+
B
2
3
B
2
]
{\displaystyle {\begin{bmatrix}\mathbf {B} _{0}&{\frac {\mathbf {B} _{0}+2\mathbf {B} _{1}}{3}}&{\frac {2\mathbf {B} _{1}+\mathbf {B} _{2}}{3}}&\mathbf {B} _{2}\end{bmatrix}}}
である。
3次ベジェ曲線 (英語版 ) ( さんじベジェきょくせん 、( 英 : cubic Bézier curve )は4つの制御点で構成されるベジェ曲線である[ 12] 。
3次ベジェ曲線は次の式で定義される:
P
(
t
)
=
∑
i
=
0
3
B
i
J
3
,
i
(
t
)
=
(
1
−
t
)
3
B
0
+
3
t
(
1
−
t
)
2
B
1
+
3
t
2
(
1
−
t
)
B
2
+
t
3
B
3
=
(
−
B
0
+
3
B
1
−
3
B
2
+
B
3
)
t
3
+
(
3
B
0
−
6
B
1
+
3
B
2
)
t
2
+
(
−
3
B
0
+
3
B
1
)
t
+
B
0
{\displaystyle {\begin{aligned}\mathbf {P} (t)&=\sum _{i=0}^{3}\mathbf {B} _{i}J_{3,i}(t)\\&=(1-t)^{3}\mathbf {B} _{0}+3t(1-t)^{2}\mathbf {B} _{1}+3t^{2}(1-t)\mathbf {B} _{2}+t^{3}\mathbf {B} _{3}\\&=(-\mathbf {B} _{0}+3\mathbf {B} _{1}-3\mathbf {B} _{2}+\mathbf {B} _{3})t^{3}+(3\mathbf {B} _{0}-6\mathbf {B} _{1}+3\mathbf {B} _{2})t^{2}+(-3\mathbf {B} _{0}+3\mathbf {B} _{1})t+\mathbf {B} _{0}\\\end{aligned}}}
上式よりベジェ曲線の性質を満たすことが容易に確認できる。t の次数より3次ベジェ曲線は高々 3次の曲線であると確認でき、代入による P (0) = B 0 と P (1) = B 3 で両端制御点の通過が確認できる。
P (t ) を t で1階微分し端の制御点を代入することで、端点での接線ベクトルが求まる。これにより、
d
P
(
t
)
d
t
=
∑
i
=
0
3
B
i
J
3
,
i
(
t
)
=
−
3
(
1
−
t
)
2
B
0
+
(
9
t
2
−
12
t
+
3
)
B
1
+
(
−
9
t
2
+
6
t
)
B
2
+
3
t
2
B
3
=
3
(
−
B
0
+
3
B
1
−
3
B
2
+
B
3
)
t
2
+
2
(
3
B
0
−
6
B
1
+
3
B
2
)
t
+
3
(
−
B
0
+
B
1
)
{\displaystyle {\begin{aligned}{d\mathbf {P} (t) \over dt}&=\sum _{i=0}^{3}\mathbf {B} _{i}J_{3,i}(t)\\&=-3(1-t)^{2}\mathbf {B} _{0}+(9t^{2}-12t+3)\mathbf {B} _{1}+(-9t^{2}+6t)\mathbf {B} _{2}+3t^{2}\mathbf {B} _{3}\\&=3(-\mathbf {B} _{0}+3\mathbf {B} _{1}-3\mathbf {B} _{2}+\mathbf {B} _{3})t^{2}+2(3\mathbf {B} _{0}-6\mathbf {B} _{1}+3\mathbf {B} _{2})t+3(-\mathbf {B} _{0}+\mathbf {B} _{1})\\\end{aligned}}}
d
P
(
0
)
d
t
=
3
(
−
B
0
+
B
1
)
=
3
B
0
B
1
→
d
P
(
1
)
d
t
=
3
(
−
B
2
+
B
3
)
=
3
B
2
B
3
→
{\displaystyle {\begin{array}{lcl}{d\mathbf {P} (0) \over dt}&=&3(-\mathbf {B} _{0}+\mathbf {B} _{1})&=3{\overrightarrow {\mathbf {B} _{0}\mathbf {B} _{1}}}\\{d\mathbf {P} (1) \over dt}&=&3(-\mathbf {B} _{2}+\mathbf {B} _{3})&=3{\overrightarrow {\mathbf {B} _{2}\mathbf {B} _{3}}}\\\end{array}}}
となり、端点とその隣の制御点で端点の接線が定まることがわかる[ 13] 。
P
(
t
)
=
[
t
3
t
2
t
1
]
[
−
1
3
−
3
1
3
−
6
3
0
−
3
3
0
0
1
0
0
0
]
[
B
0
B
1
B
2
B
3
]
{\displaystyle \mathbf {P} (t)={\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}}{\begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&3&0&0\\1&0&0&0\end{bmatrix}}{\begin{bmatrix}\mathbf {B} _{0}\\\mathbf {B} _{1}\\\mathbf {B} _{2}\\\mathbf {B} _{3}\end{bmatrix}}}
x
=
a
0
t
3
+
a
1
t
2
+
a
2
t
+
a
3
y
=
b
0
t
3
+
b
1
t
2
+
b
2
t
+
b
3
{\displaystyle {\begin{array}{l}x=a_{0}t^{3}+a_{1}t^{2}+a_{2}t+a_{3}\\y=b_{0}t^{3}+b_{1}t^{2}+b_{2}t+b_{3}\end{array}}}
とすると、
F
(
x
,
y
)
=
a
3
3
b
0
3
−
a
2
a
3
2
b
0
2
b
1
+
a
1
a
3
2
b
0
b
1
2
−
a
0
a
3
2
b
1
3
+
a
2
2
a
3
b
0
2
b
2
−
2
a
1
a
3
2
b
0
2
b
2
−
a
1
a
2
a
3
b
0
b
1
b
2
+
3
a
0
a
3
2
b
0
b
1
b
2
+
a
0
a
2
a
3
b
1
2
b
2
+
a
1
2
a
3
b
0
b
2
2
−
2
a
0
a
2
a
3
b
0
b
2
2
−
a
0
a
1
a
3
b
1
b
2
2
+
a
0
2
a
3
b
2
3
−
a
2
3
b
0
2
b
3
+
3
a
1
a
2
a
3
b
0
2
b
3
−
3
a
0
a
3
2
b
0
2
b
3
+
a
1
a
2
2
b
0
b
1
b
3
−
2
a
1
2
a
3
b
0
b
1
b
3
−
a
0
a
2
a
3
b
0
b
1
b
3
−
a
0
a
2
2
b
1
2
b
3
+
2
a
0
a
1
a
3
b
1
2
b
3
−
a
1
2
a
2
b
0
b
2
b
3
+
2
a
0
a
2
2
b
0
b
2
b
3
+
a
0
a
1
a
3
b
0
b
2
b
3
+
a
0
a
1
a
2
b
1
b
2
b
3
−
3
a
0
2
a
3
b
1
b
2
b
3
−
a
0
2
a
2
b
2
2
b
3
+
a
1
3
b
0
b
3
2
−
3
a
0
a
1
a
2
b
0
b
3
2
+
3
a
0
2
a
3
b
0
b
3
2
−
a
0
a
1
2
b
1
b
3
2
+
2
a
0
2
a
2
b
1
b
3
2
+
a
0
2
a
1
b
2
b
3
2
−
a
0
3
b
3
3
+
(
−
3
a
3
2
b
0
3
+
2
a
2
a
3
b
0
2
b
1
−
2
a
1
a
3
b
0
b
1
2
+
2
a
0
a
3
b
1
3
−
a
2
2
b
0
2
b
2
+
4
a
1
a
3
b
0
2
b
2
+
a
1
a
2
b
0
b
1
b
2
−
6
a
0
a
3
b
0
b
1
b
2
−
a
0
a
2
b
1
2
b
2
−
a
1
2
b
0
b
2
2
+
2
a
0
a
2
b
0
b
2
2
+
a
0
a
1
b
1
b
2
2
−
a
0
2
b
2
3
−
3
a
1
a
2
b
0
2
b
3
+
6
a
0
a
3
b
0
2
b
3
+
2
a
1
2
b
0
b
1
b
3
+
a
0
a
2
b
0
b
1
b
3
−
2
a
0
a
1
b
1
2
b
3
−
a
0
a
1
b
0
b
2
b
3
+
3
a
0
2
b
1
b
2
b
3
−
3
a
0
2
b
0
b
3
2
)
x
+
(
a
2
3
b
0
2
−
3
a
1
a
2
a
3
b
0
2
+
3
a
0
a
3
2
b
0
2
−
a
1
a
2
2
b
0
b
1
+
2
a
1
2
a
3
b
0
b
1
+
a
0
a
2
a
3
b
0
b
1
+
a
0
a
2
2
b
1
2
−
2
a
0
a
1
a
3
b
1
2
+
a
1
2
a
2
b
0
b
2
−
2
a
0
a
2
2
b
0
b
2
−
a
0
a
1
a
3
b
0
b
2
−
a
0
a
1
a
2
b
1
b
2
+
3
a
0
2
a
3
b
1
b
2
+
a
0
2
a
2
b
2
2
−
2
a
1
3
b
0
b
3
+
6
a
0
a
1
a
2
b
0
b
3
−
6
a
0
2
a
3
b
0
b
3
+
2
a
0
a
1
2
b
1
b
3
−
4
a
0
2
a
2
b
1
b
3
−
2
a
0
2
a
1
b
2
b
3
+
3
a
0
3
b
3
2
)
y
+
(
3
a
3
b
0
3
−
a
2
b
0
2
b
1
+
a
1
b
0
b
1
2
−
a
0
b
1
3
−
2
a
1
b
0
2
b
2
+
3
a
0
b
0
b
1
b
2
−
3
a
0
b
0
2
b
3
)
x
2
+
(
3
a
1
a
2
b
0
2
−
6
a
0
a
3
b
0
2
−
2
a
1
2
b
0
b
1
−
a
0
a
2
b
0
b
1
+
2
a
0
a
1
b
1
2
+
a
0
a
1
b
0
b
2
−
3
a
0
2
b
1
b
2
+
6
a
0
2
b
0
b
3
)
x
y
+
(
a
1
3
b
0
−
3
a
0
a
1
a
2
b
0
+
3
a
0
2
a
3
b
0
−
a
0
a
1
2
b
1
+
2
a
0
2
a
2
b
1
+
a
0
2
a
1
b
2
−
3
a
0
3
b
3
)
y
2
−
b
0
3
x
3
+
3
a
0
b
0
2
x
2
y
−
3
a
0
2
b
0
x
y
2
+
a
0
3
y
3
=
0
{\displaystyle {\begin{array}{l}F(x,y)=a_{3}^{3}b_{0}^{3}-a_{2}a_{3}^{2}b_{0}^{2}b_{1}+a_{1}a_{3}^{2}b_{0}b_{1}^{2}-a_{0}a_{3}^{2}b_{1}^{3}+a_{2}^{2}a_{3}b_{0}^{2}b_{2}-2a_{1}a_{3}^{2}b_{0}^{2}b_{2}-a_{1}a_{2}a_{3}b_{0}b_{1}b_{2}+3a_{0}a_{3}^{2}b_{0}b_{1}b_{2}\\\qquad +a_{0}a_{2}a_{3}b_{1}^{2}b_{2}+a_{1}^{2}a_{3}b_{0}b_{2}^{2}-2a_{0}a_{2}a_{3}b_{0}b_{2}^{2}-a_{0}a_{1}a_{3}b_{1}b_{2}^{2}+a_{0}^{2}a_{3}b_{2}^{3}-a_{2}^{3}b_{0}^{2}b_{3}+3a_{1}a_{2}a_{3}b_{0}^{2}b_{3}\\\qquad -3a_{0}a_{3}^{2}b_{0}^{2}b_{3}+a_{1}a_{2}^{2}b_{0}b_{1}b_{3}-2a_{1}^{2}a_{3}b_{0}b_{1}b_{3}-a_{0}a_{2}a_{3}b_{0}b_{1}b_{3}-a_{0}a_{2}^{2}b_{1}^{2}b_{3}+2a_{0}a_{1}a_{3}b_{1}^{2}b_{3}\\\qquad -a_{1}^{2}a_{2}b_{0}b_{2}b_{3}+2a_{0}a_{2}^{2}b_{0}b_{2}b_{3}+a_{0}a_{1}a_{3}b_{0}b_{2}b_{3}+a_{0}a_{1}a_{2}b_{1}b_{2}b_{3}-3a_{0}^{2}a_{3}b_{1}b_{2}b_{3}-a_{0}^{2}a_{2}b_{2}^{2}b_{3}\\\qquad +a_{1}^{3}b_{0}b_{3}^{2}-3a_{0}a_{1}a_{2}b_{0}b_{3}^{2}+3a_{0}^{2}a_{3}b_{0}b_{3}^{2}-a_{0}a_{1}^{2}b_{1}b_{3}^{2}+2a_{0}^{2}a_{2}b_{1}b_{3}^{2}+a_{0}^{2}a_{1}b_{2}b_{3}^{2}-a_{0}^{3}b_{3}^{3}\\\quad +(-3a_{3}^{2}b_{0}^{3}+2a_{2}a_{3}b_{0}^{2}b_{1}-2a_{1}a_{3}b_{0}b_{1}^{2}+2a_{0}a_{3}b_{1}^{3}-a_{2}^{2}b_{0}^{2}b_{2}+4a_{1}a_{3}b_{0}^{2}b_{2}+a_{1}a_{2}b_{0}b_{1}b_{2}-6a_{0}a_{3}b_{0}b_{1}b_{2}\\\qquad -a_{0}a_{2}b_{1}^{2}b_{2}-a_{1}^{2}b_{0}b_{2}^{2}+2a_{0}a_{2}b_{0}b_{2}^{2}+a_{0}a_{1}b_{1}b_{2}^{2}-a_{0}^{2}b_{2}^{3}-3a_{1}a_{2}b_{0}^{2}b_{3}+6a_{0}a_{3}b_{0}^{2}b_{3}+2a_{1}^{2}b_{0}b_{1}b_{3}\\\qquad +a_{0}a_{2}b_{0}b_{1}b_{3}-2a_{0}a_{1}b_{1}^{2}b_{3}-a_{0}a_{1}b_{0}b_{2}b_{3}+3a_{0}^{2}b_{1}b_{2}b_{3}-3a_{0}^{2}b_{0}b_{3}^{2})x\\\quad +(a_{2}^{3}b_{0}^{2}-3a_{1}a_{2}a_{3}b_{0}^{2}+3a_{0}a_{3}^{2}b_{0}^{2}-a_{1}a_{2}^{2}b_{0}b_{1}+2a_{1}^{2}a_{3}b_{0}b_{1}+a_{0}a_{2}a_{3}b_{0}b_{1}+a_{0}a_{2}^{2}b_{1}^{2}-2a_{0}a_{1}a_{3}b_{1}^{2}\\\qquad +a_{1}^{2}a_{2}b_{0}b_{2}-2a_{0}a_{2}^{2}b_{0}b_{2}-a_{0}a_{1}a_{3}b_{0}b_{2}-a_{0}a_{1}a_{2}b_{1}b_{2}+3a_{0}^{2}a_{3}b_{1}b_{2}+a_{0}^{2}a_{2}b_{2}^{2}-2a_{1}^{3}b_{0}b_{3}\\\qquad +6a_{0}a_{1}a_{2}b_{0}b_{3}-6a_{0}^{2}a_{3}b_{0}b_{3}+2a_{0}a_{1}^{2}b_{1}b_{3}-4a_{0}^{2}a_{2}b_{1}b_{3}-2a_{0}^{2}a_{1}b_{2}b_{3}+3a_{0}^{3}b_{3}^{2})y\\\quad +(3a_{3}b_{0}^{3}-a_{2}b_{0}^{2}b_{1}+a_{1}b_{0}b_{1}^{2}-a_{0}b_{1}^{3}-2a_{1}b_{0}^{2}b_{2}+3a_{0}b_{0}b_{1}b_{2}-3a_{0}b_{0}^{2}b_{3})x^{2}\\\quad +(3a_{1}a_{2}b_{0}^{2}-6a_{0}a_{3}b_{0}^{2}-2a_{1}^{2}b_{0}b_{1}-a_{0}a_{2}b_{0}b_{1}+2a_{0}a_{1}b_{1}^{2}+a_{0}a_{1}b_{0}b_{2}-3a_{0}^{2}b_{1}b_{2}+6a_{0}^{2}b_{0}b_{3})xy\\\quad +(a_{1}^{3}b_{0}-3a_{0}a_{1}a_{2}b_{0}+3a_{0}^{2}a_{3}b_{0}-a_{0}a_{1}^{2}b_{1}+2a_{0}^{2}a_{2}b_{1}+a_{0}^{2}a_{1}b_{2}-3a_{0}^{3}b_{3})y^{2}\\\quad -b_{0}^{3}x^{3}+3a_{0}b_{0}^{2}x^{2}y-3a_{0}^{2}b_{0}xy^{2}+a_{0}^{3}y^{3}\qquad =0\end{array}}}
となる。
S
=
1
20
[
B
0
x
B
1
x
B
2
x
B
3
x
]
[
0
6
3
1
−
6
0
3
3
−
3
−
3
0
6
−
1
−
3
−
6
0
]
[
B
0
y
B
1
y
B
2
y
B
3
y
]
{\displaystyle S={\frac {1}{20}}{\begin{bmatrix}{B_{0}}_{x}&{B_{1}}_{x}&{B_{2}}_{x}&{B_{3}}_{x}\end{bmatrix}}{\begin{bmatrix}0&6&3&1\\-6&0&3&3\\-3&-3&0&6\\-1&-3&-6&0\end{bmatrix}}{\begin{bmatrix}{B_{0}}_{y}\\{B_{1}}_{y}\\{B_{2}}_{y}\\{B_{3}}_{y}\end{bmatrix}}}
以下は2つの3次ベジェ曲線
[
B
0
B
1
B
2
B
3
]
{\displaystyle {\begin{bmatrix}{\mathbf {B} }_{0}&{\mathbf {B} }_{1}&{\mathbf {B} }_{2}&{\mathbf {B} }_{3}\end{bmatrix}}}
による
P
0
(
t
)
{\displaystyle \mathbf {P} _{0}(t)}
と
[
B
4
B
5
B
6
B
7
]
{\displaystyle {\begin{bmatrix}{\mathbf {B} }_{4}&{\mathbf {B} }_{5}&{\mathbf {B} }_{6}&{\mathbf {B} }_{7}\end{bmatrix}}}
による
P
1
(
t
)
{\displaystyle \mathbf {P} _{1}(t)}
の面積の例。
P
0
(
t
)
{\displaystyle \mathbf {P} _{0}(t)}
は制御点の並び順が原点に対し反時計回りなので面積は正の値、
P
1
(
t
)
{\displaystyle \mathbf {P} _{1}(t)}
は制御点の並び順が原点に対し時計回りなので面積は負の値になる。両者面積を合計することで閉包の面積が求まる。
3次ベジェ曲線の面積の例
2つの3次ベジェ曲線
[
B
0
B
1
B
2
B
3
]
{\displaystyle {\begin{bmatrix}{\mathbf {B} }_{0}&{\mathbf {B} }_{1}&{\mathbf {B} }_{2}&{\mathbf {B} }_{3}\end{bmatrix}}}
による
P
0
(
t
)
{\displaystyle \mathbf {P} _{0}(t)}
と
[
B
4
B
5
B
6
B
7
]
{\displaystyle {\begin{bmatrix}{\mathbf {B} }_{4}&{\mathbf {B} }_{5}&{\mathbf {B} }_{6}&{\mathbf {B} }_{7}\end{bmatrix}}}
による
P
1
(
t
)
{\displaystyle \mathbf {P} _{1}(t)}
の連続性は以下のとおり。
P
0
(
1
)
=
[
0
0
0
1
]
[
B
0
B
1
B
2
B
3
]
,
P
1
(
0
)
=
[
1
0
0
0
]
[
B
4
B
5
B
6
B
7
]
{\displaystyle \mathbf {P} _{0}(1)={\begin{bmatrix}0&0&0&1\end{bmatrix}}{\begin{bmatrix}{\mathbf {B} }_{0}\\{\mathbf {B} }_{1}\\{\mathbf {B} }_{2}\\{\mathbf {B} }_{3}\end{bmatrix}},\quad \mathbf {P} _{1}(0)={\begin{bmatrix}1&0&0&0\end{bmatrix}}{\begin{bmatrix}{\mathbf {B} }_{4}\\{\mathbf {B} }_{5}\\{\mathbf {B} }_{6}\\{\mathbf {B} }_{7}\end{bmatrix}}}
なので、
B
3
{\displaystyle {\mathbf {B} }_{3}}
と
B
4
{\displaystyle {\mathbf {B} }_{4}}
が一致していればC0連続。
P
0
′
(
1
)
=
[
0
0
−
3
3
]
[
B
0
B
1
B
2
B
3
]
,
P
1
′
(
0
)
=
[
−
3
3
0
0
]
[
B
4
B
5
B
6
B
7
]
{\displaystyle \mathbf {P} '_{0}(1)={\begin{bmatrix}0&0&-3&3\end{bmatrix}}{\begin{bmatrix}{\mathbf {B} }_{0}\\{\mathbf {B} }_{1}\\{\mathbf {B} }_{2}\\{\mathbf {B} }_{3}\end{bmatrix}},\quad \mathbf {P} '_{1}(0)={\begin{bmatrix}-3&3&0&0\end{bmatrix}}{\begin{bmatrix}{\mathbf {B} }_{4}\\{\mathbf {B} }_{5}\\{\mathbf {B} }_{6}\\{\mathbf {B} }_{7}\end{bmatrix}}}
なので、
B
3
−
B
2
{\displaystyle {\mathbf {B} }_{3}-{\mathbf {B} }_{2}}
と
B
5
−
B
4
{\displaystyle {\mathbf {B} }_{5}-{\mathbf {B} }_{4}}
が一致していればC1連続。
P
0
″
(
1
)
=
[
0
6
−
12
6
]
[
B
0
B
1
B
2
B
3
]
,
P
1
″
(
0
)
=
[
6
−
12
6
0
]
[
B
4
B
5
B
6
B
7
]
{\displaystyle \mathbf {P} ''_{0}(1)={\begin{bmatrix}0&6&-12&6\end{bmatrix}}{\begin{bmatrix}{\mathbf {B} }_{0}\\{\mathbf {B} }_{1}\\{\mathbf {B} }_{2}\\{\mathbf {B} }_{3}\end{bmatrix}},\quad \mathbf {P} ''_{1}(0)={\begin{bmatrix}6&-12&6&0\end{bmatrix}}{\begin{bmatrix}{\mathbf {B} }_{4}\\{\mathbf {B} }_{5}\\{\mathbf {B} }_{6}\\{\mathbf {B} }_{7}\end{bmatrix}}}
なので、
B
1
−
2
B
2
+
B
3
{\displaystyle {\mathbf {B} }_{1}-2{\mathbf {B} }_{2}+{\mathbf {B} }_{3}}
と
B
4
−
2
B
5
+
B
6
{\displaystyle {\mathbf {B} }_{4}-2{\mathbf {B} }_{5}+{\mathbf {B} }_{6}}
が一致していればC2連続。
連続性の例
ド・カステリョのアルゴリズムを用いて任意の
t
{\displaystyle t}
で分割することができる。分割後の2曲線の制御点は
[
B
0
0
(
t
)
B
0
1
(
t
)
B
0
2
(
t
)
B
0
3
(
t
)
]
{\displaystyle {\begin{bmatrix}\mathbf {B} _{0}^{0}(t)&\mathbf {B} _{0}^{1}(t)&\mathbf {B} _{0}^{2}(t)&\mathbf {B} _{0}^{3}(t)\end{bmatrix}}}
と
[
B
0
3
(
t
)
B
1
2
(
t
)
B
2
1
(
t
)
B
3
0
(
t
)
]
{\displaystyle {\begin{bmatrix}\mathbf {B} _{0}^{3}(t)&\mathbf {B} _{1}^{2}(t)&\mathbf {B} _{2}^{1}(t)&\mathbf {B} _{3}^{0}(t)\end{bmatrix}}}
である。
端点 P0 , P3 および制御点 P1 , P2 からなる3次ベジェ曲線
前節の数式を適宜変形するなどして、コンピュータプログラムに実装すれば描画はできるわけだが、以下では3次のベジェ曲線(4個の制御点で示される曲線)を例として、手作業を念頭に置いた作図法を示す。この手順を基にした描画プログラムにも有用性があり、また人によってはベジェ曲線の性質を直観的に把握するにも有効かもしれない。
右図の P0 , P1 , P2 , P3 が与えられた制御点である。今、ベジェ曲線の P0 から t (0 < t < 1) の比率の位置の点の座標を求めるためには、次のように計算すればよい。
まず、制御点を順に結んで得られる3つの線分 P0 P1 , P1 P2 , P2 P3 (水色の折れ線)をそれぞれ t : 1 − t の比率で分割する点、P4 , P5 , P6 を求める。
次に、これらの点を順に結んで得られる2つの線分 P4 P5 , P5 P6 (橙色の折れ線)を再びそれぞれ t : 1 − t の比率で分割する点 P7 , P8 を求める。
最後に、この2点を結ぶ線分 P7 P8 (緑色の線分)をさらに t : 1 − t の比率で分割する点 P9 を求めると、この点がベジェ曲線上の点となる。
この作業を 0 < t < 1 の範囲で繰り返し行うことにより、P0 , P1 , P2 , P3 を制御点とする3次ベジェ曲線(赤色の曲線)が得られる。
ベジェ曲線は制御点から成る凸包に内包される性質を利用して、交点が存在する範囲を限定し曲線を切り出すことを反復するBezier clipping [ 16] がある。
代数方程式による方法(Implicitization)[ 17]
編集
直線とベジェ曲線の交点は、直線の式の
x
,
y
{\displaystyle x,y}
にベジェ曲線の式(
x
=
a
0
t
2
+
a
1
t
+
a
2
,
y
=
b
0
t
2
+
b
1
t
+
b
2
{\displaystyle x=a_{0}t^{2}+a_{1}t+a_{2},y=b_{0}t^{2}+b_{1}t+b_{2}}
など)を
代入した方程式を解くことで、交点候補の
t
{\displaystyle t}
を求めることができる。
ベジェ曲線どうしの交点は、一方の曲線の陰関数(陰伏方程式)に、他方の曲線の式を代入した方程式の実数根が交点候補となる。
交点候補は値域などの条件により交点か判定される。
この方法では、解の公式が存在しない高次方程式(3次ベジェ曲線どうしであれば9次方程式)の場合の解法が課題となる。
多数のベジェ曲線で構成された対象(PBRTのhairやfurなど)の3Dレイトレーシングにおいては、実根の有無をBudan-Fourier theoremで判定して絞り込み、Muller's methodやRidders' methodで根を求めるほうが、一般的なスツルムの定理 とニュートン法 などの組み合わせより効率が良いとの報告例[ 18]
がある。
Composite Bézier curve
編集
複合ベジェ曲線 (英 : composite Bézier curve )はベジェ曲線を1つのセグメントとして複数セグメントを直列に接続した曲線である[ 注 1] 。ベジェスプライン (英 : Bézier spline )[ 19] 、ポリベジェ曲線 (英 : polybezier )とも。
N次ベジェ曲線は次数を変えずに延長できない。なぜなら延長のために制御点を追加することで次数も増加するからである。またN次ベジェ曲線は既存区間に影響を与えずに延長できない。なぜなら全制御点の反映 という特性により新しい制御点座標が既存の区間にも反映されるからである。
これに対する方策にはスプライン曲線 をはじめとした区分多項式がある。区分多項式ではある区間を1つの多項式で表現し、その続きの区間を別の多項式で表現し、曲線全体を複数の多項式で構成する。新しい区間の多項式は既存区間と独立しているため、上記の次数増や既存区間影響の問題を回避できる[ 19] 。これを採用し、ベジェ曲線で各区分を表現した区分多項式が composite Bézier curve である。
composite Bézier curve はセグメント間の連結に関して制約を置いていない。ゆえに composite Bézier curve 一般には連続性や滑らかさに関する保証がない[ 20] 。これはスプライン曲線・B-スプライン曲線 との違いである。一方で適切な制約を課すことで連続性や滑らかさが保証された composite Bézier curve のサブタイプを見出すことができる。
composite Bézier curve の連続性はセグメントの終点制御点と隣接セグメントの始点制御点を共有する制約により保証できる[ 21] 。これは端点と端制御点の一致 特性より明らかである。
composite Bézier curve の滑らかさはセグメント間で端点での接線を共有する制約により保証できる[ 22] 。これはパラメータに対する一階微分が端点で一致することと等しい[ 22] 。
3次ベジェ曲線からなるポリベジェ曲線は複雑な図形を描くためによく実利用されるため、様々な作図法が考案されている。またベジェ曲線の数学的理解無しで直感的にポリベジェ曲線を描くために、いくつかの用語がしばしば導入されている。
アンカーポイント (英 : anchor point )はセグメント端点にある制御点の別名である[ 23] 。頂点 (英 : vertex )、パスポイント (英 : path point )、通過点 とも[ 24] 。端点と端制御点の一致 特性により、ベジェ曲線はアンカーポイント間を繋ぐ曲線とみなせる。セグメントが通らない制御点(=方向ハンドル )との区別を直感的にするためにこの用語が導入されている。
方向ハンドル ( ほうこうハンドル 、( 英 : direction handle )はセグメント端点の隣にある制御点の別名である。方向点 とも[ 25] 。方向線 の先端に位置する。アンカーポイント と区別することで直接曲線は通らないが曲がり方を決定づけるということを直感的に理解できる。
方向線 ( ほうこうせん 、( 英 : direction line )はセグメント端点から隣の制御点へ伸びる直線である[ 26] 。3次ベジェ曲線では端点での接線ベクトルが隣の制御点へ伸びるベクトルと同じ向きであるため(詳細: #3次ベジェ曲線 )、方向線の概念を導入すれば端点での傾きと隣接制御点(=方向ハンドル )の位置を同時に視認できる。
ポリベジェ曲線は滑らかさの保証に制約を要する(⇒#滑らかさの保証 )。これは各アンカーポイントから伸びる2つの方向線のあいだにどのような制約を課すかで表現できる。
方向線が左右対称であれば接線が一致するため必ず滑らかになる。この制約が課されたアンカーポイントはスムーズポイント (英 : smooth point )[ 27] 、設定そのものはシンメトリック (英 : symmetric )[ 28] 、曲線 [ 29] 、スムーズ (英 : smooth )[ 30] [ 28] などと呼称される。
多くのソフトウェアでは「mousedown でアンカーポイント設定、drag で方向ハンドル調整、mouseup で確定」を繰り返すことで滑らかなポリベジェ曲線を作図できる。2ハンドルの連動(smooth 状態)を alt で切り離す、といった操作もしばしば実装されている。
原語(フランス語 )における Bézier の発音はベズィエに近く、「ベジェ曲線」より「ベジエ曲線」の方がこれに忠実と言えるが、いずれの呼称も用いられている。
ベジェ曲面(曲面パッチなどとも)と呼ばれるような、3次元空間内の曲面への拡張にはいくつか手法がある。たとえば、目的の曲面においてパッチの端点となる3点とその3点における接平面を指定するという方法や、4点を指定し2方向のクロスハッチングのようにして面を構成するという方法がある。
^ 「複合ベジェ曲線」は仮訳。アカデミックな邦訳がまだ存在していない可能性が高い。
^ 3次ベジェ曲線 は始点と第1制御点の距離によって始点付近の曲率が制御できるため補正用途に向く。
^ "N 次ベジェ曲線 ...
P
(
t
)
=
∑
i
=
0
N
n
C
i
t
i
(
1
−
t
)
n
−
i
P
i
{\displaystyle P(t)=\sum _{i=0}^{N}{}_{n}C_{i}t^{i}(1-t)^{n-i}P_{i}}
さらなる一般化
P
(
t
)
=
∑
i
=
0
N
B
i
n
P
i
{\displaystyle P(t)=\sum _{i=0}^{N}B_{i}^{n}P_{i}}
" 金森 2017 より引用。
^ "ベジェ曲線
x
(
t
)
=
b
0
n
(
t
)
{\displaystyle x(t)=b_{0}^{n}(t)}
は次のように表示される:
x
(
t
)
=
b
0
n
(
t
)
=
∑
j
=
0
n
B
j
n
(
t
)
b
j
{\displaystyle x(t)=b_{0}^{n}(t)=\sum _{j=0}^{n}B_{j}^{n}(t)b_{j}}
これをベジェ曲線のベルンシュタイン表現という。" 浦川 2004 より引用。
^ "ベジエ曲線のベルンシュタイン多項式による表現
b
0
n
(
t
)
=
∑
j
=
0
n
b
j
B
j
n
(
t
)
(
6
)
{\displaystyle b_{0}^{n}(t)=\sum _{j=0}^{n}b_{j}B_{j}^{n}(t)\quad (6)}
を得る.これを,ベジエ曲線のベルンシュタイン表現とよぶ." 坂根 2005b , p. 15 より引用。
^ "ド・カステリョのアルゴリズムから得られる曲線
b
0
n
(
t
)
{\displaystyle b_{0}^{n}(t)}
を ... ベジエ曲線と呼ぶ." 坂根 2005a , p. 9 より引用。
^
Sederberg, T. W.; Anderson, D. C.; Goldman, R.N. (Oct. 1984). “Implicit representation of parametric curves and surfaces”. Computer Vision, Graphics, and Image Processing 28 (1): 72-84.
^ a b c "
P
(
t
)
=
∑
i
=
0
n
B
i
n
P
i
B
i
n
=
n
C
i
t
i
(
1
−
t
)
n
−
i
{\displaystyle P(t)=\sum _{i=0}^{n}B_{i}^{n}P_{i}\qquad B_{i}^{n}={}_{n}\!C_{i}t^{i}(1-t)^{n-i}}
ある比率で各制御点の座標を混ぜ合わせる ... 混合比(和は 1 になる) 混合比を関数で表したものを「基底関数」とよぶ" 金森 2017 より引用。
^ "ベジェ曲線上の点P(t)は、制御点Piの加重平均として定義される。" p.236 より引用。谷口. (2000). 制御点方式による曲線形状の生成 . 長野大学紀要, 22巻3号, pp.234-242.
^ "2次ベジェ曲線
P
(
t
)
=
(
1
−
t
)
2
P
0
+
2
t
(
1
−
t
)
P
1
+
t
2
P
2
{\displaystyle P(t)=(1-t)^{2}P_{0}+2t(1-t)P_{1}+t^{2}P_{2}}
" 金森 2017 より引用。
^ 高校数学の美しい物語 - ガウスグリーンの定理の入試への応用
^ Subdividing a Bézier Curve - CS3621 Introduction to Computing with Geometry Notes
^ Bézier Splines - FontForge Technical References
^ "3 次ベジェ曲線は 4 個の制御点を持つ曲線" p.106 より引用。金 澤. (2015). パラメトリック曲線を用いたノンパラメトリック形状最適化法に関する研究 . 三重大学学術機関リポジトリ.
^ "3 次ベジェ曲線の性質 ... 第 1, 2 制御点で終点での接線が決まる ... 第 3,4 制御点で終点での接線が決まる" 金森 2017 より引用。
^ Farin, p. 42.
^ Farin, pp. 77-90.
^ Sederberg, T. W.; Nishita, T. (Nov. 1990). “Curve intersection using Bézier clipping” . Computer-Aided Design 22 (9): 538-549. http://nishitalab.org/user/nis/cdrom/cad/CAGD90Curve.pdf .
^ Sederberg, Thomas W. (2012, 2017). Computer Aided Geometric Design . pp. 191-208. https://scholarsarchive.byu.edu/facpub/1/
^ Reshetov, Alexander (July 2017). “Exploiting Budan-Fourier and Vincent’s Theorems for Ray Tracing 3D Bézier Curves” . Proceedings of HPG ’17, Los Angeles, CA, USA, July 28-30, 2017 . doi :10.1145/3105762.3105783 . https://research.nvidia.com/sites/default/files/pubs/2017-07_Exploiting-Budan-Fourier-and//HPG2017-Budan-Fourier.pdf .
^ a b "ベジェスプライン曲線を用いる利点 ... 制御点の影響の局所性により制御点を編集した際の影響を曲線の一部分に限定できる" p.4 より引用。中野. (2002). 利用者の動作と連動する仮想ファッション . インタラクション2002論文集, pp.231-238.
^ "ベジェ曲線ではセグメント間の連続性は保証されていなかった" 以下より引用。三谷 (2020), “第6回 曲線・曲面の表現「Bスプライン曲線」” , 筑波大学講義 コンピュータグラフィックス基礎 , https://mitani.cs.tsukuba.ac.jp/lecture/2020/cg_basics/06/06_slides.pdf
^ "複数セグメントの連結 ... 2 つのセグメントで端点を共有する(制御点位置の共有, C0 連続) " 金森 2017 より引用。
^ a b "複数セグメントの連結 ... 2 つのセグメントで接線を共有する (制御点が同一直線上で等距離,C1連続) ← 1 階微分が接続点で同値" 金森 2017 より引用。
^ "頂点は、パスの各セグメントの開始点と終了点です。他の Adobe アプリケーションでは、頂点のことをアンカーポイントまたはパスポイントと呼ぶ場合もあります。" Adobe. ベクトルグラフィックとラスター画像について . After Effects ユーザーガイド. 2024-10-13閲覧.
^ "[3次ベジェ]は、複数の通過点と方向点で構成される曲線を描画できます。... 1つ目の曲線を終了したい位置からドラッグを開始すると、ドラッグの開始位置に通過点が作成される" CLIP STUDIO PAINT. 連続曲線サブツール・ベジェ曲線サブツール . User Guide. 2024-10-13閲覧.
^ "[3次ベジェ]は、複数の通過点と方向点で構成される曲線を描画できます。... 方向点が表示されます。マウスを動かすと曲線の曲がり具合を調整できます。曲線の位置を決めたらマウスのボタンを離します。" CLIP STUDIO PAINT. 連続曲線サブツール・ベジェ曲線サブツール . User Guide. 2024-10-13閲覧.
^ "各頂点の方向線(すなわち接線)" Adobe. ベクトルグラフィックとラスター画像について . After Effects ユーザーガイド. 2024-10-13閲覧.
^ "スムーズポイントでは、パスセグメントは連続する曲線として連結されます。つまり、入ってくる方向と出て行く方向が同じ線上にあります。... スムーズポイントで方向線を移動すると、ポイントの両側の曲線が同時に調整されます。" Adobe. ベクトルグラフィックとラスター画像について . After Effects ユーザーガイド. 2024-10-13閲覧.
^ a b "Krita has several node-types that allow you control the side handles more efficiently. These are the corner, smooth and symmetric modes. ... Symmetric ... the symmetric node will force handles to always point in opposite directions and have the same length." Krita. Tools » Shape Edit Tool . Krita Reference Manual. 2024-10-13閲覧.
^ "通過点の状態を角と曲線のいずれかに変更できます。... 通過点を曲線にすると、2つの方向点が連動した状態で操作できます。" CLIP STUDIO PAINT. 連続曲線サブツール・ベジェ曲線サブツール . User Guide. 2024-10-13閲覧.
^ "smooth curveto ... Draws a cubic Bézier curve from the current point ... The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point." 以下より引用。W3C (2018年10月). “Scalable Vector Graphics (SVG) 2 ”. World Wide Web Consortium . 2024年9月9日閲覧。
^ 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
^ 鳥谷浩志; 千代倉弘明 (1991). 3次元CADの基礎と応用 . 共立出版. ISBN 9784320025394
ウィキメディア・コモンズには、
ベジェ曲線 に関連するカテゴリがあります。