openGL参数曲面----二次贝塞尔曲线

openGL系列文章目录

文章目录

  • openGL系列文章目录
  • 前言
  • 一、二次贝塞尔曲线
  • 参考

前言

在20 世纪50 年代和60 年代在雷诺公司工作期间,皮埃尔·贝塞尔(Pierre Bézier)开
发了用于设计汽车车身的软件系统。他的程序利用了Paul de Casteljau 之前开发的数学方程
组,后者曾为竞争对手雪铁龙汽车制造商[BE72,DC63]工作。de Casteljau 方程仅使用几个标量
参数描述曲线,同时使用一种高明的的递归算法,称为“de Casteljau 算法”,就可以生成任
意精度的曲线。现在它们分别被称为“贝塞尔曲线”和“贝塞尔曲面”,这些方法通常用于
高效地对各种曲面3D 物体进行建模。

一、二次贝塞尔曲线

二次贝塞尔曲线由一组参数方程定义,方程组中使用3 个控制点指定特定的曲线的形状,
每个控制点都是2D 空间中的一个点。①考虑图11.1 中所示的一组3 个点[p0,p1,p2]。
通过引入参数t,我们可以构建一个用来定义曲线的参数方程组。t 表示从一个控制点到
另一控制点间线段距离的分数。对于在线段上的点,t 的值在[0…1]的范围内。图11.2 显示
了一个这样的值:t = 0.75,分别应用于连接p0-p1 和p1-p2 的线段。通过t 在两条原始线段上
定义了两个新点p01(t)和p12(t)。我们对连接两个新点p01(t)和p12(t)的线段重复该过程,产生
点P(t),其中沿线段p01(t)和p12(t)在t = 0.75 得到点P(t)。P(t)是最终得到的曲线上的点,因
此用大写字母P 表示。
openGL参数曲面----二次贝塞尔曲线_第1张图片
图1
针对各种t 值收集大量的点P(t),则会产生一条曲线,如图11.3 所示。采样的t 的参数
值越多,生成的点P(t)越多,得到的曲线则越平滑。现在可以导出二次贝塞尔曲线的分析定义。首先,我们注意到连接两个点pa 和pb 的线段pa−pb 上的任意点p 可以用参数t 表示如下:
在这里插入图片描述
openGL参数曲面----二次贝塞尔曲线_第2张图片

                                                                       图2

openGL参数曲面----二次贝塞尔曲线_第3张图片
图3

openGL参数曲面----二次贝塞尔曲线_第4张图片
图4
因此,我们通过控制点的加权和解出曲线上的任意点。加权函数B 通常被称为“混合函
数”(尽管名称“B”实际上源自Sergei Bernstein [BE16],他首先描述了这个多项式族)。请注
意,混合函数的形式都是二次的,这就是为什么得到的曲线称为二次贝塞尔曲线。

参考

计算机图形学编程 使用OpenGL和C++

你可能感兴趣的:(openGL,openGL实现二次贝塞尔曲线)