1.曲线、曲面的显/隐示表达
(1)曲线:
- 显示表达:
{ y = f ( x ) z = g ( x ) \left\{ \begin{array}{} y=f(x) \\ z=g(x) \\ \end{array} \right. {y=f(x)z=g(x) - 隐示表达:
{ f ( x , y , z ) = 0 g ( x , y , z ) = 0 \left\{ \begin{array}{} f(x,y,z)=0 \\ g(x,y,z)=0 \\ \end{array} \right. {f(x,y,z)=0g(x,y,z)=0
(2)曲面:
- 隐示表达:
f ( x , y , z ) = 0 f(x,y,z)=0 f(x,y,z)=0
2. 曲线、曲面的参数表示
- 曲线:(t为参数,且
t
∈
[
a
,
b
]
t\in [a,b]
t∈[a,b],每一个确定的t值可以确定一个曲线的点,为了将区间规范成
t
∈
[
0
,
1
]
t\in [0,1]
t∈[0,1],可变换参数
t
′
=
(
t
−
a
)
/
(
b
−
a
)
t'=(t-a)/(b-a)
t′=(t−a)/(b−a)) 。
{ x = x ( t ′ ) y = y ( t ′ ) z = z ( t ′ ) \left\{ \begin{array}{} x=x(t') \\ y=y(t') \\ z=z(t') \end{array} \right. ⎩ ⎨ ⎧x=x(t′)y=y(t′)z=z(t′) - 矢量形式:
P = P ( t ) , t ∈ [ 0 , 1 ] , P = [ x , y , z ] T P=P(t),t\in[0,1],P=[x,y,z]^T P=P(t),t∈[0,1],P=[x,y,z]T
eg1.
直线段 P 1 , P 2 P_1,P_2 P1,P2的参数方程: P = P 1 + ( P 2 − P 1 ) t , t ∈ [ 0 , 1 ] P=P_1+(P_2-P_1)t,t\in[0,1] P=P1+(P2−P1)t,t∈[0,1]
eg2.
圆的参数方程:
{ x = x 0 + R c o s θ y = y 0 + R s i n θ \left\{ \begin{array}{} x=x_0+Rcos\theta \\ y=y_0+Rsin\theta \\ \end{array} \right. {x=x0+Rcosθy=y0+Rsinθ - 将坐标变量表示成两个参数u和v的形式,则可以得到曲面的参数方程:
{ x = x ( u , v ) y = y ( u , v ) z = z ( u , v ) , u ∈ [ 0 , 1 ] , v ∈ [ 0 , 1 ] \left\{ \begin{array}{} x=x(u,v) \\ y=y(u,v) \\ z=z(u,v) \end{array} \right.,u\in[0,1],v\in[0,1] ⎩ ⎨ ⎧x=x(u,v)y=y(u,v)z=z(u,v),u∈[0,1],v∈[0,1]
也可写作:
P = P ( u , v ) , u ∈ [ 0 , 1 ] , v ∈ [ 0 , 1 ] P=P(u,v),u\in[0,1],v\in[0,1] P=P(u,v),u∈[0,1],v∈[0,1]
曲面面片的四个角为 P ( 0 , 1 ) , P ( 1 , 0 ) , P ( 1 , 1 ) , P ( 0 , 0 ) P(0,1),P(1,0),P(1,1),P(0,0) P(0,1),P(1,0),P(1,1),P(0,0),四条边界线为: P ( 0 , v ) , P ( u , 0 ) , P ( u , 1 ) , P ( 1 , v ) P(0,v),P(u,0),P(u,1),P(1,v) P(0,v),P(u,0),P(u,1),P(1,v).
2.常用参数曲线
2.1 空间曲线
- 对于平面二次曲线,其方程:
f ( x , y ) = a x 2 + 2 b x y + c y 2 + 2 d x + 2 e y + f = 0 f(x,y) = ax^2+2bxy+cy^2+2dx+2ey+f=0 f(x,y)=ax2+2bxy+cy2+2dx+2ey+f=0.
Δ = ∣ a b b c ∣ \Delta=\left|\begin{array}{} a & b\\ b & c \end{array}\right| Δ= abbc ,若 Δ > 0 \Delta>0 Δ>0, f ( x , y ) f(x,y) f(x,y)为椭圆;若 Δ = 0 \Delta=0 Δ=0, f ( x , y ) f(x,y) f(x,y)为抛物线;若 Δ < 0 \Delta<0 Δ<0, f ( x , y ) f(x,y) f(x,y)为双曲线。
平面二次曲线的矩阵形式可写为:
f ( x , y ) = P Q P T = 0 f(x,y) = PQP^T=0 f(x,y)=PQPT=0
其中 P = [ x , y , 1 ] , Q = [ a b d b c e d e f ] P=[x,y,1],Q=\left[ \begin{array}{} a& b & d\\ b& c& e\\ d& e& f\\ \end{array} \right] P=[x,y,1],Q= abdbcedef 。
2.2 多项式参数曲线
(1)n次曲线的一般表示形式为:
{
x
(
t
)
=
a
n
x
t
n
+
.
.
.
+
a
1
x
t
+
a
0
x
y
(
t
)
=
a
n
y
t
n
+
.
.
.
+
a
1
y
t
+
a
0
y
z
(
t
)
=
a
n
z
t
n
+
.
.
.
+
a
1
z
t
+
a
0
z
\left\{ \begin{array}{} x(t) = a_{nx}t^n+...+a_{1x}t+a_{0x} \\ y(t) = a_{ny}t^n+...+a_{1y}t+a_{0y} \\ z(t) = a_{nz}t^n+...+a_{1z}t+a_{0z} \\ \end{array} \right.
⎩
⎨
⎧x(t)=anxtn+...+a1xt+a0xy(t)=anytn+...+a1yt+a0yz(t)=anztn+...+a1zt+a0z
矢量形式:
P
(
t
)
=
[
x
(
t
)
y
(
t
)
z
(
t
)
]
=
[
t
n
,
.
.
.
,
t
,
1
]
[
a
n
x
a
n
y
a
n
z
.
.
.
a
1
x
a
1
y
a
1
z
a
0
x
a
0
y
a
0
z
]
=
T
⋅
A
P(t)=\left[ \begin{array}{c} x(t)\\ y(t)\\ z(t) \end{array} \right]= \left[ t^n,...,t,1\right] \left[ \begin{array}{} a_{nx} & a_{ny} & a_{nz} \\ . & . &.\\ a_{1x} & a_{1y} & a_{1z}\\ a_{0x} & a_{0y} & a_{0z}\\ \end{array} \right] = T \cdot A
P(t)=
x(t)y(t)z(t)
=[tn,...,t,1]
anx.a1xa0xany.a1ya0yanz.a1za0z
=T⋅A
也可写作
P
(
t
)
=
T
⋅
M
⋅
B
P(t)=T \cdot M \cdot B
P(t)=T⋅M⋅B,T为t次项,M为系数,B为端点(带入点)列。
2.3 Bezier 曲线
(1)Define:
P
(
t
)
=
∑
i
=
0
n
P
i
B
i
,
n
(
t
)
,
0
≤
t
≤
1
P(t)=\sum\limits_{i=0}^{n}{P_iB_{i,n}(t)},0\le t\le1
P(t)=i=0∑nPiBi,n(t),0≤t≤1
B
i
,
n
(
t
)
=
n
!
i
!
(
n
−
i
)
!
t
i
(
1
−
t
)
n
−
i
=
C
n
i
t
i
(
1
−
t
)
n
−
i
,
i
=
0
,
1
,
.
.
.
,
n
B_{i,n}(t)=\frac{n!}{i!(n-i)!}t^i(1-t)^{n-i}=C_{n}^{i}t^i(1-t)^{n-i},i=0,1,...,n
Bi,n(t)=i!(n−i)!n!ti(1−t)n−i=Cniti(1−t)n−i,i=0,1,...,n
其中,
P
i
P_i
Pi为该曲线的控制顶点,
B
i
,
n
(
t
)
B_{i,n}(t)
Bi,n(t)是Bernstein基函数,各点位置的调和函数。3次bezier曲线如下图
(2)Bernstein基函数性质
- 非负
- 权性,二项式和为1。 ∑ i = 0 n B i , n ( t ) = 1 \sum\limits_{i=0}^{n}{B_{i,n}(t)}=1 i=0∑nBi,n(t)=1
- 对称。 B i , n ( t ) = B n − i , n ( 1 − t ) B_{i,n}(t)=B_{n-i,n}(1-t) Bi,n(t)=Bn−i,n(1−t)
- 递推。 B i , n ( t ) = ( 1 − t ) B i , n − 1 ( t ) + t B i − 1 , n − 1 ( t ) B_{i,n}(t)=(1-t)B_{i,n-1}(t)+tB_{i-1,n-1}(t) Bi,n(t)=(1−t)Bi,n−1(t)+tBi−1,n−1(t)
- 可导。
(3)Bezier曲线计算
-
可由参数多项式曲线计算(Ref above)。
(a)一次Bezier:
(b)二次:
-
使用基于Bernstein基函数递推特性的De Casteljau算法。
递推特性
对于三次Bezier曲线的计算,过程如下图
思路:
P
0
1
为
P
0
和
P
1
P_0^1为P_0和P_1
P01为P0和P1的
t
k
t_k
tk分位点,即
P
0
1
=
t
P
0
+
(
1
−
t
)
P
1
P_0^1=tP_0+(1-t)P_1
P01=tP0+(1−t)P1。同理可依次按顺序求出
P
0
1
,
P
1
1
,
P
2
1
P_0^1,P_1^1,P_2^1
P01,P11,P21,再依次往下一层计算。最后求得
P
(
t
k
)
=
P
0
3
,
t
=
t
1
,
t
2
,
.
.
.
,
t
n
,
t
∈
[
0
,
1
]
P(t_k)=P_0^3,t=t_1,t_2,...,t_n,t \in[0,1]
P(tk)=P03,t=t1,t2,...,tn,t∈[0,1]。
- 缺点:
1.特征多边形的顶点个数决定Bezier曲线的阶数。
2.Bezier曲线不能做局部的修改,改变任意一个特征点都会导致整个曲线的变化。 - 改进:
使用B样条基函数代替Bernstein基函数:即B样条曲线。
2.4 B样条曲线
(1)Define:
P
(
t
)
=
∑
i
=
0
n
P
i
N
i
,
k
(
t
)
,
0
≤
t
≤
1
P(t)=\sum\limits_{i=0}^{n}{P_iN_{i,k}(t)},0\le t\le1
P(t)=i=0∑nPiNi,k(t),0≤t≤1
k
∈
[
2
,
n
+
1
]
且为整数
,
k
−
1
为次数,
n
+
1
为控制点个数
k\in[2,n+1]且为整数,k-1为次数,n+1为控制点个数
k∈[2,n+1]且为整数,k−1为次数,n+1为控制点个数
N
i
,
k
(
t
)
=
t
−
t
i
t
i
+
k
−
1
−
t
i
N
i
,
k
−
1
(
t
)
+
t
i
+
k
−
t
t
i
+
k
−
t
k
+
1
N
i
+
1
,
k
−
1
(
t
)
,
t
∈
[
t
k
,
t
n
+
1
]
N_{i,k}(t)=\frac{t-t_i}{t_{i+k-1}-t_i}N_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{k+1}}N_{i+1,k-1}(t),t\in[t_k,t_{n+1}]
Ni,k(t)=ti+k−1−tit−tiNi,k−1(t)+ti+k−tk+1ti+k−tNi+1,k−1(t),t∈[tk,tn+1]
N
i
,
1
(
t
)
=
{
1
,
t
∈
[
t
i
,
t
i
+
1
]
0
,
e
l
s
e
,规定
0
0
=
0
N_{i,1}(t)=\left \{ \begin{matrix}{} 1,& t \in[t_i,t_{i+1}]\\ 0,& else \\ \end{matrix} \right.,规定 \frac{0}{0}=0
Ni,1(t)={1,0,t∈[ti,ti+1]else,规定00=0
其中,
P
i
P_i
Pi为该曲线的控制顶点,
N
i
,
k
(
t
)
N_{i,k}(t)
Ni,k(t)是Bernstein基函数,i为第i个矢量点,k为k个矢量点,k个矢量点对应的曲线阶数为k-1。
- 其中 t i t_i ti称为节点, T = [ t 0 , t 1 , . . . , t n + k + 1 ] T=[t_0,t_1,...,t_{n+k+1}] T=[t0,t1,...,tn+k+1]构成k次B样条函数的矢量结点,n为n+1个控制点,k为次参数, k ∈ [ 2 , n + 1 ] 且为整数 k\in[2,n+1]且为整数 k∈[2,n+1]且为整数.节点沿着参数轴等距分布时,为均匀B样条函数;当节点沿着参数轴非均匀分布时,为非均匀分布B样条函数。
- N i , k ( t ) N_{i,k}(t) Ni,k(t)在每个非零区间 [ t i , t i + 1 ] [t_i,t_i+1] [ti,ti+1]上都是次数不高于k的多项式,而在整个参数轴上为分段多项式。
- 分段多项式在端点处具有连续性,且k-1次样条曲线只被相邻的k个点所控制
- 递推关系,举例:
(2) 一次均匀B样条 第 i 段一次B样条曲线方程:
P
i
,
2
(
t
)
=
P
i
N
0
,
2
(
t
)
+
P
i
+
1
N
1
,
2
(
t
)
=
[
N
0
,
2
(
t
)
,
N
1
,
2
(
t
)
]
[
P
i
P
i
+
1
]
=
[
t
,
1
]
[
−
1
1
1
0
]
[
P
i
P
i
+
1
]
,
t
∈
[
0
,
1
]
P_{i,2}(t)=P_iN_{0,2}(t)+ P_{i+1}N_{1,2}(t)=[N_{0,2}(t), N_{1,2}(t)]\left[ \begin{array}{} P_i\\ P_{i+1} \end{array} \right]= [t ,1]\left[ \begin{array}{} -1& 1\\ 1&0 \end{array} \right]\left[ \begin{array}{} P_i\\ P_{i+1} \end{array} \right],t\in[0,1]
Pi,2(t)=PiN0,2(t)+Pi+1N1,2(t)=[N0,2(t),N1,2(t)][PiPi+1]=[t,1][−1110][PiPi+1],t∈[0,1]
以均匀二次B样条曲线的例子展示其求解过程的两种方法
(3)1. 均匀二次(公式推导法)
(Step1) 根据B样条曲线公式:
P
(
t
)
=
∑
i
=
0
n
P
i
N
i
,
k
(
t
)
,
0
≤
t
≤
1
P(t)=\sum\limits_{i=0}^{n}{P_iN_{i,k}(t)},0\le t\le1
P(t)=i=0∑nPiNi,k(t),0≤t≤1
写出二次B样条曲线(样条曲线的每一段):
P
(
t
)
=
P
0
N
0
,
3
(
t
)
+
P
1
N
1
,
3
(
t
)
+
P
2
N
2
,
3
(
t
)
+
P
3
N
3
,
3
(
t
)
,
0
≤
t
≤
1
P(t)=P_0N_{0,3}(t)+P_1N_{1,3}(t)+P_2N_{2,3}(t)+P_3N_{3,3}(t),0\le t\le1
P(t)=P0N0,3(t)+P1N1,3(t)+P2N2,3(t)+P3N3,3(t),0≤t≤1
且根据递推性
N
i
,
k
(
t
)
=
t
−
t
i
t
i
+
k
−
1
−
t
i
N
i
,
k
−
1
(
t
)
+
t
i
+
k
−
t
t
i
+
k
−
t
k
+
1
N
i
+
1
,
k
−
1
(
t
)
,
t
∈
[
t
k
,
t
n
+
1
]
N_{i,k}(t)=\frac{t-t_i}{t_{i+k-1}-t_i}N_{i,k-1}(t)+\frac{t_{i+k}-t}{t_{i+k}-t_{k+1}}N_{i+1,k-1}(t),t\in[t_k,t_{n+1}]
Ni,k(t)=ti+k−1−tit−tiNi,k−1(t)+ti+k−tk+1ti+k−tNi+1,k−1(t),t∈[tk,tn+1]
明显我们需要求出
N
0
,
3
(
t
)
,
N
1
,
3
(
t
)
,
N
2
,
3
(
t
)
,
N
3
,
3
(
t
)
和
N
0
,
2
(
t
)
,
N
1
,
2
(
t
)
,
N
2
,
2
(
t
)
,
N
3
,
2
(
t
)
和
N
0
,
1
(
t
)
,
N
1
,
1
(
t
)
,
N
2
,
1
(
t
)
,
N
3
,
1
(
t
)
,
N
4
,
1
(
t
)
.
.
.
N_{0,3}(t),N_{1,3}(t),N_{2,3}(t),N_{3,3}(t)和N_{0,2}(t),N_{1,2}(t),N_{2,2}(t),N_{3,2}(t)和N_{0,1}(t),N_{1,1}(t),N_{2,1}(t),N_{3,1}(t),N_{4,1}(t)...
N0,3(t),N1,3(t),N2,3(t),N3,3(t)和N0,2(t),N1,2(t),N2,2(t),N3,2(t)和N0,1(t),N1,1(t),N2,1(t),N3,1(t),N4,1(t)...
其中
N
i
,
1
(
t
)
=
{
1
,
t
∈
[
t
i
,
t
i
+
1
]
0
,
e
l
s
e
N_{i,1}(t)=\left \{ \begin{matrix}{} 1,& t \in[t_i,t_{i+1}]\\ 0,& else \\ \end{matrix} \right.
Ni,1(t)={1,0,t∈[ti,ti+1]else
这里的
N
i
,
1
(
t
)
N_{i,1}(t)
Ni,1(t)为分段函数。
(Step 2) 对于
T
=
t
0
,
t
1
,
.
.
.
,
t
i
T=t_0,t_1,...,t_i
T=t0,t1,...,ti,的分段的确定,T的个数为n+k+1 = 7, 满足n=k=3(这里的取值为人为设定),n+1为控制点个数(这里为二阶,每个分段曲线的控制点个数为3,n+1=3),k+1为B样条曲线的阶数。
一般来说
t
∈
[
0
,
1
]
t\in[0,1]
t∈[0,1],
t
i
t_i
ti的取值应等距取在[0,1],但为了计算方便,我们可以均匀取值为
T
=
[
0
,
1
,
2
,
3
,
4
,
5
,
6
]
T=[0,1,2,3,4,5,6]
T=[0,1,2,3,4,5,6],最后在推导出最终的公式时,我们直接令
t
∈
[
0
,
6
]
t\in[0,6]
t∈[0,6]就好。
在步骤1,2确定好了公式,定义域和递推边界后,我们只需对公式化简计算就可以得到
P
(
t
)
P(t)
P(t)。
然后求出不同的t对应的坐标即可。对于该问题我们可以化简得到:
N
0
,
3
(
t
)
=
{
1
2
t
2
,
0
≤
t
<
1
1
2
t
(
2
−
t
)
+
1
2
(
t
−
1
)
(
3
−
t
)
,
1
≤
t
<
2
1
2
(
3
−
t
)
2
,
2
≤
t
<
3
N_{0,3}(t)=\left\{ \begin{array}{} \frac{1}{2}t^2, & 0\le t<1 \\ \frac{1}{2}t(2-t)+\frac{1}{2}(t-1)(3-t), & 1\le t<2 \\ \frac{1}{2}(3-t)^2, & 2\le t<3 \\ \end{array} \right.
N0,3(t)=⎩
⎨
⎧21t2,21t(2−t)+21(t−1)(3−t),21(3−t)2,0≤t<11≤t<22≤t<3
同时因为
N
i
,
k
(
t
)
N_{i,k}(t)
Ni,k(t)是具有周期性的,即
N
i
,
k
(
t
)
=
N
i
+
1
,
k
(
t
+
Δ
t
)
N_{i,k}(t)=N_{i+1,k}(t+\Delta t)
Ni,k(t)=Ni+1,k(t+Δt)。所以可以得出
N
1
,
3
(
t
)
,
N
2
,
3
(
t
)
,
N
3
,
3
(
t
)
N_{1,3}(t),N_{2,3}(t),N_{3,3}(t)
N1,3(t),N2,3(t),N3,3(t)。最后代入
P
(
t
)
=
∑
i
=
0
3
P
i
N
i
,
3
(
t
)
,
0
≤
t
≤
6
P(t)=\sum\limits_{i=0}^{3}{P_iN_{i,3}(t)},0\le t\le6
P(t)=i=0∑3PiNi,3(t),0≤t≤6,可以求出P关于t的坐标序列。
(3)2. 均匀三次(利用边界条件方法)
对于三次曲线来说我们,我们需要4个控制点
P
0
,
P
1
,
P
2
,
P
3
P_0,P_1,P_2,P_3
P0,P1,P2,P3,对应的边界条件有:
起始控制点的对应取值:
P
(
0
)
=
1
/
6
⋅
(
P
0
+
4
P
1
+
P
2
)
⋯
式(
a
)
P(0)=1/6\cdot(P_0+4P_1+P_2) \cdots 式(a)
P(0)=1/6⋅(P0+4P1+P2)⋯式(a)
终止控制点的对应取值:
P
(
1
)
=
1
/
6
⋅
(
P
1
+
4
P
2
+
P
3
)
⋯
式(
b
)
P(1)=1/6\cdot(P_1+4P_2+P_3)\cdots式(b)
P(1)=1/6⋅(P1+4P2+P3)⋯式(b)
端点处的导数等于相邻控制点的连线斜率:
P
′
(
0
)
=
1
/
2
⋅
(
P
2
−
P
0
)
⋯
式(
c
)
P'(0)=1/2\cdot(P_2-P_0)\cdots式(c)
P′(0)=1/2⋅(P2−P0)⋯式(c)
P
′
(
1
)
=
1
/
2
⋅
(
P
3
−
P
1
)
⋯
式(
d
)
P'(1)=1/2\cdot(P_3-P_1)\cdots式(d)
P′(1)=1/2⋅(P3−P1)⋯式(d)
所以P(t)可以写为矩阵形式:
P
(
t
)
=
[
t
3
,
t
2
,
t
,
1
]
M
B
[
P
0
P
1
P
2
P
3
]
P(t)=[t^3, t^2, t ,1]M_B\left[ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
P(t)=[t3,t2,t,1]MB
P0P1P2P3
其中(
M
B
M_B
MB的求解见最后):
M
B
=
1
6
[
−
1
3
−
3
1
3
−
6
3
0
−
3
0
3
0
1
4
1
0
]
M_B=\frac{1}{6} \left[ \begin{array}{} -1& 3 & -3 & 1\\ 3& -6 & 3 & 0\\ -3 & 0 & 3 & 0\\ 1 & 4 & 1 & 0 \end{array} \right]
MB=61
−13−313−604−33311000
代入
t
∈
[
0
,
1
]
t\in[0,1]
t∈[0,1]后可得该四个控制点的B样条曲线。
对于如下图所示的4个P点,代入上述矩阵计算4次(每次都有不同的输入顺序,如:
P
0
,
P
1
,
P
2
,
P
3
P_0, P_1, P_2, P_3
P0,P1,P2,P3或者
P
1
,
P
2
,
P
3
,
P
0
P_1,P_2,P_3,P_0
P1,P2,P3,P0),一次可以求得一段曲线,可求得一个封闭的B样条曲线。
补:
M
B
M_B
MB矩阵求解
:
对应三次参数多项式,我们都可以写为:
P
(
t
)
=
a
t
3
+
b
t
2
+
c
t
+
d
=
[
t
3
,
t
2
,
t
,
1
]
⋅
[
a
b
c
d
]
,
t
∈
[
0
,
1
]
⋯
式(
1
)
P(t) = at^3+bt^2+ct+d=[t^3,t^2,t,1] \cdot \left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right],t\in[0,1] \cdots式(1)
P(t)=at3+bt2+ct+d=[t3,t2,t,1]⋅
abcd
,t∈[0,1]⋯式(1)
其导数为:
P
′
(
t
)
=
[
3
t
2
,
2
t
,
1
,
0
]
⋅
[
a
b
c
d
]
,
t
∈
[
0
,
1
]
⋯
式(
2
)
P'(t) =[3t^2,2t,1,0] \cdot \left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right],t\in[0,1]\cdots式(2)
P′(t)=[3t2,2t,1,0]⋅
abcd
,t∈[0,1]⋯式(2)
将边界条件上式(a),(b),( c), (d) .代入式(1)(2),可得:
P
(
0
)
=
[
0
,
0
,
0
,
1
]
[
a
b
c
d
]
=
1
6
[
1
,
4
,
1
,
0
]
[
P
0
P
1
P
2
P
3
]
P(0)=[0,0,0,1]\left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=\frac{1}{6}[1,4,1,0]\left [ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
P(0)=[0,0,0,1]
abcd
=61[1,4,1,0]
P0P1P2P3
P
(
1
)
=
[
1
,
1
,
1
,
1
]
[
a
b
c
d
]
=
1
6
[
0
,
1
,
1
,
1
]
[
P
0
P
1
P
2
P
3
]
P(1)=[1,1,1,1]\left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=\frac{1}{6}[0,1,1,1]\left [ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
P(1)=[1,1,1,1]
abcd
=61[0,1,1,1]
P0P1P2P3
P
′
(
0
)
=
[
0
,
0
,
1
,
0
]
[
a
b
c
d
]
=
1
2
[
−
1
,
0
,
1
,
0
]
[
P
0
P
1
P
2
P
3
]
P'(0)=[0,0,1,0]\left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=\frac{1}{2}[-1,0,1,0]\left [ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
P′(0)=[0,0,1,0]
abcd
=21[−1,0,1,0]
P0P1P2P3
P
′
(
1
)
=
[
3
,
2
,
1
,
0
]
[
a
b
c
d
]
=
1
2
[
0
,
−
1
,
0
,
1
]
[
P
0
P
1
P
2
P
3
]
P'(1)=[3,2,1,0]\left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=\frac{1}{2}[0,-1,0,1]\left [ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
P′(1)=[3,2,1,0]
abcd
=21[0,−1,0,1]
P0P1P2P3
可将上式整理为一个矩阵计算:
[
0
0
0
1
1
1
1
1
0
0
1
0
3
2
1
0
]
[
a
b
c
d
]
=
1
6
[
1
4
1
0
0
1
1
1
−
3
0
3
0
0
−
3
0
3
]
[
P
0
P
1
P
2
P
3
]
\left [ \begin{array}{} 0&0&0&1\\ 1&1&1&1\\ 0&0&1&0\\ 3&2&1&0\\ \end{array} \right]\left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=\frac{1}{6}\left [ \begin{array}{} 1&4&1&0\\ 0&1&1&1\\ -3&0&3&0\\ 0&-3&0&3\\ \end{array} \right]\left [ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
0103010201111100
abcd
=61
10−30410−311300103
P0P1P2P3
所以可以求得:
[
a
b
c
d
]
=
M
B
⋅
[
P
0
P
1
P
2
P
3
]
\left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=M_B \cdot \left [ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
abcd
=MB⋅
P0P1P2P3
P
(
t
)
=
[
t
3
,
t
2
,
t
,
1
]
⋅
[
a
b
c
d
]
=
[
t
3
,
t
2
,
t
,
1
]
⋅
M
B
[
P
0
P
1
P
2
P
3
]
P(t)=[t^3,t^2,t,1] \cdot \left [ \begin{array}{} a\\ b\\ c\\ d \end{array} \right]=[t^3, t^2, t ,1]\cdot M_B\left[ \begin{array}{} P_0\\ P_1\\ P_2\\ P_3 \end{array} \right]
P(t)=[t3,t2,t,1]⋅
abcd
=[t3,t2,t,1]⋅MB
P0P1P2P3