機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

Ferguson/Coons(ファーガソン/クーンズ)曲線

Ferguson/Coons曲線の定義

この曲線は、曲線の両端点における位置ベクトルと接線ベクトルから定義されます。

\begin{eqnarray}
{\bf P}(t)={\rm H}_{0,0}(t){\bf Q}_0+{\rm H}_{0,1}(t){\bf Q}_1+{\rm H}_{1,0}(t)\dot{\bf Q}_0+{\rm H}_{1,1}(t)\dot{\bf Q}_1\tag{1}
\end{eqnarray}

{\bf Q}_0,{\bf Q}_1 は端点における位置ベクトル、\dot{\bf Q}_0,\dot{\bf Q}_1 は端点における接線ベクトルです。
{\rm H}_{0,0}(t),{\rm H}_{0,1}(t),{\rm H}_{1,0}(t),{\rm H}_{1,1}(t) は3次の「Hermite(エルミート)補間関数」と呼ばれるもので次の形をしています。

\begin{eqnarray}
\left\{
    \begin{array}{l}
     {\rm H}_{0,0}(t)=2t^3-3t^2+1=(t-1)^2(2t+1)\\
     {\rm H}_{0,1}(t)=-2t^3+3t^2=t^2(3-2t)\\
     {\rm H}_{1,0}(t)=t^3-2t^2+t=(1-t)^2t\\
     {\rm H}_{1,1}(t)=t^3-t^2=(t-1)t^2
    \end{array}
  \right.\tag{2}
\end{eqnarray}

(1) を行列を用いて記述してみます。

\begin{eqnarray}
{\bf P}(t)&=&{\rm H}_{0,0}(t){\bf Q}_0+{\rm H}_{0,1}(t){\bf Q}_1+{\rm H}_{1,0}(t)\dot{\bf Q}_0+{\rm H}_{1,1}(t)\dot{\bf Q}_1\\
&=&\begin{pmatrix}
{\rm H}_{0,0}(t) & {\rm H}_{0,1}(t) & {\rm H}_{1,0}(t) & {\rm H}_{1,1}(t)
\end{pmatrix}
\begin{pmatrix}
{\bf Q}_0 \\ {\bf Q}_1 \\ \dot{\bf Q}_0 \\ \dot{\bf Q}_1
\end{pmatrix}\\
&=&\begin{pmatrix}
t^3 & t^2 & t & 1
\end{pmatrix}
\begin{pmatrix}
2 & -2 & 1 & 1\\
 -3 & 3 & -2 & -1\\
0 & 0 & 1 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
{\bf Q}_0 \\ {\bf Q}_1 \\ \dot{\bf Q}_0 \\ \dot{\bf Q}_1
\end{pmatrix}\tag{3}
\end{eqnarray}

この曲線は3次エルミート曲線と呼ばれることの方が多いようです。

3次ベジェ曲線からFerguson/Coons曲線への変換

3次ベジェ曲線からFerguson/Coons曲線へ変換できます。

3次ベジェ曲線を行列を使って書くと、以下のようになります。

\begin{eqnarray}
{\bf P}(t)&=&\begin{pmatrix}
t^3 & t^2 & t & 1
\end{pmatrix}
\begin{pmatrix}
 -1 & 3 & -3 & 1\\
 3 & -6 & 3 & 0\\
 -3 & 3 & 0 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
{\bf P}_0 \\ {\bf P}_1 \\ {\bf P}_2 \\ {\bf P}_3
\end{pmatrix}\tag{4}
\end{eqnarray}

(3),(4) を比較します。

\begin{eqnarray}
&&\begin{pmatrix}
2 & -2 & 1 & 1\\
 -3 & 3 & -2 & -1\\
0 & 0 & 1 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
{\bf Q}_0 \\ {\bf Q}_1 \\ \dot{\bf Q}_0 \\ \dot{\bf Q}_1
\end{pmatrix}
=
\begin{pmatrix}
 -1 & 3 & -3 & 1\\
 3 & -6 & 3 & 0\\
 -3 & 3 & 0 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
{\bf P}_0 \\ {\bf P}_1 \\ {\bf P}_2 \\ {\bf P}_3
\end{pmatrix}\\
\Rightarrow
&&\begin{pmatrix}
{\bf Q}_0 \\ {\bf Q}_1 \\ \dot{\bf Q}_0 \\ \dot{\bf Q}_1
\end{pmatrix}
=
\begin{pmatrix}
2 & -2 & 1 & 1\\
 -3 & 3 & -2 & -1\\
0 & 0 & 1 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}^{-1}
\begin{pmatrix}
 -1 & 3 & -3 & 1\\
 3 & -6 & 3 & 0\\
 -3 & 3 & 0 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
{\bf P}_0 \\ {\bf P}_1 \\ {\bf P}_2 \\ {\bf P}_3
\end{pmatrix}\\
\Rightarrow
&&\begin{pmatrix}
{\bf Q}_0 \\ {\bf Q}_1 \\ \dot{\bf Q}_0 \\ \dot{\bf Q}_1
\end{pmatrix}
=
\begin{pmatrix}
0 & 0 & 0 & 1\\
1 & 1 & 1 & 1\\
0 & 0 & 1 & 0\\
3 & 2 & 1 & 0\\
\end{pmatrix}
\begin{pmatrix}
 -1 & 3 & -3 & 1\\
 3 & -6 & 3 & 0\\
 -3 & 3 & 0 & 0\\
