具体的な事例 ベジェ曲線は、制御点 P₀ から Pₙ までのシーケンスによって定義されます。 ここで、n は曲線の次数と呼ばれます ( n = 1 は線形、2 は二次、3 は三次など)。最初と最後の制御点は常に曲線の端点ですが、中間の制御点は一般的に曲線上にはありません。以下のセクションの合計はアフィン結合 として理解してください。つまり、係数の合計は 1 になります。
線形ベジェ曲線異なる点P 0 とP 1 が与えられた場合、線形ベジェ曲線は単純にこれら 2 点間の直線 です。曲線は次のように表されます。
B ( t ) = P 0 + t ( P 1 − P 0 ) = ( 1 − t ) P 0 + t P 1 、 0 ≤ t ≤ 1 {\displaystyle \mathbf {B} (t)=\mathbf {P} _{0}+t(\mathbf {P} _{1}-\mathbf {P} _{0})=(1-t)\mathbf {P} _{0}+t\mathbf {P} _{1},\ 0\leq t\leq 1} これは最も単純な方法で、線形補間 と同等です。[ 8 ] 量P 1 − P 0 {\displaystyle \mathbf {P} _{1}-\mathbf {P} _{0}} これは、始点から終点までの変位ベクトル を表します。
二次ベジェ曲線ストリングアート における二次ベジェ曲線:終点(• )と制御点(× )が二次ベジェ曲線(⋯ )を定義します。二次ベジェ曲線は、点P 0 、P 1 、P 2が与えられたときの 関数 B ( t )によって描かれる経路です。
B ( t ) = ( 1 − t ) [ ( 1 − t ) P 0 + t P 1 ] + t [ ( 1 − t ) P 1 + t P 2 ] 、 0 ≤ t ≤ 1 {\displaystyle \mathbf {B} (t)=(1-t)[(1-t)\mathbf {P} _{0}+t\mathbf {P} _{1}]+t[(1-t)\mathbf {P} _{1}+t\mathbf {P} _{2}],\ 0\leq t\leq 1} 、これは、それぞれ P0 からP1 、および P1 からP2 への線形ベジェ曲線上の対応する点の線形補間 として解釈できます。上記の式を整理すると、次のようになり ます 。
B ( t ) = ( 1 − t ) 2 P 0 + 2 ( 1 − t ) t P 1 + t 2 P 2 、 0 ≤ t ≤ 1. {\displaystyle \mathbf {B} (t)=(1-t)^{2}\mathbf {P} _{0}+2(1-t)t\mathbf {P} _{1}+t^{2}\mathbf {P} _{2},\ 0\leq t\leq 1.} これは、 P 1 に関して対称性を強調する形で記述することができる。
B ( t ) = P 1 + ( 1 − t ) 2 ( P 0 − P 1 ) + t 2 ( P 2 − P 1 ) 、 0 ≤ t ≤ 1. {\displaystyle \mathbf {B} (t)=\mathbf {P} _{1}+(1-t)^{2}(\mathbf {P} _{0}-\mathbf {P} _{1})+t^{2}(\mathbf {P} _{2}-\mathbf {P} _{1}),\ 0\leq t\leq 1.} これにより、ベジェ曲線のt に関する導関数 が直ちに得られます。
B ′ ( t ) = 2 ( 1 − t ) ( P 1 − P 0 ) + 2 t ( P 2 − P 1 ) 、 {\displaystyle \mathbf {B} '(t)=2(1-t)(\mathbf {P} _{1}-\mathbf {P} _{0})+2t(\mathbf {P} _{2}-\mathbf {P} _{1}),} このことから、曲線の点P 0 とP 2における 接線は 点 P 1 で交わると結論付けられる。t が 0 から 1 に増加すると、 曲線はP 0から P 1 の方向に離れ、その後曲がってP 1 の方向からP 2 に到達する。
ベジェ曲線のt に関する2階微分は
B 」 ( t ) = 2 ( P 2 − 2 P 1 + P 0 ) 。 {\displaystyle \mathbf {B} ''(t)=2(\mathbf {P} _{2}-2\mathbf {P} _{1}+\mathbf {P} _{0}).}
3次ベジェ曲線平面または高次元空間上の4点P₀ 、P₁ 、P₂ 、P₃ は 、 3 次ベジェ曲線 を定義します。曲線は P₀から始まり、 P₁ に向かって進み、P₂の方向からP₃ に 到達します。通常、曲線は P₁ やP₂ を 通過しません。これらの点は方向情報を提供するためだけに存在します。P₁ と P₂ の間の距離は、曲線が P₂ に 向かって曲がる前にP₁ に 向かって「どれだけ遠くまで」「どれだけ速く」移動するかを決定 し ます 。
点P i 、 P j 、 P kで定義される二次ベジェ曲線をB P i 、P j 、P k ( t ) と表記すると、三次ベジェ曲線は、2 つの二次ベジェ曲線のアフィン結合として定義できます。
B ( t ) = ( 1 − t ) B P 0 、 P 1 、 P 2 ( t ) + t B P 1 、 P 2 、 P 3 ( t ) 、 0 ≤ t ≤ 1. \displaystyle \mathbf {B} (t)=(1-t)\mathbf {B} _{\mathbf {P} _{0},\mathbf {P} _{1},\mathbf {P} _{2}}(t)+t\mathbf {B} _{\mathbf {P} _{1},\mathbf {P} _{2},\mathbf {P} _{3}}(t),\ 0\leq t\leq 1.} 曲線の明示的な形式は次のとおりです。
B ( t ) = ( 1 − t ) 3 P 0 + 3 ( 1 − t ) 2 t P 1 + 3 ( 1 − t ) t 2 P 2 + t 3 P 3 、 0 ≤ t ≤ 1. {\displaystyle \mathbf {B} (t)=(1-t)^{3}\mathbf {P} _{0}+3(1-t)^{2}t\mathbf {P} _{1}+3(1-t)t^{2}\mathbf {P} _{2}+t^{3}\mathbf {P} _{3},\ 0\leq t\leq 1.} P 1 とP 2 の選択肢によっては、曲線が自己交差したり、尖点 を含む場合があります。
4つの異なる点の任意の系列は、4つの点を順番に通る3次ベジェ曲線に変換できます。ある3次ベジェ曲線の始点と終点、およびt = 1/3とt = 2/3に対応する曲線上の点が与えられれば、元のベジェ曲線の制御点を復元できます。[ 9 ]
3次ベジェ曲線のt に関する導関数は
B ′ ( t ) = 3 ( 1 − t ) 2 ( P 1 − P 0 ) + 6 ( 1 − t ) t ( P 2 − P 1 ) + 3 t 2 ( P 3 − P 2 ) 。 {\displaystyle \mathbf {B} '(t)=3(1-t)^{2}(\mathbf {P} _{1}-\mathbf {P} _{0})+6(1-t)t(\mathbf {P} _{2}-\mathbf {P} _{1})+3t^{2}(\mathbf {P} _{3}-\mathbf {P} _{2})\,.} ベジェ曲線のt に関する2階微分は
B 」 ( t ) = 6 ( 1 − t ) ( P 2 − 2 P 1 + P 0 ) + 6 t ( P 3 − 2 P 2 + P 1 ) 。 {\displaystyle \mathbf {B} ''(t)=6(1-t)(\mathbf {P} _{2}-2\mathbf {P} _{1}+\mathbf {P} _{0})+6t(\mathbf {P} _{3}-2\mathbf {P} _{2}+\mathbf {P} _{1})\,.} 制御経路(点線の黒線)が2つの合同な二等辺三角形 (青)を形成する3次ベジェ曲線(赤)は、チルンハウゼン3次曲線 の弧の形をとります。連続する3つの点が同じ向きの2つの相似な三角形 を形成する制御点の場合、結果として得られる3次ベジェ曲線は、(スケーリングおよび平行移動された)チルンハウゼン3次曲線 の弧になります。これらはピタゴラスホドグラフ曲線 であり、弧長 とオフセット曲線 が有理数でパラメータ化される曲線であり、これらの特性を持つ唯一の3次曲線です。[ 10 ]
一般的な定義 ベジェ曲線は任意の次数n に対して定義できます。
再帰的定義 n次 ベジェ曲線の再帰的な定義では、 n - 1次ベジェ曲線の対応する2点の点対点の線形結合 (線形補間)として表されます。
させてB P 0 P 1 … P k {\displaystyle \mathbf {B} _{\mathbf {P} _{0}\mathbf {P} _{1}\ldots \mathbf {P} _{k}}} 任意の点P 0 、P 1 、 ...、P k の選択によって決定されるベジェ曲線を表す。次に、
B P 0 ( t ) = P 0 、 そして \displaystyle \mathbf {B} _{\mathbf {P} _{0}}(t)=\mathbf {P} _{0}{\text{、および}}} B ( t ) = B P 0 P 1 … P n ( t ) = ( 1 − t ) B P 0 P 1 … P n − 1 ( t ) + t B P 1 P 2 … P n ( t ) \displaystyle \mathbf {B} (t)=\mathbf {B} _{\mathbf {P} _{0}\mathbf {P} _{1}\ldots \mathbf {P} _{n}}(t)=(1-t)\mathbf {B} _{\mathbf {P} _{0}\mathbf {P} _{1}\ldots \mathbf {P} _{n-1}}(t)+t\mathbf {B} _{\mathbf {P} _{1}\mathbf {P} _{2}\ldots \mathbf {P} _{n}}(t)} この再帰は、以下の動画 で詳しく説明されています。
明示的な定義 この式は、次のように明示的に表すことができます(ここで、t 0 および (1-t) 0 は、[0,1] 全体で連続的に 1 に拡張されます)。
B ( t ) = ∑ 私 = 0 n ( n 私 ) ( 1 − t ) n − 私 t 私 P 私 = ( 1 − t ) n P 0 + ( n 1 ) ( 1 − t ) n − 1 t P 1 + ⋯ + ( n n − 1 ) ( 1 − t ) t n − 1 P n − 1 + t n P n 、 0 ⩽ t ⩽ 1 {\displaystyle {\begin{aligned}\mathbf {B} (t)&=\sum _{i=0}^{n}{n \choose i}(1-t)^{ni}t^{i}\mathbf {P} _{i}\\&=(1-t)^{n}\mathbf {P} _{0}+{n \choose 1}(1-t)^{n-1}t\mathbf {P} _{1}+\cdots +{n \choose n-1}(1-t)t^{n-1}\mathbf {P} _{n-1}+t^{n}\mathbf {P} _{n},&&0\leqslant t\leqslant 1\end{aligned}}} どこ( n 私 ) {\displaystyle \scriptstyle {n \choose i}} は二項係数 です。
例えば、n = 5 の場合:
B ( t ) = ( 1 − t ) 5 P 0 + 5 t ( 1 − t ) 4 P 1 + 10 t 2 ( 1 − t ) 3 P 2 + 10 t 3 ( 1 − t ) 2 P 3 + 5 t 4 ( 1 − t ) P 4 + t 5 P 5 、 0 ⩽ t ⩽ 1. {\displaystyle {\begin{aligned}\mathbf {B} (t)&=(1-t)^{5}\mathbf {P} _{0}+5t(1-t)^{4}\mathbf {P} _{1}+10t^{2}(1-t)^{3}\mathbf {P} _{2}+10t^{3}(1-t)^{2}\mathbf {P} _{3}+5t^{4}(1-t)\mathbf {P} _{4}+t^{5}\mathbf {P} _{5},&&0\leqslant t\leqslant 1.\end{aligned}}}
用語 これらのパラメトリック曲線にはいくつかの用語が関連付けられています。
B ( t ) = ∑ 私 = 0 n b 私 、 n ( t ) P 私 、 0 ≤ t ≤ 1 {\displaystyle \mathbf {B} (t)=\sum _{i=0}^{n}b_{i,n}(t)\mathbf {P} _{i},\ \ \ 0\leq t\leq 1} 多項式
b 私 、 n ( t ) = ( n 私 ) t 私 ( 1 − t ) n − 私 、 私 = 0 、 … 、 n {\displaystyle b_{i,n}(t)={n \choose i}t^{i}(1-t)^{ni},\ \ \ i=0,\ldots ,n} これらは次数nの ベルンシュタイン基底多項式 として知られています。
t 0 = 1、(1 − t ) 0 = 1、二項係数 、 ( n 私 ) {\displaystyle \scriptstyle {n \choose i}} 、 は:
( n 私 ) = n ! 私 ! ( n − 私 ) ! 。 {\displaystyle {n \choose i}={\frac {n!}{i!(ni)!}}.} 点P i はベジェ曲線の制御点 と呼ばれます。P 0 から P n までベジェ点を線で結んで形成される多角形は、ベジェ 多角 形(または 制御 多角 形 )と 呼ばれます。ベジェ多角形の凸包は ベジェ曲線を含みます。
ベジェ曲線を、より複雑なベルンシュタイン多項式 の和ではなく、多項式 として表現することが望ましい場合がある。曲線の定義に二項定理を適用し、いくつかの式を整理すると、次の式が得られる。
B ( t ) = ∑ j = 0 n t j C j {\displaystyle \mathbf {B} (t)=\sum _{j=0}^{n}{t^{j}\mathbf {C} _{j}}} どこ
C j = n ! ( n − j ) ! ∑ 私 = 0 j ( − 1 ) 私 + j P 私 私 ! ( j − 私 ) ! = ∏ m = 0 j − 1 ( n − m ) ∑ 私 = 0 j ( − 1 ) 私 + j P 私 私 ! ( j − 私 ) ! 。 {\displaystyle \mathbf {C} _{j}={\frac {n!}{(n-j)!}}\sum _{i=0}^{j}{\frac {(-1)^{i+j}\mathbf {P} _{i}}{i!(j-i)!}}=\prod _{m=0}^{j-1}(n-m)\sum _{i=0}^{j}{\frac {(-1)^{i+j}\mathbf {P} _{i}}{i!(j-i)!}}.} これは実用的かもしれないC j {\displaystyle \mathbf {C} _{j}} 多くの評価の前に計算することができますB ( t ) {\displaystyle \mathbf {B} (t)} ただし、高次の曲線は数値的に不安定 になる可能性があるため、注意が必要です(このような場合は、ド・カステリョーのアルゴリズムを 使用する必要があります)。なお、空積 は1です。
物件 3次ベジェ曲線(黄色)は、次の方法で2次ベジェ曲線(黒色)と同一にすることができます。 1. 終点をコピーし、
2. 2つの中央制御点(黄色の円)を、端点から二次曲線の中央制御点(黒い長方形)までの線分の3の位置に配置します。
曲線はP 0 {\displaystyle \mathbf {P} _{0}} そして、P n {\displaystyle \mathbf {P} _{n}} これは、いわゆる端点補間 特性です。 曲線が直線であるのは、すべての制御点が同一直線上にある 場合に限る 。 曲線の始点と終点は、それぞれベジェ多角形の最初の部分と最後の部分に接している。 曲線は任意の点で2つの部分曲線に分割することも、任意の数の部分曲線に分割することもでき、それぞれの部分曲線もまたベジェ曲線である。 円 のように単純に見える曲線の中には、ベジェ曲線や区分的 ベジェ曲線で正確に表現できないものもあります。ただし、4つの部分からなる3次ベジェ曲線は円を近似することができ(複合ベジェ曲線 を参照)、各内部制御点(またはオフライン点)が距離である場合、半径方向の誤差は1000分の1未満になります。4 ( 2 − 1 ) 3 {\displaystyle \textstyle {\frac {4\left({\sqrt {2}}-1\right)}{3}}} 単位円 上の外側の制御点から水平方向または垂直方向に。より一般的には、n 個のセグメントからなる 3次ベジェ曲線は、各内側の制御点が距離である場合、円を近似することができます。4 3 タン ( t / 4 ) {\displaystyle \textstyle {\frac {4}{3}}\tan(t/4)} 単位円上の外側制御点から、 t = 2 π / n {\textstyle t=2\pi /n} (つまり)t = 360 ∘ / n {\displaystyle t=360^{\circ }/n} )、 そしてn > 2 {\displaystyle n>2} 。すべての二次ベジェ曲線は三次ベジェ曲線でもあり、より一般的には、任意のn 次ベジェ曲線は、任意のm > n に対してm 次曲線でもあります。詳細には、制御点を持つn次曲線は、 P 0 、 … 、 P n {\displaystyle \mathbf {P} _{0},\,\dots ,\,\mathbf {P} _{n}} (パラメータ化を含めて)制御点を持つ次数n + 1 の曲線と等価であるP 0 ′ 、 … 、 P n + 1 ′ {\displaystyle \mathbf {P} '_{0},\,\dots ,\,\mathbf {P} '_{n+1}} 、 どこP k ′ = k n + 1 P k − 1 + ( 1 − k n + 1 ) P k {\displaystyle \mathbf {P} '_{k}={\tfrac {k}{n+1}}\mathbf {P} _{k-1}+\left(1-{\tfrac {k}{n+1}}\right)\mathbf {P} _{k}} 、∀ k = 0 、 1 、 … 、 n 、 n + 1 {\displaystyle \forall k=0,\,1,\,\dots ,\,n,\,n+1} そして定義するP n + 1 := P 0 {\displaystyle \mathbf {P} _{n+1}:=\mathbf {P} _{0}} 、P − 1 := P n {\displaystyle \mathbf {P} _{-1}:=\mathbf {P} _{n}} 。 ベジェ曲線は変動減少特性 を持つ。直感的に言えば、ベジェ曲線は制御点の多角形よりも大きく「波打つ」ことはなく、実際にはそれよりも小さく「波打つ」こともある。[ 11 ] n 次ベジェ曲線には局所的な制御 はありません。つまり、制御点を変更すると曲線全体の形状を再計算する必要があり、曲線全体の形状に影響します。「ただし、変更された制御点から遠ければ遠いほど、曲線の変化は小さくなります」。[ 12 ] 2次以上のベジェ曲線は、制御点の選択によっては、自身と交差したり、尖点を持つことがある。
二次曲線は放物線状の線分である 二次ベジェ曲線と放物線セグメントの等価性 二次ベジェ曲線も放物線 の線分です。放物線は円錐曲線 であるため、二次ベジェ曲線を「円錐弧」と呼ぶ資料もあります。[ 13 ] 右の図を参照すると、放物線の重要な特徴は次のように導き出せます。[ 14 ]
放物線の両端点(AとB)における接線は、その制御点(C)で交わる。 Dが線分ABの中点である場合、CDに垂直な 曲線の接線(破線のシアン色)がその頂点(V)を定義します。その対称軸(一点鎖線のシアン色)はVを通り、接線に垂直です。Eは曲線上の点であり、CDに対して45°の接線を持つ(緑色の破線)。Gがこの接線と軸との交点である場合、Gを通りCDに垂直な直線が準線(緑色の実線)となる。 焦点(F)は、軸と、点Eを通りCDに垂直な直線(点線の黄色)との交点にある。正弦線は、曲線内の線分(実線の黄色)である。
デリバティブ n 次の曲線の導関数は
B ′ ( t ) = n ∑ 私 = 0 n − 1 b 私 、 n − 1 ( t ) ( P 私 + 1 − P 私 ) 。 {\displaystyle \mathbf {B} '(t)=n\sum _{i=0}^{n-1}b_{i,n-1}(t)(\mathbf {P} _{i+1}-\mathbf {P} _{i}).}
ベジェ曲線の構築
直線曲線t を、点B ( t ) が P 0から P 1 まで移動した際の進行度 (0 から 1 まで) の割合とします。たとえば、t = 0.25 のとき、B ( t ) は点 P 0から P 1 までの4 分の 1 の地点にあります。tが 0 から 1 まで変化すると、B ( t ) は P 0から P 1 まで線を引きます。
二次曲線 二次ベジェ曲線の場合、tが0から1まで変化するにつれて、中間点Q0とQ1 を 構築すること ができ ます。
点Q 0 ( t ) はP 0から P 1 まで変化し、線形ベジェ曲線を描きます。 点Q 1 ( t ) はP 1から P 2 まで変化し、線形ベジェ曲線を描きます。 点B ( t ) はQ 0 ( t ) からQ 1 ( t ) まで線形補間され、二次ベジェ曲線を描きます。
高次曲線 高次の曲線の場合、それに応じて中間点の数も多くなります。3次曲線の場合、線形ベジェ曲線を表す中間点Q 0 、Q 1 、 Q 2 と、2次ベジェ曲線を表す点R 0 、R 1 を構築できます。
4次曲線の場合、線形ベジェ曲線を表す中間点Q 0 、Q 1 、Q 2 、Q 3、2 次ベジェ曲線を表す点R 0 、R 1 、R 2、3 次ベジェ曲線を表す点S 0 、S 1 を構築できます。
5次曲線についても、同様の中間点を構築することができる。
これらの表現は、ベジェ曲線を計算するためにド・カステリョーのアルゴリズム で使用されるプロセスに基づいています。[ 15 ]
高度 次数n のベジェ曲線は、同じ形状の次数 n + 1のベジェ曲線に変換できます。これは、ソフトウェアが特定の次数のベジェ曲線のみをサポートしている場合に便利です。たとえば、3次ベジェ曲線のみを扱うシステムでも、同等の3次表現を使用することで、2次曲線を暗黙的に扱うことができます。
度数を上げるには、等式を使用します。B ( t ) = ( 1 − t ) B ( t ) + t B ( t ) 。 {\displaystyle \mathbf {B} (t)=(1-t)\mathbf {B} (t)+t\mathbf {B} (t).} 各コンポーネントb 私 、 n ( t ) P 私 {\displaystyle \mathbf {b} _{i,n}(t)\mathbf {P} _{i}} は (1 − t )とt を掛け合わせることで、値を変えずに次数を 1 つ増やします。次数を 2 から3 に増やす例を以下に示します。
( 1 − t ) 2 P 0 + 2 ( 1 − t ) t P 1 + t 2 P 2 = ( 1 − t ) 3 P 0 + 2 ( 1 − t ) 2 t P 1 + ( 1 − t ) t 2 P 2 + ( 1 − t ) 2 t P 0 + 2 ( 1 − t ) t 2 P 1 + t 3 P 2 = ( 1 − t ) 3 P 0 + ( 1 − t ) 2 t ( P 0 + 2 P 1 ) + ( 1 − t ) t 2 ( 2 P 1 + P 2 ) + t 3 P 2 = ( 1 − t ) 3 P 0 + 3 ( 1 − t ) 2 t 1 3 ( P 0 + 2 P 1 ) + 3 ( 1 − t ) t 2 1 3 ( 2 P 1 + P 2 ) + t 3 P 2 {\displaystyle {\begin{aligned}(1-t)^{2}\mathbf {P} _{0}+2(1-t)t\mathbf {P} _{1}+t^{2}\mathbf {P} _{2}&=(1-t)^{3}\mathbf {P} _{0}+2(1-t)^{2}t\mathbf {P} _{1}+(1-t)t^{2}\mathbf {P} _{2}+(1-t)^{2}t\mathbf {P} _{0}+2(1-t)t^{2}\mathbf {P} _{1}+t^{3}\mathbf {P} _{2}\\&=(1-t)^{3}\mathbf {P} _{0}+(1-t)^{2}t\left(\mathbf {P} _{0}+2\mathbf {P} _{1}\right)+(1-t)t^{2}\left(2\mathbf {P} _{1}+\mathbf {P} _{2}\right)+t^{3}\mathbf {P} _{2}\\&=(1-t)^{3}\mathbf {P} _{0}+3(1-t)^{2}t{\tfrac {1}{3}}\left(\mathbf {P} _{0}+2\mathbf {P} _{1}\right)+3(1-t)t^{2}{\tfrac {1}{3}}\left(2\mathbf {P} _{1}+\mathbf {P} _{2}\right)+t^{3}\mathbf {P} _{2}\end{aligned}}} つまり、元の開始点と終了点は変更されません。新しい制御点はP ′ 1 = 1 3 ( P 0 + 2 P 1 ) {\displaystyle \mathbf {P'} _{1}={\tfrac {1}{3}}\left(\mathbf {P} _{0}+2\mathbf {P} _{1}\right)} そしてP ′ 2 = 1 3 ( 2 P 1 + P 2 ) {\displaystyle \mathbf {P'} _{2}={\tfrac {1}{3}}\left(2\mathbf {P} _{1}+\mathbf {P} _{2}\right)} 。
任意のn に対して等式[ 20 ]を使用します
{ ( n + 1 私 ) ( 1 − t ) b 私 、 n = ( n 私 ) b 私 、 n + 1 ( n + 1 私 + 1 ) t b 私 、 n = ( n 私 ) b 私 + 1 、 n + 1 ⟹ { ( 1 − t ) b 私 、 n = n + 1 − 私 n + 1 b 私 、 n + 1 t b 私 、 n = 私 + 1 n + 1 b 私 + 1 、 n + 1 {\displaystyle {\begin{cases}{n+1 \choose i}(1-t)\mathbf {b} _{i,n}={n \choose i}\mathbf {b} _{i,n+1}\\{n+1 \choose i+1}t\mathbf {b} _{i,n}={n \choose i}\mathbf {b} _{i+1,n+1}\end{cases}}\quad \implies \quad {\begin{cases}(1-t)\mathbf {b} _{i,n}={\frac {n+1-i}{n+1}}\mathbf {b} _{i,n+1}\\t\mathbf {b} _{i,n}={\frac {i+1}{n+1}}\mathbf {b} _{i+1,n+1}\end{cases}}} したがって:
B ( t ) = ( 1 − t ) ∑ 私 = 0 n b 私 、 n ( t ) P 私 + t ∑ 私 = 0 n b 私 、 n ( t ) P 私 = ∑ 私 = 0 n n + 1 − 私 n + 1 b 私 、 n + 1 ( t ) P 私 + ∑ 私 = 0 n 私 + 1 n + 1 b 私 + 1 、 n + 1 ( t ) P 私 = ∑ 私 = 0 n + 1 ( 私 n + 1 P 私 − 1 + n + 1 − 私 n + 1 P 私 ) b 私 、 n + 1 ( t ) = ∑ 私 = 0 n + 1 b 私 、 n + 1 ( t ) P ′ 私 {\displaystyle {\begin{aligned}\mathbf {B} (t)&=(1-t)\sum _{i=0}^{n}\mathbf {b} _{i,n}(t)\mathbf {P} _{i}+t\sum _{i=0}^{n}\mathbf {b} _{i,n}(t)\mathbf {P} _{i}\\&=\sum _{i=0}^{n}{\frac {n+1-i}{n+1}}\mathbf {b} _{i,n+1}(t)\mathbf {P} _{i}+\sum _{i=0}^{n}{\frac {i+1}{n+1}}\mathbf {b} _{i+1,n+1}(t)\mathbf {P} _{i}\\&=\sum _{i=0}^{n+1}\left({\frac {i}{n+1}}\mathbf {P} _{i-1}+{\frac {n+1-i}{n+1}}\mathbf {P} _{i}\right)\mathbf {b} _{i,n+1}(t)\\&=\sum _{i=0}^{n+1}\mathbf {b} _{i,n+1}(t)\mathbf {P'} _{i}\end{aligned}}} 任意に導入するP − 1 {\displaystyle \mathbf {P} _{-1}} そしてP n + 1 {\displaystyle \mathbf {P} _{n+1}} 。
したがって、新しい制御点は[ 20 ]
P ′ 私 = 私 n + 1 P 私 − 1 + n + 1 − 私 n + 1 P 私 、 私 = 0 、 … 、 n + 1. {\displaystyle \mathbf {P'} _{i}={\frac {i}{n+1}}\mathbf {P} _{i-1}+{\frac {n+1-i}{n+1}}\mathbf {P} _{i},\quad i=0,\ldots ,n+1.}
繰り返し角度を上げる 度高の概念は、制御多角形R 上で繰り返され、一連の制御多角形R 、R 1 、R 2 などが得られます。r 度の高高の後、多角形R rは、 [ 20 ] で与えられる頂点P 0, r 、P 1, r 、P 2, r 、 ..., P n + r 、r を持ちます。
P 私 、 r = ∑ j = 0 n P j ( n j ) ( r 私 − j ) ( n + r 私 ) 。 {\displaystyle \mathbf {P} _{i,r}=\sum _{j=0}^{n}\mathbf {P} _{j}{\tbinom {n}{j}}{\frac {\tbinom {r}{i-j}}{\tbinom {n+r}{i}}}.} また、基となるベジェ曲線B については、
リム r → ∞ R r = B 。 {\displaystyle \mathbf {\lim _{r\to \infty }R_{r}} =\mathbf {B} .}
度数減少 次数削減は、問題の曲線が元々より低い次数から引き上げられた場合にのみ正確に実行できます。[ 21 ] いくつかの近似アルゴリズムが提案され、実際に使用されています。[ 22 ] [ 23 ]
有理ベジェ曲線円錐曲線のセグメントは、有理ベジェ曲線によって正確に表現される。 有理ベジェ曲線は、任意の形状により近い近似値を提供するために調整可能な重みを追加します。分子は重み付きベルンシュタイン形式のベジェ曲線であり、分母は重み付きベルンシュタイン多項式 の和です。有理ベジェ曲線は、円弧を含む円錐曲線 のセグメントを正確に表現するために使用できます。 [ 24 ]
n + 1個の制御点P 0 , ..., P n が与えられた場合、有理ベジェ曲線は次のように記述できます。
B ( t ) = ∑ 私 = 0 n b 私 、 n ( t ) P 私 w 私 ∑ 私 = 0 n b 私 、 n ( t ) w 私 、 {\displaystyle \mathbf {B} (t)={\frac {\sum _{i=0}^{n}b_{i,n}(t)\mathbf {P} _{i}w_{i}}{\sum _{i=0}^{n}b_{i,n}(t)w_{i}}},} または単に
B ( t ) = ∑ 私 = 0 n ( n 私 ) t 私 ( 1 − t ) n − 私 P 私 w 私 ∑ 私 = 0 n ( n 私 ) t 私 ( 1 − t ) n − 私 w 私 。 {\displaystyle \mathbf {B} (t)={\frac {\sum _{i=0}^{n}{n \choose i}t^{i}(1-t)^{n-i}\mathbf {P} _{i}w_{i}}{\sum _{i=0}^{n}{n \choose i}t^{i}(1-t)^{n-i}w_{i}}}.} この式は、重みに実数 以外の数体系を使用することで拡張できます。複素平面 では、重みが { の点 {1}、{-1}、および {1} は、私 {\displaystyle i} }、{1}、および{− 私 {\displaystyle -i} 半径 1 の完全な円を生成します。円上の点と重みを持つ曲線の場合、曲線の形状を変更せずに重みをスケーリングできます。[ 25 ] 上記の曲線の中心重みを 1.35508 倍にスケーリングすると、より均一なパラメータ化が得られます。
アプリケーション
コンピュータグラフィックス Adobe Illustrator のベジェパスベジェ曲線は、滑らかな曲線をモデル化するためにコンピュータグラフィックスで広く用いられています。曲線は制御点 の凸包 内に完全に含まれるため、制御点をグラフィカルに表示し、曲線を直感的に操作することができます。平行移動 や回転 などのアフィン変換は 、曲線の制御点にそれぞれの変換を適用することで、曲線に適用できます。
2次 および3次の ベジェ曲線が最も一般的です。次数が高い曲線は、評価に計算コストが 高くなります。より複雑な形状が必要な場合は、低次のベジェ曲線をパッチして、複合ベジェ曲線 を作成します。複合ベジェ曲線は、ベクターグラフィックス 言語(PostScript など)、ベクターグラフィックス規格(SVG など)、およびベクターグラフィックスプログラム(Artline 、Timeworks Publisher 、Adobe Illustrator 、CorelDraw 、Inkscape 、Allegro など)では、一般的に「パス」と呼ばれます。ベジェ曲線をキンクなしで複合ベジェ曲線に結合するには、G1連続性 と呼ばれるプロパティで十分です。これにより、2つの構成要素ベジェ曲線が交わる制御点が、両側の2つの制御点によって定義される線上に位置するようになります。
3Dでレイトレーシングされた3次ベジェ曲線の抽象的な構成。曲線に沿って掃引されたボリュームとレイの交差は、ファントムレイヘアインターセクターアルゴリズムを使用して計算されます。[ 26 ] ベジェ曲線をスキャン変換(ラスタライズ )する最も簡単な方法は、多数の近接した点で曲線を評価し、近似する線分列をスキャン変換することです。ただし、点の間隔が広すぎる可能性があるため、ラスタライズされた出力が十分に滑らかに見えるとは限りません。逆に、曲線が直線に近い領域では、点が多すぎる可能性があります。一般的な適応法は再帰的細分化であり、曲線の制御点をチェックして、曲線が小さな許容範囲内で直線に近似しているかどうかを確認します。近似していない場合は、曲線はパラメトリックに 0 ≤ t ≤ 0.5 と 0.5 ≤ t ≤ 1 の 2 つのセグメントに細分化され、同じ手順が各半分に再帰的に適用されます。前方差分法もありますが、誤差伝播の分析には細心の注意を払う必要があります。[ 27 ]
ベジェ曲線と各走査線を交差させる解析的手法では、3次多項式の 根 (3次ベジェ曲線の場合)を求め、複数の根を扱う必要があるため、実際にはあまり使用されていません。[ 27 ]
Metafont で使用されるラスタライズアルゴリズムは、曲線を離散化することに基づいています。つまり、ピクセル 境界に沿って、純粋に垂直または純粋に水平な一連の「ルークの 動き」によって近似されます。そのために、まず平面は8つの45°セクター(座標軸と2本の線によって)に分割されます。y = ± x {\displaystyle y=\pm x} )、次に曲線は、曲線セグメントの方向 が 1 つのセクター内に留まるように、より小さなセグメントに分解されます。曲線速度は 2 次多項式であるため、t {\displaystyle t} これらの線のいずれかに平行な値は、二次方程式 を解くことによって求めることができます。各セグメント内では、水平方向または垂直方向の移動が支配的であり、どちらの方向へのステップの総数は、終点の座標から読み取ることができます。たとえば、0~45°セクターでは右方向への水平移動が支配的であるため、曲線が右方向にどのステップの間でステップアップするかを決定するだけで済みます。[ 28 ]
また、Zingl によるBresenham の線描画アルゴリズム の修正曲線形式もあり、これは曲線を有理数に分割し、各ピクセル位置での誤差を計算することでラスタライズを実行します。これにより、曲線に沿って反復される際の複合誤差に応じて、45° の角度で移動するか、直線で移動します。これにより、次のステップの計算は一連の整数 加算と減算に削減されます。[ 29 ]
フォント TrueType フォントは、二次ベジェ曲線で構成される複合ベジェ曲線を使用します。他の言語や画像ツール(PostScript 、Asymptote 、Metafont 、SVG など)は、曲線形状を描画するために三次ベジェ曲線で構成される複合ベジェ曲線を使用します。OpenTypeフォントは、 OpenTypeラッパーの基盤となるフォント技術に応じて、どちらの種類の曲線も使用できます。[ 33 ]
FreeType などのフォント エンジンは、フォント ラスタライズ と呼ばれるプロセスを使用して、ピクセル化されたサーフェス上にフォントの曲線 (および線) を描画します。[ 13 ] 通常、フォント エンジンとベクター グラフィックス エンジンは、ベジェ曲線を再帰的に分割して、曲線が直線または円弧のセグメントの連続として描画できるほど平坦になるまで、ベジェ曲線をレンダリングします。正確な分割アルゴリズムは実装に依存しますが、必要な精度を達成し、曲率の非単調な局所的変化を避けるために、平坦性の基準のみを遵守する必要があります。Microsoft Excel のグラフの「滑らかな曲線」機能もこのアルゴリズムを使用しています。[ 34 ]
円弧や楕円弧 はベジェ曲線で正確に表現できないため、まずベジェ曲線で近似し、次に円弧で近似します。しかし、円弧や楕円弧を用いたすべてのベジェ曲線の近似も存在し、これらは任意の精度で段階的にレンダリングできるため、この方法は非効率的です。一方、最新のハードウェアグラフィックスアダプタで採用されている、ジオメトリを高速化する手法では、すべてのベジェ曲線と円錐曲線(または曲面)をNURBS に正確に変換し、必要な平面度条件を満たすために曲線を再帰的に分割することなく段階的にレンダリングできます。この手法では、すべての線形または透視的な2Dおよび3D変換と投影においても曲線の定義が維持されます。
ロボット工学 制御ポリゴンによって経路が障害物と衝突するかどうかを判断できるため、エンドエフェクタ の軌道生成にはベジェ曲線が使用されます。[ 35 ] さらに、ベジェ曲線を使用すると、関節空間軌道を正確に微分できます。したがって、関節空間軌道の微分は、ロボットマニピュレータのダイナミクスと制御力(トルクプロファイル)の計算に使用されます。[ 35 ]
参考文献
引用文献 ↑ ウェルズ、ジョン (2008年4月3日)。ロングマン発音辞典 (第3 版)。ピアソン・ロングマン。ISBN 978-1-4058-8118-0 。↑ モーテンソン、マイケル E. (1999). コンピュータグラフィックスアプリケーションのための数学 . インダストリアルプレス社、p. 264. ISBN 9780831131111 。1 2 3 ハゼウィンケル、ミヒール (1997). 数学百科事典:補遺 。第 1 巻。 シュプリンガー ・サイエンス&ビジネス・メディア。p. 119。ISBN 9780792347095 。1 2 "Cubic クラス - アニメーション ライブラリ - Dart API" . api.flutter.dev . 2021-04-26 に取得. ↑ Biswas, Pradipta; Langdon, Pat (2015-04-03). "マルチモーダルインテリジェント視線追跡システム". International Journal of Human-Computer Interaction . 31 (4): 277–294 . doi : 10.1080/10447318.2014.1001301 . ISSN 1044-7318 . S2CID 36347027 . ↑ ジェラルド・E・ファリン、ヨゼフ・ホシェック、ミョンス・キム(2002)。 コンピュータ支援幾何設計ハンドブック 。エルゼビア。4 ~ 6ページ 。ISBN 978-0-444-51104-1 。↑ ポール・ド・カステルジョー (1986)。 数学と CAO。第 2 巻 : ポールの形 。エルメス。 ISBN 9782866010423 。↑ マリオ・A・グティエレス。フレデリック・ヴェクソ。ダニエル・タルマン (2023)。 仮想現実へのステップ 。スプリンガーの自然。 p. 33.ISBN 9783031364877 。↑ ジョン・バーカート。 「ベジェ補間を強制する」 。2013年12月25日に オリジナル からアーカイブ済み 。 ↑ Farouki, Rida T. (2008). Pythagorean-Hodograph Curves: Algebra and Geometry Inseparable . Geometry and Computing. Vol. 1. Springer. pp. 384, 400–404 . doi : 10.1007/978-3-540-73398-0 . ISBN 978-3-540-73397-3 MR 2365013 . ↑ Teofilo Gonzalez ; Jorge Diaz-Herrera; Allen Tucker (2014). Computing Handbook, Third Edition: Computer Science and Software Engineering . CRC Press. 32-14 ページ 。ISBN 978-1-4398-9852-9 。↑ Max K. Agoston (2005). Computer Graphics and Geometric Modelling: Implementation & Algorithms . Springer Science & Business Media. p. 404. ISBN 978-1-84628-108-2 。1 2 「FreeType グリフ規則 / VI. FreeType アウトライン」 。Free Type Project。2018 年 2 月 13 日。 「FreeTypeグリフ規則 – バージョン2.1 / VI. FreeTypeアウトライン」 。2011年3月6日。2011年9月29日のオリジナルからアーカイブ済み。 ↑ ダンカン・マーシュ (2005). コンピュータグラフィックスとCADのための応用幾何学 . Springer Undergraduate Mathematics Series (第2 版). ISBN 978-1-85233-801-5 . ASIN 1852338016 . ↑ Shene、CK 「ベジェ曲線上の点の検索: ド カステルジョーのアルゴリズム」 。 2012 年 9 月 6 日 に取得 。 1 2 マーク・キルガード(2012年4月10日)。 「CS 354 ベクターグラフィックスとパスレンダリング」 。p. 28。 ↑ Rida T. Farouki. 「ピタゴラスホドグラフ曲線入門」 (PDF) 。 2015年6月5日に オリジナル (PDF) からアーカイブ済み。 特に 16ページの「オフセット曲線の分類」を参照。↑ 例: オストロモウホフ、ビクター。「オフセット曲線計算のためのエルミート近似 (PDF)」 。CiteSeerX 10.1.1.43.1724 。 Kilgard, Mark J.; Moreton, Henry Packard (2011年11月24日)。「US20110285719A1 ストロークされた高次曲線セグメントの二次ベジェ曲線セグメントによる近似」。Google Patents 。 概説については、Elber, G. (1997 年 5 月) 「オフセット曲線近似法の比較」 (PDF) . IEEE Computer Graphics and Applications . 17 (3): 62– 71. doi : 10.1109/38.586019 を参照。 ↑ Richard J. Kinch (1995). "MetaFog: Metafont の形状を輪郭に変換する" (PDF) . TUGboat . 16 (3–1995 年年次会議議事録)。2022 年 10 月 9 日にオリジナルから アーカイブ (PDF) 。 1 2 3 Farin, Gerald (1997). Curves and surfaces for computer-aided geometric design (4 ed.). Elsevier Science & Technology Books. ISBN 978-0-12-249054-5 。↑ 「ベジェ スプライン」 。 FontForge 20230101 ドキュメント 。 ↑ Eck, Matthias ( 1993 年 8月)「ベジェ曲線の次数削減」 Computer Aided Geometric Design.10 ( 3–4 ) : 237–251.doi: 10.1016 / 0167-8396(93)90039-6 . ↑ ラババ、アベダラ。イブラヒム、サリス (2018)。 「ベジェ曲線の幾何次数削減」。 数学とコンピューティング 。 ICMC 2018、インド、バラナシ。 pp. 87–95 . 土井 : 10.1007/978-981-13-2095-8_8 。 ISBN 978-981-13-2094-1 。↑ Neil Dodgson (2000-09-25). "グラフィックスの数学的要素:有理Bスプライン" . 2009-02-23 に取得。 ↑ J. Sánchez-Reyes (2009年11月)「複雑な有理ベジェ曲線」 Computer Aided Geometric Design . 26 (8): 865–876 . doi : 10.1016/j.cagd.2009.06.003 . ↑ Alexander Reshetov および David Luebke、「Phantom Ray-Hair Intersector」。ACM のコンピュータグラフィックスおよびインタラクティブ技術に関する論文集(2018 年 8 月 1 日)。 1 2 リー・シュエシャン&シュエ・ジュンシャオ。 「単位円上の複素二次ベジェ曲線」 。中国、鄭州: 鄭州大学ソフトウェア学部。 ↑ ドナルド・E・クヌース著 『メタフォント:プログラム』 (1986年) 第19~22部。アディソン・ウェスリー社 。ISBN 0-201-13438-1 。 ↑ Zingl, Alois (2012). 曲線描画のためのラスタライズアルゴリズム (PDF) (レポート). HTML 要約とデモ: Zingl、Alois (2016)。 「ブレゼンハム」 。 members.chello.at 。 ↑ 「アニメーションにおけるモーションパスの使用」 Adobe 。 2019年4月11日 取得 。 ↑ 「スプラインに沿って」 . Synfig Wiki . 2019年4月11日 取得。 ↑ ドッジソン、ニール A. (1999). "Advanced Graphics Lecture Notes" (PDF) . cl.cam.ac.uk . ケンブリッジ大学コンピュータ研究所。 2022年10月9日にオリジナルから アーカイブ (PDF) 。 ↑ 「CFFとTTFの違い」 。Know How。Linotype 。 2017年7月3日に オリジナルからアーカイブ 。 2018年 7月3日 に取得。OpenType フォーマットは1996年に策定されました。2003年までに、競合する2つのフォーマット、Adobeが開発し[P]opst[S]scriptに基づくType1フォントと、MicrosoftとAppleが規定したTrueTypeフォントに取って代わり始めました。(...) TTFはTrueTypeFontの略で、フォントデータがTrueTypeフォントと同じであることを示しています。CFFはType1フォントフォーマットの略です。厳密に言えば、Type2フォントの圧縮プロセスで使用されるCompact Font Formatを指します。(...) Type1フォントの3次ベジェフォーマットは、TrueTypeフォントの2次フォーマットに比べてスペースを節約できます。大きくて凝ったフォントを使用すると、数キロバイトの容量を節約できるため、Web上では有利になる場合があります。一方で、TrueTypeフォントのより詳細なヒンティング情報は、画面表示における高度な最適化に役立ちます。 ↑ "smooth_curve_bezier_example_file.xls" 。 Rotating Machinery Analysis, Inc 。 2011年7月18日に オリジナル からアーカイブ済み 。 2011年2月5日 に取得。 1 2 Malik, Aryslan; Henderson, Troy; Prazenica, Richard (2021年1月) 「指数積定式化を用いたマルチボディロボットシステムの軌道生成」 AIAA Scitech 2021 Forum : 2016. doi : 10.2514/6.2021-2016 . ISBN 978-1-62410-609-5 . S2CID 234251587 . ↑ Gross, Renan (2014). "Bridges, String Art, and Bézier Curves". In Pitici, Mircea (ed.). The Best Writing on Mathematics 2013. Princeton University Press. pp. 77–89 . doi : 10.1515/9781400847990-011 . ISBN 9780691160412 . JSTOR j.ctt4cgb74.13 .
情報源 Rida T. Farouki (2012年8月) 「ベルンシュタイン多項式基底:100周年回顧」(PDF) . Computer Aided Geometric Design . 29 (6): 379– 419. doi : 10.1016/j.cagd.2012.03.001 . Paul Bourke (2009-07-19). Bézier Surfaces (in 3D) . 2009-07-19 のオリジナルからアーカイブ済み。 ドナルド・クヌース (1986)。メタフォント:プログラム。アディソン・ウェスリー。123 ~ 131ページ。 実装の詳細について優れた解説がなされており、TeXの配布パッケージの一部として無料で入手可能です。Thomas Sederberg.ベジェ曲線 (PDF) 。2006年2月21日にオリジナル(PDF)からアーカイブされました 。2005年9月14日 に取得。 JD Foley 他 (1992).コンピュータグラフィックス:C言語による原理と実践 (第2 版). Addison Wesley. Rajiv Chandel (2014-03-20). 「ゲームにおけるベジェ曲線の実装」。
さらに読む ベジェ曲線入門– ベジェ曲線と関連するグラフィックアルゴリズムを解説するオープンソースのオンライン書籍(インタラクティブなグラフィック付き) 3次ベジェ曲線 – 内部構造(動画)– ピーター・ノウェルによる、コンピューターが3次ベジェ曲線をどのようにレンダリングするかを示す動画 ベジェ曲線からベルンシュタイン曲線まで:アメリカ数学会 の特集コラム 「ベジェ曲線」、数学百科事典 、EMS Press 、2001年 [1994年] プラウチュ、ハルトムート。ベーム、ヴォルフガング。マルコ・パルシュニー (2002)。ベジェおよび B スプライン手法 。シュプリンガーのサイエンス&ビジネスメディア。ISBN 978-3-540-43761-1 。 Gallier, Jean (1999). 「第 5 章 多項式曲線をベジェ曲線として扱う」 .幾何モデリングにおける曲線と曲面: 理論とアルゴリズム . Morgan Kaufmann. この本は絶版となっており、著者から無料で入手できます。Farin, Gerald E. (2002). CAGDのための曲線と曲面:実践ガイド (第5 版). Morgan Kaufmann. ISBN 978-1-55860-737-8 。 ワイスタイン、エリック W. 「ベジェ曲線」。マスワールド 。ホフマン、ゲルノット。「ベジェ曲線」(PDF) 。 2006年12月2日にオリジナル(PDF) からアーカイブされました。 (60ページ)Ahn, Young Joon (2004). "高次ベジェ曲線による円弧とオフセット曲線の近似" . Journal of Computational and Applied Mathematics . 167 (2): 405–416 . Bibcode : 2004JCoAM.167..405A . doi : 10.1016/j.cam.2003.10.008 . デイヴィス、ジェイソン。「アニメーション化されたベジェ曲線」。 Hovey, Chad (2022). ベジェ曲線とBスプライン曲線の幾何学の定式化とPythonによる実装。SAND2022-7702C 。(153ページ)
外部リンク コンピュータコード TinySpline: NURBS、Bスプライン、ベジェ曲線用のオープンソースCライブラリ。様々な言語に対応したバインディングを提供。 コンパイル時にベジェ関数を生成するC++ライブラリ Pythonで再帰メソッドを使用してベジェ曲線をシンプルに実装する方法