1 / 28

3 . 2 . 2 Bezier 曲线的 递推 (de Casteljau) 算法

3 . 2 . 2 Bezier 曲线的 递推 (de Casteljau) 算法. 计算 Bezier 曲线上的点,可用 Bezier 曲线方程,但使用 de Casteljau 提出的递推算法则要简单的多。 如下图所示,设 、 、 是一条抛物线上顺序三个不同的点。过 和 点的两切线交于 点 , 在 点的切线交 和 于 和 ,则如下比例成立: 这是所谓抛物线的 三切线定理 。 ( 示意图见下页 ). 当 P 0 , P 2 固定,引入参数 t ,令上述比值为 t:(1-t) ,即有:

Download Presentation

3 . 2 . 2 Bezier 曲线的 递推 (de Casteljau) 算法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3.2.2 Bezier曲线的递推(de Casteljau)算法 计算Bezier曲线上的点,可用Bezier曲线方程,但使用de Casteljau提出的递推算法则要简单的多。 如下图所示,设 、 、 是一条抛物线上顺序三个不同的点。过 和 点的两切线交于 点,在 点的切线交 和 于 和 ,则如下比例成立: 这是所谓抛物线的三切线定理。(示意图见下页) 清华大学 计算机图形学

  2. 清华大学 计算机图形学

  3. 当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有:当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有: • t从0变到1,第一、二式就分别表示控制二边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得: • 当t从0变到1时,它表示了由三顶点P0、P1、P2三点定义的一条二次Bezier曲线。 • 并且表明:这二次Bezier曲线P20可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合。依次类推,由四个控制点定 清华大学 计算机图形学

  4. 义的三次Bezier曲线P30可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的二条二次Bezier曲线的线性组合,由(n+1)个控制点Pi(i=0, 1, ..., n)定义的n次Bezier曲线Pn0可被定义为分别由前、后n个控制点定义的两条(n-1)次Bezier曲线 P0n-1与P1n-1的线性组合: • 由此得到Bezier曲线的递推计算公式: • 这便是著名的de Casteljau算法。用这一递推公式,在给定参数下,求Bezier曲线上一点P(t)非常有效。上式中:是定义Bezier 清华大学 计算机图形学

  5. 曲线的控制点, 即为曲线 上具有参数t的点。de Casteljau算法稳定可靠,直观简便,可以编出十分简捷的程序,是计算Bezier曲线的基本算法和标准算法。 当n=3时,de casteljau算法递推出的Pki呈直角三角形,对应结果如图3.1.11所示。从左向右递推,最右边点P30即为曲线上的点。 清华大学 计算机图形学

  6. 清华大学 计算机图形学

  7. 这一算法可用简单的几何作图来实现。给定参数 ,就把定义域分成长度为 的两段。依次对原始控制多边形每一边执行同样的定比分割,所得分点就是由第一级递推生成的中间顶点 , 对这些中间顶点构成的控制多边形再执行同样的定比分割,得第二级中间顶点 。重复进行下去,直到n级递推得到一个中间顶点 即为所求曲线上的点 ,如图3.1.12所示。 清华大学 计算机图形学

  8. 清华大学 计算机图形学

  9. 3.2.3 Bezier曲线的拼接 几何设计中,一条Bezier曲线往往难以描述复杂的曲线形状。这是由于增加由于特征多边形的顶点数,会引起Bezier曲线次数的提高,而高次多项式又会带来计算上的困难, 实际使用中,一般不超过10次。 所以有时采用分段设计,然后将各段曲线相互连接起来,并在接合处保持一定的连续条件。 下面讨论两段Bezier曲线达到不同阶几何连续的条件。 清华大学 计算机图形学

  10. 给定两条Bezier曲线P(t)和Q(t),相应控制点为Pi(i=0, 1, ..., n)和Qj(j=0,1,..., m),且令 ,如图3.1.13所示,我们现在把两条曲线连接起来。 图3.1.13 Bezier曲线的拼接 清华大学 计算机图形学

  11. (1)要使它们达到G0连续的充要条件是:Pn= Q0; • (2)要使它们达到G1连续的充要条件是:Pn-1,Pn=Q0,Q1三点共线,即: • (3)要使它们达到G2连续的充要条件是:在G1连续的条件下,并满足方程 。 • 我们将 、 和 , 、 代入,并整理,可以得到: • 选择 和 的值,可以利用该式确定曲线段 的特征多边形顶点 ,而顶点 、 已被 连续条件所确定。要达到 连续的话,只剩下顶点 可以自由选取。 清华大学 计算机图形学

  12. 如果从上式的两边都减去 ,则等式右边可以表示为 和 的 线性组合: 这表明 、 、 、 和 五点共面,事实上,在接合点两条曲线段的曲率相等,主法线方向一致,我们还可以断定: 、 位于直线 的同一侧。 清华大学 计算机图形学

  13. 3.2.4 Bezier曲线的升阶与降阶 1.Bezier曲线的升阶 所谓升阶是指保持Bezier曲线的形状与定向不变,增加定义它的控制顶点数,也即是提高该Bezier曲线的次数。 增加了控制顶点数,不仅能增加了对曲线进行形状控制的灵活性,还在构造曲面方面有着重要的应用。 对于一些由曲线生成曲面的算法,要求那些曲线必须是同次的。应用升阶的方法,我们可以把低于最高次数的的曲线提升到最高次数,而获得同一的次数。 曲线升阶后,原控制顶点会发生变化。下面,我们来计算曲线提升一阶后的新的控制顶点。 设给定原始控制顶点 ,定义了一条n次Bezier曲线: 清华大学 计算机图形学

  14. 增加一个顶点后,仍定义同一条曲线的新控制顶点为 ,则有: 对上式左边乘以 ,得到: 比较等式两边 项的系数,得到: 化简即得: 其中 。 清华大学 计算机图形学

  15. 此式说明: • 新的控制顶点 是以参数值 按分段线性插值从原始特征多边形得出的。 • 升阶后的新的特征多边形在原始特征多边形的凸包内 • 特征多边形更靠近曲线。 • 三次Bezier曲线的升阶实例如图3.1.14所示。 清华大学 计算机图形学

  16. 清华大学 计算机图形学

  17. 2.Bezier曲线的降阶 • 降阶是升阶的逆过程。给定一条由原始控制顶点 定义的n次Bezier曲线,要求找到一条由新控制顶点 定义的n-1次Bezier曲线来逼近原始曲线。 • 假定 是由 升阶得到,则由升阶公式有: • 从这个方程可以导出两个递推公式: • 和 清华大学 计算机图形学

  18. 3.2.5 Bezier曲面 基于Bezier曲线的讨论,我们可以方便地可以给出Bezier曲面的定义和性质,Bezier曲线的一些算法也可以很容易扩展到Bezier曲面的情况。 清华大学 计算机图形学

  19. 1.定义 设 为 个空间点列,则 次张量积形式的Bezier曲面定义为: 其中 , 是Bernstein基函数。依次用线段连接点列中相邻两点所形成的空间网格,称之为特征网格。 清华大学 计算机图形学

  20. Bezier曲面的矩阵表示式是: 在一般实际应用中, 不大于4。 清华大学 计算机图形学

  21. 2.性质 除变差减小性质外,Bezier曲线的其它性质可推广到Bezier曲面: (1)Bezier曲面特征网格的四个角点正好是Bezier曲面的四个角点,即 , , , 。 (2)Bezier曲面特征网格最外一圈顶点定义Bezier曲面的四条边界;Bezier曲面边界的跨界切矢只与定义该边界的顶点及相邻一排顶点有关,且 、 、 和 (图3.1.15打上斜线的三角形);其跨界二阶导矢只与定义该边界的及相邻两排顶点有关;…。 清华大学 计算机图形学

  22. (3)几何不变性。 (4)对称性。 (5)凸包性。 清华大学 计算机图形学

  23. 3.Bezier曲面片的拼接 如图3.1.16所示,设两张m×n次Bezier曲面片 分别由控制顶点 和 定义。 清华大学 计算机图形学

  24. 如果要求两曲面片达到 连续,则它们有公共的边界,即: • ( 3.1.10) • 于是有 • 如果又要求沿该公共边界达到 连续,则两曲面片在该边界上有公共的切平面,因此曲面的法向应当是跨界连续的,即: • (3.1.11) 清华大学 计算机图形学

  25. 4.递推(de Casteljau)算法 • Bezier曲线的递推(de Casteljau)算法,可以推广到Bezier曲面的情形。若给定Bezier曲面特征网格的控制顶点 和一对参数值 ,则: • (3.1.14) 清华大学 计算机图形学

  26. 其中 (3.1.15) 或 (3.1.16) 清华大学 计算机图形学

  27. (3.1.15)与(3.1.16)中的下标 的变化范围已在(3.1.14)式中给出。上面给出了确定曲面上一点的两种方案。当按(3.1.15)式方案执行时,先以u参数值对控制网格u向的n+1个多边形执行曲线de Casteljau算法,m级递推后,得到沿v向由n+1个顶点 构成的中间多边形。再以v参数值对它执行曲线的de Casteljau算法,n级递推以后,得到一个 ,即所求曲面上的点 清华大学 计算机图形学

  28. 也可以按(3.1.16) 式方案执行,先以v参数值对控制网格沿v向的m+1个多边形执行n级递推,得沿u向由m+1个顶点 构成的中间多边形。再以u参数值对它执行n级递推,得所求点 。 清华大学 计算机图形学

More Related