任意の点\(Z\)とBezier曲線\(\mathrm{Bezier}(t)\)とで最小となる長さ\(L\)(距離)を求める
3次のベジェ曲線(媒介変数\(t\)表示)
任意の点\(Z\)とBezier曲線\(\mathrm{Bezier}(t)\)との長さ\(L\)

3次のベジェ曲線の\(X(t), Y(t)\)の微分
$$\begin{eqnarray} \\\frac{\mathrm{d}}{\mathrm{d}t}X(t) &=&3B+6Ct+3Dt^2 \\&=&3\left(B+2Ct+Dt^2\right) \\\frac{\mathrm{d}}{\mathrm{d}t}Y(t) &=&3Q+6Rt+3St^2 \\&=&3\left(Q+2Rt+St^2\right) \end{eqnarray}$$任意の点\(Z\)からベジェ曲線の\(X(t), Y(t)\)の距離
$$\begin{eqnarray} \\Z&=&(z_x, z_y)\;\cdots\;任意の点 \\L&=&\sqrt{\left(X(t|a,b,c,d)-z_x\right)^2+\left(Y(t|p,q,r,s)-z_y\right)^2}\;\cdots\;任意の点zとBezier曲線との距離 \end{eqnarray}$$ \(Z=(0,0)\)になるように\(z_x,z_y\)だけ,\(a,b,c,d,p,q,r,s\)を平行移動する.距離は変わらないので\(L\). $$\begin{eqnarray} \\L&=&\sqrt{X^2(t|a-z_x,b-z_x,c-z_x,d-z_x)+Y^2(t|p-z_y,q-z_y,r-z_y,s-z_y)} \end{eqnarray}$$ 平行移動後の係数を改めて\(a^\prime=a-z_x,b^\prime=b-z_x,c^\prime=c-z_x,d^\prime=d-z_x,p^\prime=p-z_y,q^\prime=q-z_y,r^\prime~r-z_y,s=s^\prime-z_y\)と定義し直して計算を続ける. $$\begin{eqnarray} \\L&=&\sqrt{\left(X(t|a^\prime,b^\prime,c^\prime,d^\prime)\right)^2+\left(Y(t|p^\prime,q^\prime,r^\prime,s^\prime)\right)^2} \\&=&\sqrt{\left(X(t|A^\prime,B^\prime,C^\prime,D^\prime)\right)^2+\left(Y(t|P^\prime,Q^\prime,R^\prime,S^\prime)\right)^2} \\&&\;\cdots\; A^\prime=a^\prime ,B^\prime=-a^\prime+b^\prime ,C^\prime=a^\prime-2b^\prime+c^\prime ,D^\prime=-a^\prime+3b^\prime-3c^\prime+d^\prime \\&&\;\cdots\; P^\prime=p^\prime ,Q^\prime=-p^\prime+q^\prime ,R^\prime=p^\prime-2q^\prime+r^\prime ,S^\prime=-p^\prime+3q^\prime-3r^\prime+s^\prime \end{eqnarray}$$\(L\)を極値とする\(t\)を求める
$$\begin{eqnarray} \frac{\mathrm{d}}{\mathrm{d}t}L&=&0\;\cdots\;Lの微分が0となるtが,Lの極値.その中で最小の距離Lとなるものを探す. \end{eqnarray}$$ $$\begin{eqnarray} \frac{\mathrm{d}}{\mathrm{d}t}L&=&\frac{1}{2}\left(X^2(t)+Y^2(t)\right)^{-\frac{1}{2}} \left\{ \frac{\mathrm{d}}{\mathrm{d}t}\left(X^2(t)+Y^2(t)\right) \right\} \\&=&\frac{1}{2}\left(X^2(t)+Y^2(t)\right)^{-\frac{1}{2}} \left\{ \left(\frac{\mathrm{d}}{\mathrm{d}t}X^2(t)\right) +\left(\frac{\mathrm{d}}{\mathrm{d}t}Y^2(t)\right) \right\} \\&=&\frac{1}{2}\left(X^2(t)+Y^2(t)\right)^{-\frac{1}{2}} \left\{ 2X(t)\left(\frac{\mathrm{d}}{\mathrm{d}t}X(t)\right) +2Y(t)\left(\frac{\mathrm{d}}{\mathrm{d}t}Y(t)\right) \right\} \\&=&\frac{X(t)\left(\frac{\mathrm{d}}{\mathrm{d}t}X(t)\right) +Y(t)\left(\frac{\mathrm{d}}{\mathrm{d}t}Y(t)\right)}{\sqrt{X^2(t)+Y^2(t)}} \;\cdots\;分母は常に0以上なので,0となる場合を除けば,分子だけ考えればよい. \end{eqnarray}$$ $$\begin{eqnarray} \\0&=&X(t)\left(\frac{\mathrm{d}}{\mathrm{d}t}X(t)\right) +Y(t)\left(\frac{\mathrm{d}}{\mathrm{d}t}Y(t)\right) \\&=& \left(A^\prime+3B^\prime t+3C^\prime t^2+D^\prime t^3\right) \cdot 3\left(B^\prime+2C^\prime t+D^\prime t^2\right) +\left(P^\prime+3Q^\prime t+3R^\prime t^2+S^\prime t^3\right) \cdot 3\left(Q^\prime+2R^\prime t+S^\prime t^2\right) \\&=&3\left\{ \left(A^\prime+3B^\prime t+3C^\prime t^2+D^\prime t^3\right) \left(B^\prime+2C^\prime t+D^\prime t^2\right) +\left(P^\prime+3Q^\prime t+3R^\prime t^2+S^\prime t^3\right) \left(Q^\prime+2R^\prime t+S^\prime t^2\right) \right\} \\0&=&\left(A^\prime+3B^\prime t+3C^\prime t^2+D^\prime t^3\right) \left(B^\prime+2C^\prime t+D^\prime t^2\right) +\left(P^\prime+3Q^\prime t+3R^\prime t^2+S^\prime t^3\right) \left(Q^\prime+2R^\prime t+S^\prime t^2\right)\;\cdots\;両辺3で割った.左辺は0なので割っても変わらない. \\&=& A^\prime \left(B^\prime+2C^\prime t+D^\prime t^2\right) +3B^\prime t\left(B^\prime+2C^\prime t+D^\prime t^2\right) +3C^\prime t^2\left(B^\prime+2C^\prime t+D^\prime t^2\right) +D^\prime t^3\left(B^\prime+2C^\prime t+D^\prime t^2\right) \\&&+P^\prime \left(Q^\prime+2R^\prime t+S^\prime t^2\right) +3Q^\prime t\left(Q^\prime+2R^\prime t+S^\prime t^2\right) +3R^\prime t^2\left(Q^\prime+2R^\prime t+S^\prime t^2\right) +S^\prime t^3\left(Q^\prime+2R^\prime t+S^\prime t^2\right) \\&=& A^\prime B^\prime+2A^\prime C^\prime t+A^\prime D^\prime t^2 +3{B^{\prime}}^2 t+6B^\prime C^\prime t^2+3B^\prime D^\prime t^3 +3B^\prime C^\prime t^2+ 6{C^{\prime}}^2 t^3+ 3C^\prime D^\prime t^4 +B^\prime D^\prime t^3+2C^\prime D^\prime t^4+{D^{\prime}}^2 t^5 \\&& +P^\prime Q^\prime+2P^\prime R^\prime t+P^\prime S^\prime t^2 +3{Q^{\prime}}^2 t+6Q^\prime R^\prime t^2+3Q^\prime S^\prime t^3 +3Q^\prime R^\prime t^2+ 6{R^{\prime}}^2 t^3+ 3R^\prime S^\prime t^4 +Q^\prime S^\prime t^3+2R^\prime S^\prime t^4+{S^{\prime}}^2 t^5 \\&=& A^\prime B^\prime +\left(2A^\prime C^\prime+3{B^{\prime}}^2\right)t +\left(A^\prime D^\prime+9B^\prime C^\prime\right)t^2 +\left(4B^\prime D^\prime+ 6{C^{\prime}}^2 \right)t^3 +5C^\prime D^\prime t^4 +{D^{\prime}}^2 t^5 \\&& +P^\prime Q^\prime +\left(2P^\prime R^\prime+3{Q^{\prime}}^2\right)t +\left(P^\prime S^\prime+9Q^\prime R^\prime\right)t^2 +\left(4Q^\prime S^\prime+ 6{R^{\prime}}^2\right)t^3 +5R^\prime S^\prime t^4 +{S^{\prime}}^2 t^5 \\&=& A^{\prime\prime} +B^{\prime\prime}t +C^{\prime\prime}t^2 +D^{\prime\prime}t^3 +E^{\prime\prime}t^4 +F^{\prime\prime}t^5 \\&& +P^{\prime\prime} +Q^{\prime\prime}t +R^{\prime\prime}t^2 +S^{\prime\prime}t^3 +T^{\prime\prime}t^4 +U^{\prime\prime}t^5 \\&&\;\cdots\;A^{\prime\prime}=A^\prime B^\prime ,B^{\prime\prime}=2A^\prime C^\prime+3{B^{\prime}}^2 ,C^{\prime\prime}=A^\prime D^\prime+9B^\prime C^\prime ,D^{\prime\prime}=4B^\prime D^\prime+ 6{C^{\prime}}^2 ,E^{\prime\prime}=5C^\prime D^\prime ,F^{\prime\prime}={D^{\prime}}^2 \\&&\;\cdots\;P^{\prime\prime}=P^\prime Q^\prime ,Q^{\prime\prime}=2P^\prime R^\prime+3{Q^{\prime}}^2 ,R^{\prime\prime}=P^\prime S^\prime+9Q^\prime R^\prime ,S^{\prime\prime}=4Q^\prime S^\prime+ 6{R^{\prime}}^2 ,T^{\prime\prime}=5R^\prime S^\prime ,U^{\prime\prime}={S^{\prime}}^2 \\&=&\left(A^{\prime\prime}+P^{\prime\prime}\right) +\left(B^{\prime\prime}+Q^{\prime\prime}\right)t +\left(C^{\prime\prime}+R^{\prime\prime}\right)t^2 +\left(D^{\prime\prime}+S^{\prime\prime}\right)t^3 +\left(E^{\prime\prime}+T^{\prime\prime}\right)t^4 +\left(F^{\prime\prime}+U^{\prime\prime}\right)t^5 \\&=&\alpha_0+\alpha_1 t+\alpha_2 t^2+\alpha_3 t^3+\alpha_4 t^4+\alpha_5 t^5 \\&&\;\cdots\;\alpha_0=A^{\prime\prime}+P^{\prime\prime}=A^\prime B^\prime+P^\prime Q^\prime \\&&\;\cdots\;\alpha_1=B^{\prime\prime}+Q^{\prime\prime} =2A^\prime C^\prime+3{B^{\prime}}^2 +2P^\prime R^\prime+3{Q^{\prime}}^2 \\&&\;\cdots\;\alpha_2=C^{\prime\prime}+R^{\prime\prime} =A^\prime D^\prime+9B^\prime C^\prime+P^\prime S^\prime+9Q^\prime R^\prime \\&&\;\cdots\;\alpha_3=D^{\prime\prime}+S^{\prime\prime} =4B^\prime D^\prime+ 6{C^{\prime}}^2 +4Q^\prime S^\prime+ 6{R^{\prime}}^2 \\&&\;\cdots\;\alpha_4=E^{\prime\prime}+T^{\prime\prime} =5C^\prime D^\prime+5R^\prime S^\prime \\&&\;\cdots\;\alpha_5=F^{\prime\prime}+U^{\prime\prime}\ ={D^{\prime}}^2+{S^{\prime}}^2 \\\; \\&&\;\cdots\; A^\prime=a^\prime ,\;B^\prime=-a^\prime+b^\prime ,\;C^\prime=a^\prime-2b^\prime+c^\prime ,\;D^\prime=-a^\prime+3b^\prime-3c^\prime+d^\prime \\&&\;\cdots\; P^\prime=p^\prime ,\;Q^\prime=-p^\prime+q^\prime ,\;R^\prime=p^\prime-2q^\prime+r^\prime ,\;S^\prime=-p^\prime+3q^\prime-3r^\prime+s^\prime \\\; \\&&\;\cdots\;a^\prime=a-z_x,\;b^\prime=b-z_x,\;c^\prime=c-z_x,\;d^\prime=d-z_x \\&&\;\cdots\;p^\prime=p-z_y,\;q^\prime=q-z_y,\;r^\prime~r-z_y,\;s=s^\prime-z_y \end{eqnarray}$$\(t\)を求めるには この5次方程式を解けばよいが,5次ということで数値計算で解く等が必要.
解は5つあるわけだが,その内実数であるものを選ぶ.
また,\(t\in[0, 1]\)であるので,\(t\lt0\)なら\(t=0\),\(t\gt1\)なら\(t=1\)とする.
この式は任意点からBezier曲線上の各点へ引いた線分の中で,接線とが直角に交わる時の点を求める方程式に等しい.
0 件のコメント:
コメントを投稿