Transcript
Page 1: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 2: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 3: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

问题背景动画,电影等对复杂,任意拓扑结构网格的需求

NURBS 等传统造型技术在复杂,任意拓扑结构网格上的不足

Page 4: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 5: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

从初始的控制点开始,按照一定的细分规则插入新点,经过反复迭代细化,生成极限的光滑曲线。

细分曲线的基本思想

Page 6: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

简单的例子

Page 7: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程21

21

Page 8: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程81

43

81

Page 9: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程21

21

Page 10: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程81

81 4

3

Page 11: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程

21

21

Page 12: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程

21

21

Page 13: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程

81

81

43

Page 14: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程

Page 15: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分过程

……

Page 16: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

控制点:迭代过程中的点

细化规则:如何插入新点?反复迭代:停止条件?极限存在?

Page 17: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 18: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

细分规则拓扑分裂• 如何增加新的点,产生新的拓扑结构几何平均• 计算新添的点和原始点的几何位置

Page 19: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

拓扑分裂• 曲线细分都是将一条折线变成两条折线

Page 20: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

几何平均• Mask:

𝜔1 𝜔3𝜔2 𝜔4

Page 21: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

收敛和平滑• 收敛性 (convergence)

• 光滑性 (smoothness)

Page 22: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 23: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

分类• 线性

均匀 B 样条细分算法四点插值细分算法

• 非线性 基于非线性平均的细分算法基于法向的非线性细分算法基于曲率的非线性细分算法

Page 24: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 25: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

均匀 B 样条曲线细分算法由初始多边形经过细分规则得到细化多边形,细化多边形的极限为均匀的 B 样条曲线。算法的过程可以形容为一个割角过程。

Page 26: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

B-spline Basis Function

• Definition: Repeated integration

• Order one:

• Order m:

Page 27: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

B-spline Basis Function

• m=1

• m=2

Page 28: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

B-spline Basis Function

• Knots of the B-spline basis function: Z, all integers.

• Knot span: [i,i+1), uniform.

• Any function: P

Page 29: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Properties

is a piecewise polynomial of degree m-1.

is non-negative and its interval is [0,m].

has unit integral.

Page 30: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Refinement Relation

• Dilate(expand) the coordinate: x -> 2x.

• Any function: P

Page 31: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Refinement Relation

• Using basis functions to form the :

If exits, then .

Page 32: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Generating function

• Subdivision mask: coefficient sequence:

• Generating Function: , not a polynomial.

Page 33: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

An example* ,

Page 34: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Theorem

For all m > 1, the generating function of the subdivision mask for the B-spline basis function of order m satisfies the recurrence:

.

Page 35: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Subdivision mask

Starting from , the subdivision mask for B-spline of order m has the form:

Page 36: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Mask

𝑆=(. . .

. 12

12

. 18

34

. . .0 0 018

0 0

.

.

.

. 0 12

. 0 18

. 0 0

12

0 0

34

18

0

12

12

0

.

.

.

. 0 0

. 0 0

. . .

18

34

18

0 12

12

. . .

.

.

.

) , h𝑤 𝑒𝑛𝑚=4

Page 37: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Subdivision Scheme

• Basic refinement relation: .

• The ith coefficient of :

• Upsample , insert a zero coefficient between each coefficient of .

• Subdivision relation of : .

Page 38: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

From program view• Order 3: ,

• Order 4: ,

Page 39: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Chaikin• Mask:

𝑃 𝑖−1 𝑃 𝑖 𝑃 𝑖+1

14

34

Page 40: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Mask

3 14 4

314 4

3 14 4

314 4

1 14 43 34 4

. . . . . .

. 0 0 .

. 0 0 .

. 0 0 .

. 0 0 .

. 0 0 .

. 0 0 .

. . . . . .

Page 41: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

实现• 算法是在每个顶点的两边插入两个点,于是对每个顶点,分别计算它两边的点,保存。数据结构可以直接选择标准库的 vector 。

Page 42: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 43: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 44: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 45: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 46: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 47: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 48: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

四点插值细分算法• 插值算法:保留原控制序列中的点到新的控制序列中,并在原控制序列的两点之间插入一个新点。• Mask 的特点:

Page 49: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

四点插值细分算法把最初的顶点按顺序用直线段连成一条折线段。

进行一步细分,即将上一步的相邻顶点插入一个新的点。去掉上一步的折线段,将生成后的所有顶点按顺序重新连成折线段。

Page 50: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

四点插值细分算法

其中有一个参数需要选择:。当时,产生连续的极限曲线;当时,极限曲线为连续曲线,一般情况下,选择为。Paper: A 4-point interpolatory subdivision scheme for curve design

Page 51: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Mask

𝑃 𝑖−1

𝑃 𝑖−1

𝑃 𝑖𝑃 𝑖+1 𝑃 𝑖+2

