ベジェ曲線の式
数式の表示を試してみたかっただけ
1. 2次のベジェ曲線
\[\begin{align}
P_1 & \cdots 端点 \\
P_2 & \cdots 制御点 \\
P_3 & \cdots 端点
\end{align}\]
として
\[\begin{align}
P = (1 - t)^2P_1 + 2(1 - t)tP_2 + t^2P_3 \cdots (1) \\
0 \leqq t \leqq 1
\end{align}\]
例えば、2次元平面上の点
\[\begin{align}
P_1 &= (x_1, y_1) \\
P_2 &= (x_2, y_2) \\
P_3 &= (x_3, y_3) \\
P &= (x, y)
\end{align}\]
とすると \(x, y\) はそれぞれ
\[\begin{align}
x &= (1 - t)^2x_1 + 2(1 - t)tx_2 + t^2x_3 \\
y &= (1 - t)^2y_1 + 2(1 - t)ty_2 + t^2y_3
\end{align}\]
となる。
2. 3次のベジェ曲線
\[\begin{align}
P_1 & \cdots 端点 \\
P_2 & \cdots 制御点 \\
P_3 & \cdots 制御点 \\
P_4 & \cdots 端点
\end{align}\]
\[\begin{align}
P = (1 - t)^3P_1 + 3(1 - t)^2tP_2 + 3(1 - t)t^2P_3 + t^3P_4 \cdots (2) \\
0 \leqq t \leqq 1
\end{align}\]
例えば、2次元平面上の点
\[\begin{align}
P_1 &= (x_1, y_1) \\
P_2 &= (x_2, y_2) \\
P_3 &= (x_3, y_3) \\
P_4 &= (x_4, y_4) \\
P &= (x, y)
\end{align}\]
とすると \(x, y\) はそれぞれ
\[\begin{align}
x &= (1 - t)^3x_1 + 3(1 - t)^2tx_2 + 3(1 - t)t^2x_3 + t^3x_4 \\
y &= (1 - t)^3y_1 + 3(1 - t)^2ty_2 + 3(1 - t)t^2y_3 + t^3y_4
\end{align}\]
となる。
3. 3点を通る2次のベジェ曲線を求める
\[\begin{align}
P_1 & \cdots 端点 \\
P_2 & \cdots 求める制御点 \\
P_3 & \cdots 端点 \\
P_a & \cdots 通過点
\end{align}\]
のときに \(P_1, P_a, P_3\) を通るベジェ曲線の制御点 \(P_2\) を求める。
ただし、 \(P_a\) は \(t = 0.5\) の時の通過点とする。
(1)の2次のベジェ曲線の式から \(t = 0.5\) のとき
\[\begin{align}
P_a &= 0.25P_1 + 0.5P_2 + 0.25P_3 \\
0.5P_2 &= P_a - 0.25(P_1 + P_3) \\
P_2 &= 2P_a - 0.5(P_1 + P_3) \\
\left(\begin{array}{c}x_2 \\ y_2\end{array}\right)
&=
2\left(\begin{array}{c}x_a \\ y_a\end{array}\right)
- 0.5\left[
\left(\begin{array}{c}x_1 \\ y_1\end{array}\right) + \left(\begin{array}{c}x_3 \\ y_3\end{array}\right)
\right]
\end{align}\]
4. 4点を通る3次のベジェ曲線を求める
2次元平面上の点
\[\begin{align}
P_1 & \cdots 端点 \\
P_2 & \cdots 求める制御点 \\
P_3 & \cdots 求める制御点 \\
P_4 & \cdots 端点 \\
P_a & \cdots 通過点 \\
P_b & \cdots 通過点
\end{align}\]
のときに \(P_1, P_a, P_b, P_4\) を通るベジェ曲線の制御点 \(P_2, P_3\) を求める。
ただし、 \(P_a\) は \(t = 1 / 3\) の時の通過点、 \(P_b\) は \(t = 2 / 3\) の時の通過点とする。
(2)の3次のベジェ曲線の式から \(t = 1 / 3\) のとき
\[\begin{align}
P_a &= (\frac{2}{3})^3P_1 + (\frac{2}{3})^2P_2 + 2(\frac{1}{3})^2P_3 + (\frac{1}{3})^3P_4 \\
27P_a &= 8P_1 + 12P_2 + 6P_3 + P_4 \\
\frac{27P_a - 8P_1 - P_4}{6} &= 2P_2 + P_3
\end{align}\]
\(C_a = \frac{27P_a - 8P_1 - P_4}{6}\) とおいて
\[\begin{align}
2P_2 + P_3 - C_a = 0 \cdots (3)
\end{align}\]
とする。
\(t = 2 / 3\) のとき
\[\begin{align}
P_b &= (\frac{1}{3})^3P_1 + 2(\frac{1}{3})^2P_2 + (\frac{2}{3})^2P_3 + (\frac{2}{3})^3P_4 \\
27P_b &= P_1 + 6P_2 + 12P_3 + 8P_4 \\
\frac{27P_b - P_1 - 8P_4}{6} &= P_2 + 2P_3
\end{align}\]
\(C_b = \frac{27P_b - P_1 - 8P_4}{6}\) とおいて
\[P_2 + 2P_3 - C_b = 0 \cdots (4)\]
とする。
(3)(4)より
\[\begin{align}
\begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}\begin{bmatrix} P_2 \\ P_3 \end{bmatrix} &= \begin{bmatrix} C_a \\ C_b \end{bmatrix} \\
\begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}^{-1}\begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}\begin{bmatrix} P_2 \\ P_3 \end{bmatrix} &= \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}^{-1}\begin{bmatrix} C_a \\ C_b \end{bmatrix} \\
\begin{bmatrix} P_2 \\ P_3 \end{bmatrix} &= \frac{1}{3}\begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix}\begin{bmatrix} C_a \\ C_b \end{bmatrix} \\
\begin{bmatrix} P_2 \\ P_3 \end{bmatrix} &= \frac{1}{3}\begin{bmatrix} 2C_a - C_b \\ -C_a + 2C_b \end{bmatrix} ... (3)
\end{align}\]
(3)に \(C_a, C_b\) を代入して元に戻すと
\[\begin{align}
P_2 &= \frac{1}{3}(2\frac{27P_a - 8P_1 - P_4}{6} - \frac{27P_b - P_1 - 8P_4}{6}) \\
P_2 &= \frac{1}{3}(\frac{54P_a - 16P_1 - 2P_4 - 27P_b + P_1 + 8P_4}{6}) \\
P_2 &= \frac{1}{3}(\frac{54P_a - 27P_b - 15P_1 + 6P_4}{6}) \\
P_2 &= \frac{1}{6}(18P_a - 9P_b - 5P_1 + 2P_4) \\
\end{align}\]
\[\begin{align}
P_3 &= \frac{1}{3}(-\frac{27P_a - 8P_1 - P_4}{6} + 2\frac{27P_b - P_1 - 8P_4}{6}) \\
P_3 &= \frac{1}{3}(\frac{-27P_a + 8P_1 + P_4 + 54P_b - 2P_1 - 16p_4}{6}) \\
P_3 &= \frac{1}{3}(\frac{-27P_a + 54P_b + 6P_1 - 15p_4}{6}) \\
P_3 &= -\frac{1}{6}(9P_a - 18P_b - 2P_1 + 5P_4)
\end{align}\]
よって求める制御点 \(P_2, P_3\) は
\[\begin{alignat}{3}
P_2 &= &\frac{1}{6}(18P_a - 9P_b - 5P_1 + 2P_4) \\
P_3 &= -&\frac{1}{6}(9P_a - 18P_b - 2P_1 + 5P_4) \\
\end{alignat}\]