1.曲面定义
曲面(Surface)在图形学中应用非常广泛,可以用它来描述各种三维物体的表面。如下图所示。
2.贝塞尔曲面
2.1 介绍
曲线和曲面一样都是物体显示的表示方法,自然可以把曲线的概念延伸到平面上。如上图所示,就是贝塞尔曲面(Bezier Surface)构成的表面,并且可以看到是分段面拼接的。
如果对完整的表面进行分解,如上图所示,展示了空间中 4 x 4 个控制点所构成的贝塞尔曲面。贝塞尔曲线控制点都是在同一平面内,那么贝塞尔曲面的控制点则是分部在三维空间中。
2.2 绘制算法
贝塞尔曲面的绘制算法本质上还是基于 De Casteljau's Algorithm 进行多次绘制。如下图所示,首先基于预设的所有控制点(比如:4 x 4 的控制点),绘制 4 条贝塞尔曲线(灰色线)。然后在与曲线垂直的平面中开始绘制曲线,以 4 条贝塞尔曲线上的点作为控制点(输入一个时间 t ),绘制贝塞尔曲线(蓝色线)。
以此类推(给定另外时间 t ) ,不断地输入控制点,最终得到一个贝塞尔曲面。如下图所示。
那么不同的贝塞尔曲面如何拼接在一块?
2.3 计算(u,v)对应的曲面位置
在上述绘制贝塞尔曲面中,需要两个不同的时间 t ,在绘制水平面上需要一个时间 t 绘制四条赛贝尔曲线。然后找到 4 个控制点后连成曲线,还需要一个时间 t 绘制。也就是说需要一个二维的数值去控制,可以用[u,v]去表示。如下图所示。
这样就可以用某一个u沿着四条贝塞尔曲线找到时间u的位置,这样得到四个蓝色的点。再输入v,在蓝色曲线上找到时间v。这样就找到了一个点(u,v),这个点就是曲面在参数u,v下面的位置。那么就可以得到在参数u,v都在0-1范围内,就可以映射成曲面上的任何一个点。如下图所示。
这也说明贝塞尔曲线是显式几何表示