曲线
1、贝塞尔曲线
(1)目的:用一系列控制点定义曲线,如下图定义了起点为p0,终点为p3,且起始和结束切线为p0p1方向和p2p3方向,属于显式表示。
(2)生成方法:de Casteljau算法,枚举所有的t,递归计算t对应的位置,
计算得到的每个点都是给定点的线性组合:
贝塞尔曲线的性质:
第二条性质仅针对给定三个点。
第三条性质:对于给定点做仿射变换,变换后得到的贝塞尔曲线,一定和对原贝塞尔曲线上每个点做仿射变换后,再次得到的贝塞尔曲线一致。
第四条性质:凸包性质,指贝塞尔曲线一定在控制点构成的凸包内。
(3)逐段贝塞尔曲线
贝塞尔曲线的一个问题:控制点多时不好用控制点控制曲线的形状
因此采用逐段定义,每四个控制点定义一条贝塞尔曲线,带来一个问题就是要保证段与段之间的连续性,方法是将点拉到共线和控制点等距离。
C0连续:第一段终止点等于第二段起点
C1连续:
2、样条(Spline)曲线
经过所有控制点的曲线?
B样条曲线(basis splines):相当于贝塞尔曲线的扩展,不分段也能限制改变单个控制点影响的范围。
面的细分、简化、正则化
1、面的细分 Mesh subdivision
(1)Loop细分
前提所有网格都是三角形网格
(2)Catmul细分
对一般性情况(非三角形)的网格细分,经过一次catmul细分之后,所有非四边形面都会变成四边形面,会增加非四边形数目的奇异点(度不为4的点)。
2、面的简化 Mesh Simplification
当距离较远观察时,观察效果受面数影响变小,可以简化面数提高性能。
计算方法:
一种方法,边坍缩
计算方法:二次误差度量,找到距离平方之和最小的点,使“坍缩”对其他面造成的影响最小。