我将 bicubic bezier 补丁存储为16个float3
点
float3 bezier[16];
那些是4组4分
{A4 B4 C4 D4} // 4th curve
{A3 B3 C3 D3} //3rd curve
{A2 B2 C2 D2} //2nd curve
{A1 B1 C1 D1} //1st curve
好吧,我评估t, p(t)
来自t
到0.0
的给定1.0
的点数。这很简单。我使用这一点,如:
{1st curve point p0(t=0 ) , 2nd curve point p1(t=0 ), 3rd p2(t=0 ), 4th p3(t=0 ) }
{1st curve p0(t=0.1) , 2nd p1(t=0.1), 3rd p2(t=0.1), 4th p3(t=0.1) }
评估和绘制正交' (横向)曲线。
我无法理解一件事,第一根曲线的控制点B,C是控制点,据我所知,不要躺在表面上。那些在四条基础曲线上评估p(t)
的所有曲线都放在曲面*上,我用它们来评估正交曲线(sorta就像正交A' B' C' D'
)然后评估我用来绘制的q(t)
值路径
但简而言之,肯定会理解:
我使用四个{A, B, C, D}
集来评估四条p(t)
曲线
t
采取步骤,如1/30,三十步;然后我将这些p(t)
点作为{A' B' C' D'}
来评估q(t)
正交/横向曲线
我无法理解的是:
如果基础曲线中的B,C
不在表面上,为什么在第二步中我会获得p2(t), p3(t)
分。如果他们作为B' C'
控制点躺在水面上?
它不一致吗?
或者也许评估p[1,2](t)
不要躺在水面上 - 但如果是这样的话,为什么所有横向评估的q(t)
都铺设在评估p(t)
未铺设的表面上?它不一致吗?如果我在p
方向评估 - 我得到虚拟点,如果我在q
方向评估,我得到了真正的分数?
有人可以解释一下吗?
答案 0 :(得分:4)
我不明白你被困在哪里,但Bezier表面控制点不在表面本身(好吧,不是全部,4个角落都有)。
要评估Bezier曲面上的点,您需要这些控制点,但需要它们将它们插入Bezier曲面方程。描述方程有两种主要方式:分析形式和矩阵形式。
维基百科显示的那个:
其中 K 是你的控制点,u,v从0到1。
矩阵在哪里:
在这种情况下,P是控制点,但u,v也是0到1。
您可以选择其中任何一个来计算曲面中的任何点,只需通过评估给定的12个控制点和选定的u,v对的等式。
来源:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/AV0405/DONAVANIK/bezier.html