双重贝塞尔补丁 - 理解上的麻烦

时间:2016-01-07 08:53:06

标签: matlab math 3d geometry bezier

我将 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)来自t0.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方向评估,我得到了真正的分数?

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:4)

我不明白你被困在哪里,但Bezier表面控制点不在表面本身(好吧,不是全部,4个角落都有)。

enter image description here

要评估Bezier曲面上的点,您需要这些控制点,但需要它们将它们插入Bezier曲面方程。描述方程有两种主要方式:分析形式和矩阵形式。

Analitic形式

维基百科显示的那个:

enter image description here

enter image description here

其中 K 是你的控制点,u,v从0到1。

矩阵表格

enter image description here

矩阵在哪里:

enter image description here

enter image description here

enter image description here

在这种情况下,P是控制点,但u,v也是0到1。

您可以选择其中任何一个来计算曲面中的任何点,只需通过评估给定的12个控制点和选定的u,v对的等式。

来源:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/AV0405/DONAVANIK/bezier.html