三次Bezier曲线算法
三次Bezier曲线算法
Bezier曲线的定义
- 给定\(n+1\)个控制点\(p_i(i=0,1,2,...,n)\),则\(n\)次Bezier曲线定义为:
\[p(t)=\sum_{i=1}^np_iB_{i,n}(t), t\in[0,1]
\]
Bernstein基函数,其表达式为:
\[B_{i,n}=\frac{n!}{i!(n-i)!}t^i(1-t)^{n-i}=C^i_nt^i(1-t)^{n-i},(i=0,1,2,...,n)
\]
- 四个控制点就是3次Bezier曲线
- 工程中一般使用2次、3次Bezier曲线,高次Bezier曲线较少使用。
一次Bezier曲线
\[ p(t)=
\left[\begin{matrix}
t & 1
\end{matrix}\right]
\left[\begin{matrix}
-1 & 1 \\
1 & 0
\end{matrix}\right]
\left[\begin{matrix}
p_0 \\
p_1
\end{matrix}\right]
,t\in[0,1]
\]
二次Bezier曲线
\[ p(t)=
\left[\begin{matrix}
t^2 & t & 1
\end{matrix}\right]
\left[\begin{matrix}
1 & -2 & 1 \\
-2 & 2 & 0 \\
1 & 0 & 0
\end{matrix}\right]
\left[\begin{matrix}
p_0 \\
p_1 \\
p_2
\end{matrix}\right]
,t\in[0,1]
\]
三次Bezier曲线
\[ p(t)=
\left[\begin{matrix}
t^3 & t^2 & t & 1
\end{matrix}\right]
\left[\begin{matrix}
-1 & 3 & -3 & 1 \\
3 & -6 & 3 & 0 \\
-3 & 3 & 0 & 0 \\
1 & 0 & 0 & 0
\end{matrix}\right]
\left[\begin{matrix}
p_0 \\
p_1 \\
p_2 \\
p_3
\end{matrix}\right]
,t\in[0,1]
\]
Casteljau递推算法
- 主要是为了方便程序计算,将矩阵运算写为了递推运算,是一种工程化处理