双三次Bezier曲面算法
Posted 帅气无敌朋子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双三次Bezier曲面算法相关的知识,希望对你有一定的参考价值。
双三次Bezier曲面
定义
- 双三次Bezier曲面由u,v方向的两组三次Bezier曲线交织而成,控制网格由16和控制点构成。
\\[p(u,v)=
\\left[\\begin{matrix}
u^3 & u^2 & u & 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,0} &P_{0,1} & P_{0,2} & P_{0,3}\\\\
P_{1,0} & P_{1,1} & P_{1,2} & P_{1,3} \\\\
P_{2,0} & P_{2,1} & P_{2,2} & P_{2,3} \\\\
P_{3,0} & P_{3,1} &P_{3,2} & P_{3,3}
\\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}
u^3\\\\
u^2 \\\\
u \\\\
1
\\end{matrix}\\right]
\\]
- 简写为
\\[P(u,v)=UMPM^TV^T
\\]
递归细分
- 采用四叉树递归划分法细分曲面
曲面片的法向量
- 曲面上一个细分点的\\(u\\)方向切向量为\\(p_u\\),\\(v\\)方向上的切向量为\\(p_v\\):
\\[p_u=\\frac{\\partial p(u,v)}{\\partial u}, p_v=\\frac{\\partial p(u,v)}{\\partial v}
\\]
细分点在面上的法向量为:
\\[N=\\frac{\\partial p(u,v)}{\\partial v}\\times \\frac{\\partial p(u,v)}{\\partial v}
\\]
- 双三次曲面上法向量:
\\[ p^`_u(u,v)=
\\left[\\begin{matrix}
3u^2 & 2u & 1 &0
\\end{matrix}\\right]MPM^TV^T
\\]
\\[ p^`_v(u,v)=UMPM^T
\\left[\\begin{matrix}
3u^2 & 2u & 1 &0
\\end{matrix}\\right]^T
\\]
\\[N=p^`_u(u,v)\\times p^`_v(u,v)
\\]
以上是关于双三次Bezier曲面算法的主要内容,如果未能解决你的问题,请参考以下文章