ベジェ曲線 ( ベジェきょくせん 、( 英 : 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 のみに限られる。よって一般にはベジェ曲線は両端以外の制御点を通らない。制御点の座標によっては加重平均がたまたまある制御点と一致する場合がありうるので、制御点を通るのが常に両端のみ、というわけではない。
端点とその隣の制御点で端点の接線が定まる
編集
B
0
{\displaystyle \mathbf {B} _{0}}
と
B
1
{\displaystyle \mathbf {B} _{1}}
を結ぶ線分がベジェ曲線の始点における接線であり、
B
N
−
1
{\displaystyle \mathbf {B} _{N-1}}
と
B
N
{\displaystyle \mathbf {B} _{N}}
を結ぶ線分が終点における接線である。[ 8]
凸包性
編集
ベジェ曲線は制御点による凸包 に含まれる。[ 9]
対称性
編集
制御点の順序を逆にしてもベジェ曲線の形状は変化しない。[ 10]
アフィン不変性
編集
アフィン写像 されたベジェ曲線は、アフィン写像された制御点から求めたベジェ曲線と等しい[ 11] 。
また、ベジェ曲線の特性(ループやカスプ、変曲点の有無と
t
{\displaystyle t}
軸上の位置)は、アフィン写像によって変化しない[ 12] 。
パラメータのアフィン写像に対する不変性
編集
パラメータをアフィン写像しても、ベジェ曲線は変化しない。
例として、パラメータの区間を
[
0
,
1
]
{\displaystyle [0,1]}
から
[
a
,
b
]
{\displaystyle [a,b]}
へアフィン写像しても、ベジェ曲線は変化しない。
[ 9]
重心結合に対する不変性
編集
制御点からベジェ曲線を生成する過程で、重心結合が不変に保たれる。
例として、2つのベジェ曲線の加重平均は、各曲線の制御点それぞれの加重平均から求めたベジェ曲線と等しい。
[ 13]
線形再現性
編集
制御点が直線上に等間隔で配置されている場合、ベジェ曲線は直線になり、
x
{\displaystyle x}
や
y
{\displaystyle y}
は
t
{\displaystyle t}
の線形関数になる(始点と終点を結ぶ直線が再現される)。
(等間隔でない場合も直線になるが、線形関数にはならない)
[ 14]
曲率
編集
ベジェ曲線の曲率は、以下のパラメトリック曲線の曲率の定義 (英語版 ) により求めることができる。
k
=
x
′
y
″
−
y
′
x
″
(
x
′
2
+
y
′
2
)
′
3
/
2
{\displaystyle k={\frac {x'y''-y'x''}{{\bigl (}{x'}^{2}+{y'}^{2}{\bigr )}{\vphantom {'}}^{3/2}}}}
分類
編集
ベジェ曲線は制御点の数に基づいて分類される。以下はその一例である。
2次ベジェ曲線
編集
2次ベジェ曲線の基底関数
ド・カステリョのアルゴリズムによる2次ベジェ曲線の描画
2次ベジェ曲線 (英語版 ) ( にじベジェきょくせん 、( 英 : quadratic Bézier curve )は3つの制御点で構成されるベジェ曲線である。
2次ベジェ曲線は次の式で定義される[ 15] :
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 で両端制御点の通過が確認できる。
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}}}
2次ベジェ曲線の陰関数表現
編集
a
0
=
B
0
x
−
2
B
1
x
+
B
2
x
a
1
=
−
2
B
0
x
+
2
B
1
x
a
2
=
B
0
x
b
0
=
B
0
y
−
2
B
1
y
+
B
2
y
b
1
=
−
2
B
0
y
+
2
B
1
y
b
2
=
B
0
y
x
=
a
0
t
2
+
a
1
t
+
a
2
y
=
b
0
t
2
+
b
1
t
+
b
2
{\displaystyle {\begin{array}{l}a_{0}={B_{0}}_{x}-2{B_{1}}_{x}+{B_{2}}_{x}\\a_{1}=-2{B_{0}}_{x}+2{B_{1}}_{x}\\a_{2}={B_{0}}_{x}\\b_{0}={B_{0}}_{y}-2{B_{1}}_{y}+{B_{2}}_{y}\\b_{1}=-2{B_{0}}_{y}+2{B_{1}}_{y}\\b_{2}={B_{0}}_{y}\\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}
となる。
2次ベジェ曲線の面積
編集
曲線の始点と終点および原点で囲まれた領域の面積はガウスグリーンの定理[ 16] で求めることができる。
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次ベジェ曲線
編集
3次ベジェ曲線の基底関数
ド・カステリョのアルゴリズムによる3次ベジェ曲線の描画
3次ベジェ曲線 (英語版 ) ( さんじベジェきょくせん 、( 英 : cubic Bézier curve )は4つの制御点で構成されるベジェ曲線である[ 19] 。
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}}}
となり、端点とその隣の制御点で端点の接線が定まることがわかる[ 20] 。
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}}}
3次ベジェ曲線の陰関数表現
編集
a
0
=
−
B
0
x
+
3
B
1
x
−
3
B
2
x
+
B
3
x
a
1
=
3
B
0
x
−
6
B
1
x
+
3
B
2
x
a
2
=
−
3
B
0
x
+
3
B
1
x
a
3
=
B
0
x
b
0
=
−
B
0
y
+
3
B
1
y
−
3
B
2
y
+
B
3
y
b
1
=
3
B
0
y
−
6
B
1
y
+
3
B
2
y
b
2
=
−
3
B
0
y
+
3
B
1
y
b
3
=
B
0
y
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}a_{0}=-{B_{0}}_{x}+3{B_{1}}_{x}-3{B_{2}}_{x}+{B_{3}}_{x}\\a_{1}=3{B_{0}}_{x}-6{B_{1}}_{x}+3{B_{2}}_{x}\\a_{2}=-3{B_{0}}_{x}+3{B_{1}}_{x}\\a_{3}={B_{0}}_{x}\\b_{0}=-{B_{0}}_{y}+3{B_{1}}_{y}-3{B_{2}}_{y}+{B_{3}}_{y}\\b_{1}=3{B_{0}}_{y}-6{B_{1}}_{y}+3{B_{2}}_{y}\\b_{2}=-3{B_{0}}_{y}+3{B_{1}}_{y}\\b_{3}={B_{0}}_{y}\\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}}}
となる。
3次ベジェ曲線の類型、判別
編集
3次ベジェ曲線は、変曲点 、ループ(自己交差)、カスプ(尖点) 、のいずれかを含む場合がある。以下類型に分類される
[ 22] [ 23]
。
3次ベジェ曲線の類型[ 24]
類型のどれにあてはまるかを判別するためには、まず、各制御点をアフィン写像して、
B
0
{\displaystyle {\mathbf {B} }_{0}}
が
(
0
,
0
)
{\displaystyle (0,0)}
、
B
1
{\displaystyle {\mathbf {B} }_{1}}
が
(
0
,
1
)
{\displaystyle (0,1)}
、
B
2
{\displaystyle {\mathbf {B} }_{2}}
が
(
1
,
1
)
{\displaystyle (1,1)}
である正準形式 (英語版 ) に変換する。
各類型を正準形式に変換[ 25]
次に、正準形式に変換した
B
3
{\displaystyle {\mathbf {B} }_{3}}
を以下の判別図にプロットして判定する。
正準形式の判別図[ 26]
曲線上の任意の点の座標を
x
=
f
(
t
)
,
y
=
g
(
t
)
{\displaystyle x=f(t),\ y=g(t)}
とすると、変曲点は、曲率の定義より
x
′
y
″
−
y
′
x
″
=
0
{\displaystyle x'y''-y'x''=0}
となる
t
1
,
t
2
{\displaystyle t_{1},\ t_{2}}
、ループの交点は、
f
(
t
1
)
=
f
(
t
2
)
{\displaystyle f(t_{1})=f(t_{2})}
かつ
g
(
t
1
)
=
g
(
t
2
)
{\displaystyle g(t_{1})=g(t_{2})}
となる
t
1
,
t
2
{\displaystyle t_{1},\ t_{2}}
である。ループの交点が重なる(
t
1
=
t
2
{\displaystyle t_{1}=t_{2}}
)場合はカスプになる。
正準形式を用いない場合、各類型は以下により判別し特異点を求めることができる[ 27] [ 28] [ 29] 。
D
<
0
{\displaystyle D<0}
変曲点
v
≠
0
{\displaystyle v\neq 0}
t
=
−
w
±
−
D
3
2
v
{\displaystyle t={\frac {-w\pm {\sqrt {-{\frac {D}{3}}}}}{2v}}}
v
=
0
,
w
≠
0
{\displaystyle v=0,\ w\neq 0}
t
=
−
u
3
w
{\displaystyle t=-{\frac {u}{3w}}}
D
=
0
,
v
≠
0
{\displaystyle D=0,\ v\neq 0}
カスプ
t
=
−
w
2
v
{\displaystyle t=-{\frac {w}{2v}}}
D
>
0
,
v
≠
0
{\displaystyle D>0,\ v\neq 0}
ループ
t
=
−
w
±
D
2
v
{\displaystyle t={\frac {-w\pm {\sqrt {D}}}{2v}}}
ただし、
a
0
=
−
B
0
x
+
3
B
1
x
−
3
B
2
x
+
B
3
x
,
a
1
=
3
B
0
x
−
6
B
1
x
+
3
B
2
x
,
a
2
=
−
3
B
0
x
+
3
B
1
x
,
a
3
=
B
0
x
b
0
=
−
B
0
y
+
3
B
1
y
−
3
B
2
y
+
B
3
y
,
b
1
=
3
B
0
y
−
6
B
1
y
+
3
B
2
y
,
b
2
=
−
3
B
0
y
+
3
B
1
y
,
b
3
=
B
0
y
x
=
f
(
t
)
=
a
0
t
3
+
a
1
t
2
+
a
2
t
+
a
3
,
y
=
g
(
t
)
=
b
0
t
3
+
b
1
t
2
+
b
2
t
+
b
3
u
=
a
1
b
2
−
a
2
b
1
,
v
=
a
0
b
1
−
a
1
b
0
,
w
=
a
0
b
2
−
a
2
b
0
D
=
4
u
v
−
3
w
2
{\displaystyle {\begin{array}{l}a_{0}=-{B_{0}}_{x}+3{B_{1}}_{x}-3{B_{2}}_{x}+{B_{3}}_{x},\ a_{1}=3{B_{0}}_{x}-6{B_{1}}_{x}+3{B_{2}}_{x},\ a_{2}=-3{B_{0}}_{x}+3{B_{1}}_{x},\ a_{3}={B_{0}}_{x}\\b_{0}=-{B_{0}}_{y}+3{B_{1}}_{y}-3{B_{2}}_{y}+{B_{3}}_{y},\ b_{1}=3{B_{0}}_{y}-6{B_{1}}_{y}+3{B_{2}}_{y},\ b_{2}=-3{B_{0}}_{y}+3{B_{1}}_{y},\ b_{3}={B_{0}}_{y}\\x=f(t)=a_{0}t^{3}+a_{1}t^{2}+a_{2}t+a_{3},\ y=g(t)=b_{0}t^{3}+b_{1}t^{2}+b_{2}t+b_{3}\\u=a_{1}b_{2}-a_{2}b_{1},\ v=a_{0}b_{1}-a_{1}b_{0},\ w=a_{0}b_{2}-a_{2}b_{0}\\D=4uv-3w^{2}\end{array}}}
とする。
3次ベジェ曲線の面積
編集
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次ベジェ曲線の面積の例
3次ベジェ曲線の連続性
編集
3次ベジェ曲線の分割
編集
ド・カステリョのアルゴリズムを用いて任意の
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 [ 30] がある。
代数方程式による方法(Implicitization)[ 31]
編集
直線とベジェ曲線の交点は、直線の式の
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レイトレーシング においては、3次ベジェ曲線と直線の最小距離を求めるための5次方程式について、ブダン・フーリエの定理 とヴァンサンの定理 を用いて実根を分離 し、ミュラー法 やリダーズ法 を反復なしで用いて効率良く所定の精度で根を求めることができる、との報告例[ 32] があり、この方針を3次ベジェ曲線どうしの交点算出に適用した実装例[ 33] が公開されている。
複合ベジェ曲線
編集
複合ベジェ曲線の作図ツール画面例 方向ハンドルは、アンカーポイントに設定された連続性に応じて他のハンドルと連動する
複合ベジェ曲線 (英 : composite Bézier curve )はベジェ曲線を1つのセグメントとして複数セグメントを直列に接続した曲線である[ 注 1] 。ベジェスプライン (英 : Bézier spline )[ 34] 、ポリベジェ曲線 (英 : polybezier )とも。
N次ベジェ曲線は次数を変えずに延長できない。なぜなら延長のために制御点を追加することで次数も増加するからである。またN次ベジェ曲線は既存区間に影響を与えずに延長できない。なぜなら全制御点の反映 という特性により新しい制御点座標が既存の区間にも反映されるからである。
これに対する方策にはスプライン曲線 をはじめとした区分多項式がある。区分多項式ではある区間を1つの多項式で表現し、その続きの区間を別の多項式で表現し、曲線全体を複数の多項式で構成する。新しい区間の多項式は既存区間と独立しているため、上記の次数増や既存区間影響の問題を回避できる[ 34] 。これを採用し、ベジェ曲線で各区分を表現した区分多項式が複合ベジェ曲線である。
利用
編集
用途
編集
ベジェ曲線は様々な目的・用途に利用されている。
具体的には、ベジェ曲線は視覚芸術 (絵画 ・アニメ ・3DCG など)に利用され、輪郭線の直接表現(参考: ドローソフト )、手書き線の補正[ 注 2] (参考: ペイントソフト )、物体配置の補助線などとして用いられる。またフォント ・カリグラフィー ・タイポグラフィ に利用される。工業デザイン でも利用され、設計図中の物体を表現する曲線として直接表現される。GUI ではグラフ型設定値の表現として用いられる。
ベジェ曲線のなかでも2次ベジェ曲線 と3次ベジェ曲線 は広く利用されている。特に3次ベジェ曲線は、始点と第1制御点を結ぶ線分が始点における曲線の接線になり、第2制御点と終点を結ぶ線分が終点における曲線の接線になるため、直感的に理解しやすく多用される。
サポート
編集
ベジェ曲線は様々なプラットフォームでサポートされている。
PostScript やそのフォント (Type1フォント )、SVG やHTML5 のcanvas で3次ベジェ曲線を利用できる。Microsoft Windows のGDI /GDI+、Direct2D 、.NET Framework のSystem.Drawing.Drawing2D.GraphicsPath、WPF のSystem.Windows.Media.BezierSegmentでは3次ベジェをサポートする[ 35] [ 36] [ 37] [ 38] [ 39] 。AWT (Java 1.2以降で追加されたQuadCurve2D , CubicCurve2D の派生クラス)、Skia のSkPathおよびAndroid のandroid.graphics.Pathは2次と3次のベジェ両方をサポートする[ 40] [ 41] [ 42] 。
歴史
編集
ベジェ曲線はフランス の自動車 メーカー、シトロエン 社のド・カステリョ (英語版 ) とルノー 社のピエール・ベジェ により独立に考案された。ド・カステリョの方が先んじていたが、その論文が公知とならなかったためベジェの名が冠されている[ 43] 。
名称
編集
原語(フランス語 )における 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.
^ C.-K. Shene. “Unit 5: Bézier Curves - Derivatives of a Bézier Curve ” (英語). CS3621 Introduction to Computing with Geometry Notes . Michigan Technological University. 2025年7月16日閲覧。
^ a b Farin, pp. 29, 36.
^ Farin, p. 36.
^ Farin, pp. 28-29, 36.
^ SU, BUCHIN; LIU, DINGYUAN (March 1983). “AN AFFINE INVARIANT THEORY AND ITS APPLICATION IN COMPUTATIONAL GEOMETRY” . Science in China Series A-Mathematics, Physics, Astronomy & Technological Science 26 (3): 259-263. https://www.sciengine.com/Math%20A1/doi/10.1360/ya1983-26-3-259 .
^ Farin, pp. 36-37.
^ Farin, p. 37.
^ "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.
^ Stone, Maureen C.; DeRose, Tony D. (July 1989). “A Geometric Characterization of Parametric Cubic Curves” . ACM Transactions on Graphics 8 (3): 147-163. https://graphics.pixar.com/people/derose/publications/CubicClassification/paper.pdf .
^ Pomax. “The canonical form (for cubic curves) ” (英語). A Primer on Bézier Curves . 2025年7月29日閲覧。
^ Stone, DeRose (1989), p.148, Fig.1 に基づき作成
^ Stone, DeRose (1989), p.152, Fig.4 に基づき作成
^ Stone, DeRose (1989), p.156, Fig.8 に基づき作成
^ 白山風露. “自己交差する3次ベジェ曲線の交差点を求める ”. Zenn . 2025年7月29日閲覧。
^ “3次ベジェ曲線の特異点の解析的導出 ”. Qiita . 2026年1月16日閲覧。
^ “2D cubic Bezier curve. Point of self-intersection ” (英語). Stack Exchange - Mathematics . 2025年7月29日閲覧。
^ 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. (July 25, 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 .
^ “Implicitization法によるベジェ曲線の交点検出 ~ 代数方程式の実用的解法の検討と実装 ~ ”. Qiita . 2025年12月19日閲覧。
^ a b "ベジェスプライン曲線を用いる利点 ... 制御点の影響の局所性により制御点を編集した際の影響を曲線の一部分に限定できる" p.4 より引用。中野. (2002). 利用者の動作と連動する仮想ファッション . インタラクション2002論文集, pp.231-238.
^ 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
参考文献
編集
関連項目
編集
ウィキメディア・コモンズには、
ベジェ曲線 に関連するカテゴリがあります。
外部リンク
編集