1 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
{\bf P}_0 \\ {\bf P}_1 \\ {\bf P}_2 \\ {\bf P}_3
\end{pmatrix}\\
\Rightarrow
&&\begin{pmatrix}
{\bf Q}_0 \\ {\bf Q}_1 \\ \dot{\bf Q}_0 \\ \dot{\bf Q}_1
\end{pmatrix}
=
\begin{pmatrix}
1 & 0 & 0 & 0\\
0 & 0 & 0 & 1\\
 -3 & 3 & 0 & 0\\
0 & 0 & -3 & 3\\
\end{pmatrix}
\begin{pmatrix}
{\bf P}_0 \\ {\bf P}_1 \\ {\bf P}_2 \\ {\bf P}_3
\end{pmatrix}\\
\end{eqnarray}
よって、以下のようになります。
\begin{eqnarray}
\left\{
    \begin{array}{l}
     {\bf Q}_0={\bf P}_0\\
     {\bf Q}_1={\bf P}_3\\
     \dot{\bf Q}_0=-3{\bf P}_0+3{\bf P}_1=3({\bf P}_1-{\bf P}_0)\\
     \dot{\bf Q}_1=-3{\bf P}_2+3{\bf P}_3=3({\bf P}_3-{\bf P}_2)\\
    \end{array}
  \right.\tag{5}
\end{eqnarray}

Ferguson/Coons 曲線で表した場合の接線ベクトル \dot{\bf Q}_0 はBezier曲線で表した場合の制御点 {\bf P}_0,{\bf P}_1 から得られる方向ベクトルのを3倍したものになっています。
同様に\dot{\bf Q}_1 は制御点 {\bf P}_2,{\bf P}_3 から得られる方向ベクトルのを3倍したものになっています。


Ferguson/Coons曲線から3次ベジェ曲線への変換

(5) より、以下のようになります。

\begin{eqnarray}
\left\{
    \begin{array}{l}
     {\bf P}_0={\bf Q}_0\\
     {\bf P}_1=\frac{\dot{\bf Q}_0}{3}+{\bf P}_0\\
     {\bf P}_2=\frac{-\dot{\bf Q}_1}{3}+{\bf P}_1\\
     {\bf P}_3={\bf Q}_1\\
    \end{array}
  \right.\tag{6}
\end{eqnarray}

参考文献

CAD・CG技術者のためのNURBS早わかり p187-188,191-193

目次へ戻る