双三次贝塞尔补丁 - 理解困难

bicubic bezier patch - trouble with understanding

我得到 双三次贝塞尔 补丁存储为 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.01.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) }

评估并绘制 'orthogonal'(横向)曲线。

我无法理解一件事,第一条基曲线的那些控制点 B、C 是控制点,据我所知不在表面上。那些所有评估 p(t) 的四个基曲线位于表面* ,然后我使用它们评估正交曲线(有点像正交 A' B' C' D')然后评估 q(t) 我用来绘制的值路径

但简而言之,可以肯定的是:

我用四个{A, B, C, D}组来评估四个p(t)曲线 t 以1/30的步数走,三十步;然后我将那些 p(t) 点作为 {A' B' C' D'} 来评估 q(t) orthogonal/transverse 曲线

我无法理解的是:

如果基曲线中的B,C不在表面上,为什么在第二步中我取p2(t), p3(t)点。如果它们作为 B' C' 控制点放置在表面上?

这不是不一致吗?

或者也许评估 p[1,2](t) 也不铺设在表面上 - 但如果是这样,为什么所有横向评估 q(t) 都铺设在评估 p(t) 不铺设的表面上?不矛盾吗?如果我在 p 方向求值,我得到虚拟点,如果我在 q 方向求值,我得到实点 ?

有人可以解释一下吗?

我不明白你卡在哪里了,但是贝塞尔曲面控制点不在曲面本身(好吧,不是所有的,4 个角都在)。

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


分析型

维基百科显示的那个:

其中 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