几何平均

Download Report

Transcript 几何平均

目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
问题背景
动画,电影等对复杂,任意拓
扑结构网格的需求
NURBS等传统造型技术在复杂,
任意拓扑结构网格上的不足
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
细分曲线的基本思想
从初始的控制点开始,按照一定
的细分规则插入新点,经过反复
迭代细化,生成极限的光滑曲线。
简单的例子
细分过程
1
2
1
2
细分过程
1
8
3
4
1
8
细分过程
1
2
1
2
细分过程
1
8
1
8
3
4
细分过程
1
2
1
2
细分过程
1
2
1
2
细分过程
3
4
1
8
1
8
细分过程
细分过程
……
控制点:迭代过程中的点
细化规则:如何插入新点?
反复迭代:停止条件?极限存在?
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
细分规则
拓扑分裂
• 如何增加新的点,产生新的拓扑结构
几何平均
• 计算新添的点和原始点的几何位置
拓扑分裂
• 曲线细分都是将一条折线变成两条折线
几何平均
• Mask:
• 𝑃0 = 𝑖 𝜔𝑖 𝑃𝑖
𝜔1
𝜔2
𝜔3
𝜔4
收敛和平滑
• 收敛性(convergence)
• 光滑性(smoothness)
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
分类
• 线性
均匀B样条细分算法
四点插值细分算法
• 非线性
基于非线性平均的细分算法
基于法向的非线性细分算法
基于曲率的非线性细分算法
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
均匀B样条曲线细分算法
由初始多边形经过细分规则得到细
化多边形,细化多边形的极限为均
匀的B样条曲线。
算法的过程可以形容为一个割角过
程。
B-spline Basis Function
• Definition: Repeated integration
1, if 0 ≤ 𝑥 < 1
• Order one:𝑛 𝑥 =
0,otherwise
1
• Order m:
𝑛
𝑚
𝑥 =
1 𝑚−1
𝑛
0
𝑥−
B-spline Basis Function
• m=1
• m=2
B-spline Basis Function
• Knots of the B-spline basis function: Z, all
integers.
• Knot span: [i,i+1), uniform.
• Any function:
P 𝑥 =
∞
𝑚
𝑝
𝑛
𝑖=−∞ 𝑖
𝑥−
Properties
𝑛𝑚 𝑥) is a 𝐶 𝑚−2 piecewise polynomial of degree m-1.
𝑛𝑚 𝑥) is non-negative and its interval is [0,m].
𝑛𝑚 𝑥) has unit integral.
Refinement Relation
• Dilate(expand) the coordinate: x -> 2x.
• Any function:
P 𝑥 =
∞
′ 𝑚
𝑝
𝑖=−∞ 𝑖 𝑛
2𝑥 −
Refinement Relation
• Using 𝑛𝑚 2𝑥 basis functions to form the
𝑛𝑚 𝑥 :
𝑆𝑖𝑚 𝑛𝑚 2𝑥 − 𝑖
𝑛𝑚 𝑥 =
𝑖∈𝑧
If 𝑆𝑖𝑚 exits, then 𝑁 𝑥 = 𝑁 2𝑥 𝑆.
𝑁 2𝑥 𝑝′ = 𝑁 𝑥 𝑝 = 𝑁 2𝑥 𝑆𝑝
⇒ 𝑝′ = 𝑆𝑝
Generating function
• Subdivision mask: coefficient sequence:
𝑚
𝑆 𝑚 = … , 𝑆−𝑛
, … , 𝑆0𝑚 , … , 𝑆𝑛𝑚 , … )
• Generating Function: 𝑆
not a polynomial.
𝑚
𝑥 =
𝑚 𝑖
𝑖∈𝑧 𝑆𝑖 𝑥 ,
An example
* 𝑆1 𝑥 = 1 + 𝑥,
𝑛1 𝑥 = 𝑛1 2𝑥 + 𝑛1 2𝑥 − 1)
Theorem
For all m > 1, the generating function of the
subdivision mask 𝑆 𝑚 𝑥) for the B-spline basis
function 𝑛𝑚 𝑥 of order m satisfies the
recurrence:
1
𝑚
𝑆 𝑥 = 1 + 𝑥)𝑆 𝑚−1 𝑥).
2
Subdivision mask
Starting from 𝑆1 𝑥 = 1 + 𝑥, the subdivision
mask for B-spline of order m has the form:
1
𝑚
𝑆 𝑥 = 𝑚−1 1 + 𝑥)𝑚
2
Mask
.
.
.
• 𝑆=
.
.
.
.
1
2
1
8
.
1
2
3
4
.
0
1
8
1
2
3
4
1
2
1
8
. .
0 0
0 0
.
.
.
0 0 .
0 12
1
1
. , 𝑤ℎ𝑒𝑛 𝑚 = 4
0
0 8
8
.
1
0
0 0
2
3
1
.
. 0 0
4
8
. 0 0 0 1 1 .
2
2
. . . . . . .
Subdivision Scheme
• Basic refinement relation: 𝑝𝑘 = 𝑆𝑝𝑘−1 .
• The ith coefficient of 𝑝𝑘 : 𝑝𝑘,𝑖 =
𝑚
𝑆
𝑗∈𝑍 𝑖−2𝑗 𝑝𝑘−1,𝑗
• Upsample 𝑝𝑘−1,𝑗 , insert a zero coefficient between each
coefficient of 𝑝𝑘−1,𝑗 .
𝑚
𝑆𝑖−2𝑗
𝑝𝑘−1,𝑗 ⇒ 𝑝𝑘,𝑖 =
𝑝𝑘,𝑖 =
𝑗∈𝑍
𝑚
𝑆𝑖−2𝑗
𝑝𝑘−1,2𝑗
𝑗∈𝑍
• Subdivision relation of 𝑝𝑘 :
𝑝𝑘 𝑥 = 𝑆 𝑚 𝑥 𝑝𝑘−1 𝑥 2 .
From program view
• Order 3:
𝑆3
𝑥 =
1
4
1+
1 3 3 1
3
𝑥) , , , , )
4 4 4 4
3
1
𝑝𝑘,2𝑖−1 = 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖−1
4
4
3
1
𝑝𝑘,2𝑖 = 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1
4
4
• Order 4:
𝑝𝑘,2𝑖
𝑆4
𝑥 =
1
8
1+
1 1 3 1 1
4
𝑥) , , , , , )
8 2 4 2 8
1
3
1
= 𝑝𝑘−1,𝑖−1 + 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1
8
4
8
1
1
𝑝𝑘,2𝑖+1 = 𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1
2
2
Chaikin
• Mask:
𝑃𝑖−1
3
4
1
4
𝑃𝑖
𝑃𝑖+1
Mask
实现
• 算法是在每个顶点的两边插入两个
点,于是对每个顶点,分别计算它
两边的点,保存。数据结构可以直
接选择标准库的vector。
四点插值细分算法
• 插值算法:保留原控制序列中的点到新的
控制序列中,并在原控制序列的两点之间
插入一个新点。
• Mask的特点:
𝑆 0 = 1, 𝑆 2𝑖 = 0, 𝑓𝑜𝑟 𝑎𝑙𝑙 𝑖 ≠ 0
四点插值细分算法
把最初的顶点按顺序用直线
段连成一条折线段。
进行一步细分,即将上一步
的相邻顶点插入一个新的点。
去掉上一步的折线段,将生
成后的所有顶点按顺序重新
连成折线段。
四点插值细分算法
𝑝𝑘,2𝑖 = 𝑝𝑘−1,𝑖
𝑝𝑘,2𝑖+1 =
1
+
2
𝜔
𝑝𝑘−1,𝑖 + 𝑝𝑘−1,𝑖+1 − 𝜔 𝑝𝑘−1,𝑖−1 + 𝑝𝑘−1,𝑖+2 )
其中有一个参数需要选择:𝜔。
1
4
1
8
1
1
极限曲线为𝐶 连续曲线,一般情况下,𝜔选择为 。
16
当 𝜔 < 时,产生连续的极限曲线;当0 < ω < 时,
Paper: A 4-point interpolatory subdivision
scheme for curve design
Mask
1
𝑃𝑖−1
𝑃𝑖
𝑃𝑖+1
1
−
16
9
16
9
16
1
−
16
𝑃𝑖
𝑃𝑖+1
𝑃𝑖+2
𝑃𝑖−1
𝑃𝑖+2
Mask
四点插值细分算法
p0
p2
p1
0
1
p3
2
3
p4
4
t
四点插值细分算法
p0
p2
p1
0
1
p4
p3
2
3
4
t
55/96
实现
• 将原来的每个点插入到新的序列中,
对每个顶点计算他附近插入的那个
新点的位置,并且插入到新的序列
中。同样可以使用标准库的vector。
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
目录
•
•
•
•
•
•
•
问题背景
细分基本思想
细分的关键因素
曲线细分算法分类
几种简单曲线细分算法
曲线细分Demo
曲线细分的收敛性和光滑性分析
Convergence
If the maximal difference between
consecutive coefficients of 𝑃𝑘 goes to zero
as 𝑘 → ∞,the function 𝑃 𝑥) converge to a
continuous function.
Difference Mask
• 𝑑 𝑥 =1−𝑥
• The difference between consecutive
coefficients is :𝑑 𝑥 𝑝𝑘 𝑥)
• Difference at consecutive levels:
𝑑 𝑥 𝑝𝑘−1 𝑥 , 𝑑 𝑥)𝑝𝑘 𝑥)
Mask of 𝑑 𝑥)
Subdivision mask for difference
• Definition: Subdivision mask 𝑡 𝑥 :
𝑑 𝑥 𝑝𝑘 𝑥 = 𝑡 𝑥 [𝑑 𝑥 2 𝑝𝑘−1 𝑥 2 )]
𝑝𝑘−1 𝑥 2 ): upsample the coefficients 𝑝𝑘−1 .
𝑑 𝑥 2 𝑝𝑘−1 𝑥 2 ): the difference between
the upsampled coefficients.
Theorem
• Given a subdivision mask 𝑆 𝑥) satisfying
𝑆 −1 = 0, there exists a subdivision
mask 𝑡 𝑥 relating the difference
𝑑 𝑥)𝑝𝑘−1 𝑥) and 𝑑 𝑥)𝑝𝑘 𝑥) of the form:
𝑆 𝑥)
𝑡 𝑥 =
1+𝑥
𝑆 −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:
𝑆 1 =2
.
𝑆 −1 = 0
Theorem
Given an affinely invariant subdivision
scheme with associated subdivision matrix
S, let matrix T be the subdivision matrix for
the differences. If 𝑇 < 1, the associated
function 𝑝𝑘 𝑥 converge uniformly as 𝑘 →
∞ for all initial vectors 𝑝0 with bounded
norm.
Necessary and sufficient condition
• Uniform convergence: the existence of
𝑛 > 0 such that 𝑇 𝑛 < 1.
• If such an n fails to exist, the difference
do not converge.
Properties of 𝑇
𝑛
• Subdivision n times: 𝑡 ′ 𝑥 =
𝑛−1
2𝑖
𝑛
𝑛
𝑖=0 𝑡 𝑥 ), the matrix 𝑇 has 2 shifts.
• Partition 𝑡 ′ into 2𝑛 subsequences
corresponding to distinct rows of 𝑇 𝑛 and
compute 𝑚𝑎𝑥𝑖 𝑗 𝑡 ′ 2𝑛 𝑗 + 𝑖) for 𝑖 =
1 … 2𝑛 − 1.
Divided Differences
First derivative 𝑝′ 𝑥 :
𝑝 𝑥 − 𝑝 𝑥 − 𝑡)
′
𝑝 𝑥 = lim
𝑡→0
𝑡
Substituting 𝑡 =
1
2𝑘
𝑝′ 𝑥 = lim 2𝑘 𝑝 𝑥 − 𝑝 𝑥 − 2𝑘 ))
𝑘→∞
First divided differences:
𝑑𝑘 𝑥 = 2𝑘 𝑑 𝑥 = 2𝑘 1 − 𝑥)
𝑡 𝑥)
Subdivision mask for divided difference:
𝑑 𝑥)𝑑𝑘 𝑥 𝑆 𝑥 = 𝑡 𝑥 𝑑 𝑥 2 )𝑑𝑘−1 𝑥 2
2𝑆 𝑥
⇒𝑡 𝑥 =
一阶导数的差分)
2
1+𝑥
Using this scheme , we can test the smoothness
of the limit function 𝑝∞ 𝑥). The method is
based on previous section on convergence.
𝑚
𝑝∞ 𝑥 ϵ𝐶 ?
𝑑𝑘𝑚
𝑚
𝑥 = [𝑑𝑘 𝑥 ] = 2𝑘𝑚 1 − 𝑥)𝑚 (计算m阶导数)
𝑚
d 𝑥)𝑑𝑘𝑚 𝑥 𝑆 𝑥 = 𝑡 𝑥 𝑑 𝑥)𝑑𝑘−1
𝑥2
2𝑚 𝑆 𝑥)
⇒𝑡 𝑥 =
1 + 𝑥)𝑚+1
If and only if there exists 𝑛 > 0 such that 𝑇 𝑛 < 1
𝑆 𝑥
?
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
𝑠 𝑖 −1 = 0 𝑓𝑜𝑟 𝑖 = 0 … 𝑚.
Example: smoothness
The four-point scheme:
1 −3
9 −1
19
1 3
𝑆 𝑥 =− 𝑥 + 𝑥 +1+ 𝑥− 𝑥
16
16
16
16
convergence
•
•
𝑆 𝑥)
1 −3
𝑡 𝑥 =
=− 𝑥
1+𝑥
16
1
1
1 2
+ 𝑥− 𝑥
2
16
16
0
5
8
𝑇0 = < 1
+
1 −2
𝑥
16
1 −1
+ 𝑥
2
+
𝐶
•
1
0 𝑥)
2𝑆
𝑥)
2𝑡
1 −3
1
𝑡 𝑥 =
=
=− 𝑥
2
1+𝑥)
1+𝑥
8
3 −1
1
1
𝑥 + − 𝑥
4
4
8
在此处键入公式。
𝑇1 = 1, 𝑇1
𝐶 1 𝑖𝑠 OK.
2
3
= <1
4
+
1 −2
𝑥
4
+
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
𝐶
2
• 𝑡 𝑥 =
3 −1
𝑥
4
•
−
1
4
4𝑆 𝑥)
1+𝑥)3
=
2
2𝑡 1 𝑥)
1+𝑥
𝑇2𝑛 = 1 𝑓𝑜𝑟 𝑎𝑙𝑙 𝑛.
• Can’t converge to 𝐶 2 .
=
1 −3
− 𝑥
4
3 −2
+ 𝑥
4
+