𝑃 𝑖 𝑃 𝑖+2𝑃 𝑖+1

1

− 116916 − 116

916

Page 52: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Mask

9 9 116 16 16

9 91 116 16 16 16

9 91 116 16 16 16

9 9116 16 16

. . . . . . .

. 1 0 0 0 0 .

. 0 0 .

. 0 1 0 0 0 .

. 0 .

. 0 0 1 0 0 .

. 0 .

. 0 0 0 1 0 .

. 0 0 .

. . . . . . .

Page 53: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

四点插值细分算法0p

1p

2p

3p 4p

0 1 2 3t

4

Page 54: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

55/96

四点插值细分算法0p

1p

2p

3p 4p

0 1 2 3t

4

Page 55: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

实现• 将原来的每个点插入到新的序列中,对每个顶点计算他附近插入的那个新点的位置,并且插入到新的序列中。同样可以使用标准库的

vector 。

Page 56: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 57: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 58: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 59: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 60: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 61: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析
Page 62: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 63: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

目录• 问题背景• 细分基本思想• 细分的关键因素• 曲线细分算法分类• 几种简单曲线细分算法• 曲线细分 Demo• 曲线细分的收敛性和光滑性分析

Page 64: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Convergence

If the maximal difference between consecutive coefficients of goes to zero as ,the function converge to a continuous function.

Page 65: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Difference Mask

• The difference between consecutive coefficients is :

• Difference at consecutive levels:

Page 66: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Mask of . . . . . .. 1 1 0 0 .. 0 1 1 0 .. 0 0 1 1 .. . . . . .

Page 67: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Subdivision mask for difference

• Definition: Subdivision mask :

: upsample the coefficients .: the difference between the upsampled coefficients.

Page 68: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Theorem• Given a subdivision mask satisfying ,

there exists a subdivision mask relating the difference and of the form:

Page 69: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

𝑆 (−1 )=0• If is invariant under affine transformations, the

rows of the associated subdivision matrix S must sum to one.

• Two types of row: odd and even.

• For the generating function:.

Page 70: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

TheoremGiven an affinely invariant subdivision scheme with associated subdivision matrix S, let matrix T be the subdivision matrix for the differences. If , the associated function converge uniformly as for all initial vectors with bounded norm.

Page 71: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Necessary and sufficient condition

• Uniform convergence: the existence of such that .

• If such an n fails to exist, the difference do not converge.

Page 72: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Properties of • Subdivision n times: , the matrix has

shifts.

• Partition into subsequences corresponding to distinct rows of and compute for .

Page 73: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Divided Differences

First derivative

Substituting

First divided differences:

Page 74: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

𝑡 (𝑥 )Subdivision mask for divided difference:

Using this scheme , we can test the smoothness of the limit function . The method is based on previous section on convergence.

Page 75: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

𝑝∞ (𝑥 ) ϵ𝐶𝑚?( 计算 m 阶导数 )

If and only if there exists such that

Page 76: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

𝑆 (𝑥 )(1+𝑥 )𝑚+1 ?

Theorem: if S(x) defines a subdivision scheme for which the integer translates of its scaling function are linearly independent and capable of reproducing all polynomials up to degree m, the mask s(x) satisfies .

Page 77: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Example: smoothnessThe four-point scheme:

9 9 116 16 16

9 91 116 16 16 16

9 91 116 16 16 16

9 9116 16 16

. . . . . . .

. 1 0 0 0 0 .

. 0 0 .

. 0 1 0 0 0 .

. 0 .

. 0 0 1 0 0 .

. 0 .

. 0 0 0 1 0 .

. 0 0 .

. . . . . . .

Page 78: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

convergence

1 1 116 2 161 1 116 2 16

1 1 116 2 161 1 116 2 16

1 1 116 2 161 1 116 2 16

. . . . . . .

. 0 0 .

. 0 0 .

. 0 0 .

. 0 0 .

. 0 0 .

. 0 0 .

. . . . . . .

Page 79: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

𝐶1

Page 80: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

Matlab• function max = smooth(n,t)• v = t;• zeronum = 1;• for i=1:n• u = [];• for j=1:length(t)-1• u = [u,t(j)];• u = [u,zeros(1,zeronum)];• end• u = [u,t(end)];• v = conv(v,u);• zeronum = zeronum+2^i;• end

• step=2^(n+1);• max= 0;• for i=1:2^(n+1)• j=0;val=0;• while(j*step+i<=length(v))• val = val + abs(v(j*step+i));• j = j+1;• end• if(max<val)• max = val;• end• end

Page 81: 问题背景 细分基本思想 细分的关键因素 曲线细分算法分类 几种简单曲线细分算法 曲线细分 Demo 曲线细分的收敛性和光滑性分析

𝐶2

• Can’t converge to