关于Bezier双三次曲面矩阵的推导

我做个双三次Bezier曲面矩阵的笔记,好把理解的点点滴滴记录下来,以便自己将来遗忘时,可以温习。

三次Bezier曲线矩阵为
\begin{bmatrix} t^{3} & t^{2} & t & 1 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} P0\\P1\\P2\\P3\end{bmatrix}

双三次Bezier曲面矩阵为

\begin{bmatrix} u^{3} & u^{2} & u & 1 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} P00 & P01 & P02 & P03 \\ P10 &P11 & P12 & P13 \\ P20 & P21 & P22 & P23 \\ P30 & P31 & P32 & P33 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} v^{3}\\v^{2} \\ v \\ 1 \end{bmatrix}

下面就是简单从三次Bezier曲线矩阵推导双三次Bezier曲面矩阵过程,

首先前面的矩阵运算是算4条三次Bezier曲线各自的点

\begin{bmatrix} u^{3} & u^{2} & u & 1 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} P00 & P01 & P02 & P03 \\ P10 &P11 & P12 & P13 \\ P20 & P21 & P22 & P23 \\ P30 & P31 & P32 & P33 \end{bmatrix}

等于

\begin{bmatrix} u^{3} & u^{2} & u & 1 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} P00 \\ P10 \\ P20 \\ P30 \end{bmatrix}=Pu_0

\begin{bmatrix} u^{3} & u^{2} & u & 1 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} P01 \\ P11 \\ P21 \\ P31 \end{bmatrix}=Pu_1

。。。

从而可得

\begin{bmatrix} Pu0 & Pu1 & Pu2 & Pu3 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} v^{3}\\v^{2} \\ v \\ 1 \end{bmatrix}

这时你会发现在得到4条u轴上三次Bezier曲线的控制点后,再去求4条v轴上三次Bezier曲线的控制点时,和三次Bezier曲线矩阵相乘顺序相反了,这就是我们现在要证明的地方。

因为矩阵 (A*B*C)^{T}=C^{T}*B^{T}*A^{T},如果B为对称矩阵,即B^{T}=B的话,可得(A*B*C)^{T}=C^{T}*B*A^{T}

又因为 \begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix} 是对称矩阵,可得

\begin{bmatrix} Pu0 & Pu1 & Pu2 & Pu3 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} v^{3}\\v^{2} \\ v \\ 1 \end{bmatrix}=\begin{bmatrix} v^{3} & v^{2} & v^{1} & 1 \end{bmatrix}\begin{bmatrix} -1 & 3 & -3& 1\\ 3 & -6 & 3 & 0 \\ -3 & 3 & 0 & 0 \\ 1 & 0 & 0 & 0 \end{bmatrix}\begin{bmatrix} Pu0 \\ Pu1 \\ Pu2 \\ Pu3 \end{bmatrix},这时就已经得出双三次Bezier曲面矩阵矩阵了。

我想记住的是,如果B是对称矩阵,那么(A*B*C)^{T}=C^{T}*B*A^{T}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值