2009-8-21 1
计算机图形学第八章交互技术与用户接口
22009-8-21 2
第十章 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
32009-8-21 3
第十章 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
42009-8-21 4
参数曲线基础( 1/20)
曲线的表示形式
– 非参数表示
显式表示
隐式表示
)(
)(
xgz
xfy
0),,(
0),,(
zyxg
zyxf
52009-8-21 5
参数曲线基础( 2/ 20)
– 参数表示
参数的含义
– 时间,距离,角度,比例等等
– 规范参数区间 [0,1]
– 矢量表示形式
– 例子:直线段的参数表示
],[
)(
)(
)(
bat
tzz
tyy
txx
]1,0[)( ttPP
62009-8-21 6
参数曲线基础( 3/20)
显式或隐式表示存在下述问题:
( 1)与坐标轴相关;
( 2)会出现斜率为无穷大的情形(如垂线);
( 4)不便于计算机编程。
( 3) 对于非平面曲线、曲面,难以用常系数的非参数化函数表示;
72009-8-21 7
参数曲线基础( 4/20)
参数表示的优点:
( 1)以满足几何不变性的要求。
( 2)有更大的自由度来控制曲线、曲面的形状
( 3)对曲线、曲面进行变换,可对其参数方程直接进行几何变换。
( 4)便于处理斜率为无穷大的情形,不会因此而中断计算 。
( 5)变量分离的特点使我们可以用数学公式处理几何分量,
便于用户把低维空间中曲线、曲面扩展到高维空间去。
( 6)规格化的参数变量 t∈[0,1],使其相应的几何分量是有界的,而不必用另外的参数去定义边界。
( 7)易于用矢量和矩阵表示几何分量,简化了计算。
82009-8-21 8
参数曲线基础( 5/20)
– 参数表示与隐式表示的相互转换
– 例子
]1,0[)( 010 tPPtPP
92009-8-21 9
参数曲线基础( 6/20)
正则点
– 导数不为零的点
正则曲线
– 所有的点都是正则点的曲线
斜率
– 直线的倾斜程度
– 一个坐标变量关于另一个坐标变量变化率
102009-8-21 10
参数曲线基础( 7/20)
切矢量
– 坐标变量关于参数的变化率
弧长

tn
i
iinn dtdt
tdPPPnLs
01 1
)(lim)(lim

)(
)(
)(
)(
tz
ty
tx
tP
112009-8-21 11
参数曲线基础( 8/20)
弧长参数
单位切矢量
)()(
)(
)(
0
)()(
0
sPPtPP
tss
ttss
dt
tdP
dt
ds
dt
dt
tdP
s
t

可以用弧长参数表示曲线存在反函数的单调函数是关于参数为单位切矢量记为
)(
)(
1
)(
/
)(
/
))(()()(
sT
ds
sdP
tdP
dt
dt
tdP
ds
dt
dt
tsdP
ds
sdP
dt
tdP
dt
ds

122009-8-21 12
参数曲线基础( 9/20)
主法矢量
– 主法矢量与切矢量垂直
– 主法线
副法矢量
– 副法线
Frenet标架
)(
)()(
sT
sTsN记
0)()(0])([1)(
2
2 sTsT
ds
sTdsT
)()()( sNsTsB记
132009-8-21 13
参数曲线基础( 10/20)
曲率
– 曲线的弯曲程度
– 曲率半径
关于任意参数切矢量、法矢量和曲率的计算
)(
1)(
sksp?
142009-8-21 14
参数曲线基础( 11/20)
挠率 的绝对值等于副法线方向 (或密切平面 )
对于弧长的转动率,
对于一般参数 t,我们可以推导出曲率和挠率的计算公式如下:
ss?

lim
3)(
)()(
tP
tPtP

2))()((
))(),(),((
tPtP
tPtPtP

152009-8-21 15
参数曲线基础( 12/20)
参数连续性
– 传统的、严格的连续性
– 称曲线 P=P(t)在 处 n阶参数连续,如果它在 处 n阶左右导数存在,并且满足
– 记号
0tt?
0t
nk
dt
tPd
dt
tPd
ttk
k
ttk
k
,1,0,)()(
00

nC
162009-8-21 16
参数曲线基础( 13/20)
几何连续性
– 直观的、易于交互控制的连续性
– 0阶几何连续
称曲线 P=P(t)在 处 0阶几何连续,如果它在 处位置连续,即
记为
– 1阶几何连续
称曲线 P=P(t)在 处 0阶几何连续,如果它在 处,
并且切矢量方向连续
记为
0tt? 0t
)()( 00 tPtP
0GC
0tt? 0GC
为任一常数0)()( 00 tPtP
1GC
0t
172009-8-21 17
参数曲线基础( 14/20)
– 2阶几何连续
称曲线 P=P(t)在 处 0阶几何连续,如果它在 处
( 1)
( 2)副法矢量方向连续
( 3)曲率连续
– 例子
几何连续与参数连续的关系
0tt?
0t
1GC
)()( 00 tBtB
)()( 00 tktk
182009-8-21 18
参数曲线基础( 15/20)
插值:
给定一组有序的数据点 Pi,i=0,1,…,n,
构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值,所构造的曲线称为 插值曲线。
– 线性插值,假设给定函数 f(x)在两个不同点 x1和
x2的值,用一个线形函数,y=ax+b,近似代替,
称为的线性插值函数。
– 抛物线插值,已知在三个互异点 x1,x2,x3的函数值为 y1,y2,y3,要求构造一个函数
192009-8-21 19
参数曲线基础( 16/20)
使抛物线 在结点 xi处与
f(x)在 xi处的值相等,
cbxaxx 2)(? )(x?
202009-8-21 20
参数曲线基础( 17/20)
逼近和光顺
逼近,构造一条曲线使之在某种意义下最接近给定的数据点,所构造的曲线为逼近曲线。
插值和逼近则统称为拟合。
光顺 (Firing)指曲线的拐点不能太多 。 对平面曲线而言,相对光顺的条件是:
– a,具有二阶几何连续性 (G2);
– b,不存在多余拐点和奇异点;
– c,曲率变化较小 。
212009-8-21 21
参数曲线基础( 17/20)
参数化
参数 t,在 [0,1]区间的分割可以有无数种 。
因为 P0,P1和 P2可对应:
其中每个参数值称为节点 (knot)。
对于一组有序的型值点 Pi,确定一种参数分割 ti,称之对这组型值点参数化。
];1,31,0[];1,21,0[ 210210 tttttt
222009-8-21 22
参数化常用方法有:
– 均匀参数化 (等距参数化 )
节点在参数轴上呈等距分布,+正常数。
– 累加弦长参数化
这种参数法如实反映了型值点按弦长的分布情况,能够克服型值点按弦长分布不均匀的情况下采用均匀参数化所出现的问题。
ii tt1

niPtt
t
iii,,2,1,
0
11
0
iii PPP 1
参数曲线基础( 18/20)
232009-8-21 23
向心参数化法
– 向心参数化法假设在一段曲线弧上的向心力与曲线切矢从该弧段始端至末端的转角成正比,加上一些简化假设,得到向心参数化法 。 此法尤其适用于非均匀型值点分布 。
niPtt
t
iii,,2,1,
0
2
1
11
0

参数曲线基础( 19/20)
242009-8-21 24
修正弦长参数化法
弦长修正系数 Ki>=1。

niPKtt
t
iiii,,2,1,
0
11
0

ii
ii
ii
ii
i PP
P
PP
PK
112
12
2
31
0,2,m i n 111

niiii PPPPP

参数曲线基础( 20/20)
252009-8-21 25
第十章 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
262009-8-21 26
参数多项式曲线( 1/5)
为什么采用参数多项式曲线
– 表示最简单
– 理论和应用最成熟
定义 --n次多项式曲线
]1,0[
)(
)(
)(
10
10
10

t
tztzztz
tytyyty
txtxxtx
n
n
n
n
n
n
272009-8-21 27
参数多项式曲线( 2/5)
矢量表示形式
– 加权和形式
– 缺点
没有明显的几何意义
与曲线的关系不明确,导致曲线的形状控制困难
]1,0[
1
)(
)(
)(
)(
10
10
10

tTC
t
t
zzz
yyy
xxx
tz
ty
tx
tP
n
n
n
n
记为
]1,0[)( 10 tPtPtPTCtP nn?
iP
iP
282009-8-21 28
参数多项式曲线( 3/5)
矩阵表示
– 矩阵分解
– 几何矩阵
– 控制顶点
– 基矩阵 M
确定了一组基函数
MGC
]1,0[)( tTMGtP
nGGGG?10?
iG
TM?
292009-8-21 29
参数多项式曲线( 4/5)
– 例子 — 直 线段的矩阵表示
]1,0[
1
10
11
)()1()(
100
10010

t
t
PPP
tPPtPtPPtP
P0
P1
P0+P1
302009-8-21 30
参数多项式曲线( 5/5)
参数多项式曲线的生成
– Horner算法
]1,0[?t 参数离散nit 0
计算型值点n
iP 0连接型值点折线
312009-8-21 31
第十章 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
322009-8-21 32
三次 Hermite曲线 (1/7)
定义
– 给定 4个矢量,称满足条件的三次多项式曲线 P(t)为 Hermite曲线
1010,,,RRPP
10
10
)1(,)0(
)1(,)0(
RPRP
PPPP

P0
P1
R0
R1
332009-8-21 33
三次 Hermite曲线 (2/7)
矩阵表示
– 条件
11
01
11
00
3
2
1
0
|
0
0
1
0
|
1
1
1
1
|
0
0
0
1
|
RMGTMG
RMGTMG
PMGTMG
PMGTMG
HHtHH
HHtHH
HHtHH
HHtHH

342009-8-21 34
三次 Hermite曲线 (3/7)
– 合并
– 解(不唯一)
HHH GRRPPMG
取为

1010
3010
2010
1110
0011
1100
1210
2300
2301
3010
2010
1110
0011
1
HM
352009-8-21 35
三次 Hermite曲线 (4/7)
基矩阵与基函数(调和函数)

)(
)(
)(
)(
2
23
2311
1100
1210
2300
2301
1
0
1
0
32
32
32
3
3
2
tH
tH
tG
tG
tt
ttt
tt
tt
t
t
t
TM H
362009-8-21 36
三次 Hermite曲线 (5/7)
形状控制
– 改变端点位置矢量
– 调节切矢量 的方向
10,PP
10,RR
372009-8-21 37
三次 Hermite曲线 (6/7)
调节切矢量 的长度
控制顶点
几何变换
– 对曲线变换等价于对控制顶点变换
10,RR
例子,Photoshop
382009-8-21 38
三次 Hermite曲线 (7/7)
三次参数样条曲线
– 样条?
– 曲线的定义
给定参数节点,型值点,求一条 的分段三次参数曲线,
使 。 P(t)称为三次参数样条曲线
– 表达式求法?
niit 0niiP 0?
]),[)(( 0 nttttP?
itttP?|)(
2C
例子,Photoshop
392009-8-21 39
第十张 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
402009-8-21 40
Bezier曲线( 1/24)
Bezier基函数的定义
– 如下 n次多项式称为 n次 Bezier基函数
]1,0[,)1()(, tttCtB E Z iniinni
)!(!
!
ini
nC i
n
412009-8-21 41
Bezier曲线( 2/24)
Bezier基函数的性质
– 正性
– 权性
]1,0[,0)(, ttB EZ ni
]1,0[,1)(
0
,
ttB E Z
n
i
ni
422009-8-21 42
Bezier曲线( 3/24)
– 对称性
– 降阶公式
)1()(,,tB EZtB EZ ninni
)()()1()( 1,11,,tt B EZtB EZttB EZ ninini
432009-8-21 43
Bezier曲线( 4/24)
– 升阶公式
– 导数
)(11)(1)( 1,1,1,tB E Zn intB E ZinitB E Z ninini
))()(()( 1,1,1,tt B EZtB EZntB EZ ninini
442009-8-21 44
Bezier曲线( 5/24)
– 积分
– 最大值
在 t=i/n处取得最大值
– 线性无关性
是 n次多项式空间的一组基
1
1)(1
0,?
ntB E Z ni
nini tBEZ 0,)(?
452009-8-21 45
Bezier曲线( 6/24)
Bezier曲线的定义
– n次多项式曲线 P( t)称为 n次 Bezier曲线
– 控制顶点
– 控制多边形
]1,0[)()(
0
,
ttB E ZPtP
n
i
nii
462009-8-21 46
Bezier曲线( 7/24)
Bezier曲线的性质
– 端点位置
00|)( PtP t
nt PtP1|)(
472009-8-21 47
Bezier曲线( 8/24)
– 端点切矢量
导数曲线
010|)( PPtP t
11|)( nnt PPtP
]1,0[)()()(
1
0
1,1
ttB E ZPPntP
n
i
niii
482009-8-21 48
Bezier曲线( 9/24)
– 端点曲率
曲率公式
3)(
)()()(
tP
tPtPtk

3
01
1201
0
)()(1|)(
PP
PPPP
n
ntk
t?

3
1
121
1
)()(1|)(

nn
nnnn
t PP
PPPP
n
ntk
492009-8-21 49
Bezier曲线( 10/24)
– 仿射不变性
表达式
几何属性:形状,曲率等等
]1,0[)()(
})({)]([
0
,
0
,

ttB E ZPA
tB E ZPAtPA
n
i
nii
n
i
nii
502009-8-21 50
Bezier曲线( 11/24)
– 凸包性
凸集
凹集
点集的凸包
– 包含这些点的最小凸集
Bezier曲线位于其控制顶点的凸包之内
512009-8-21 51
Bezier曲线( 12/24)
– 直线再生性
– 平面曲线的保凸性
– 平面曲线的变差缩减性
522009-8-21 52
Bezier曲线( 13/24)
– 拟局部性
– 形状的易控性
532009-8-21 53
Bezier曲线( 14/24)
三次 Bezier曲线的矩阵表示
TMG
t
t
t
G
tC
ttC
ttC
tC
G
tB E Z
tB E Z
tB E Z
tB E Z
PPPPtB E ZPtP
BEZBEZ
BEZBEZ
i
ii

3
2
33
3
22
3
21
3
30
3
3,3
3,2
3,1
3,0
3210
3
0
3,
1
1000
3300
3630
1331
)1(
)1(
)1(
)(
)(
)(
)(
],,,[)()(
542009-8-21 54
Bezier曲线( 15/24)
De Casteljau算法
– 问题给定参数,计算t )(tP
t
P(t)
t
)(tP
552009-8-21 55
Bezier曲线( 16/24)
– 算法
– 计算过程

rninrPtPt
rPP
r
i
r
i
ir
i,,1,0,,,2,1)1(
0,
1
1
1
562009-8-21 56
Bezier曲线( 17/24)
– 几何解释
572009-8-21 57
Bezier曲线( 18/24)
分割定理
– 问题:一条多项式曲线被分割成两段,得到的两段曲线是不是多项式曲线?如果是,它们的表达式如何?
P=Q+R

]1,[)
1
()()(:
],0[)()()(:
0
,
0
,
0
,0
0
,
tt
t
tt
B E ZPtB E ZPtPR
tt
t
t
B E ZPtB E ZPtPQ
n
i
ni
in
i
n
i
nii
n
i
ni
i
n
i
nii
582009-8-21 58
Bezier曲线( 19/24)
– 几何解释
592009-8-21 59
Bezier曲线( 20/24)
离散生成算法
– 想法
602009-8-21 60
Bezier曲线( 21/24)
– 程序
void DisplayBezierCurve(Vector P[],int n,float DELTA)
{
if(Distance(P,n) <= DELTA)
显示控制多边形 P;
else
{
BezierCurveSplitting(P,Q,R,n);
DisplayBezierCurve(Q,n,DELTA);
DisplayBezierCurve(R,n,DELTA);
}
}
612009-8-21 61
Bezier曲线( 22/24)
– 计算距离
622009-8-21 62
Bezier曲线( 23/24)
曲线的拼接
m
i
mii tB E ZPtP
0
,)()(
n
j
nij sB EZQsQ
0
,)()(
632009-8-21 63
Bezier曲线( 24/24)
– 条件
– 条件
– 条件?
0GC
1GC
2GC
0)1( QP m?
0)1( QP m?
)(0)2( 011 QQPP mm
Bezier曲线拼接的例子,PhotoShop
642009-8-21 64
第十张 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
652009-8-21 65
参数多项式曲面 (1/7)
曲面的表示形式
– 非参数表示
显式表示
隐式表示
),( yxfz?
0),,(?zyxs
662009-8-21 66
参数多项式曲面 (2/7)
– 参数表示

]1,0[]1,0[),(
),(
),(
),(
vu
vuzz
vuyy
vuxx
672009-8-21 67
参数多项式曲面 (3/7)
等参数曲线
– 一个参数固定,一个参数自由变化
– U曲线
– V曲线
切矢量
切平面
法矢量
),( 0vuPP?
),( 0 vuPP?
682009-8-21 68
参数多项式曲面 (4/7)
参数多项式曲面的定义
– 系数矩阵
]1,0[]1,0[),(),(
0 0

vuAVUvuavuP T
m
i
n
j
ji
ij
mnmm
n
n
aaa
aaa
aaa
A

10
11110
00100
692009-8-21 69
参数多项式曲面 (5/7)
矩阵表示
)(vP
)(uG
702009-8-21 70
参数多项式曲面 (6/7)
VMGGGVMGvP vnv,,,)( 10?
UMGGGuG Uniiii,,,)( 10?
nm
jiij
v
T
U
T
GG
VMGMUvuP
,
0,)(
),(

712009-8-21 71
参数多项式曲面 (7/7)
参数多项式曲面的生成
722009-8-21 72
第十张 曲线与曲面
参数曲线基础
参数多项式曲线
三次 Hermite曲线
Bezier曲线
参数多项式曲面
Bezier曲面
732009-8-21 73
Bezier曲面
Bezier曲面的定义
– 控制定点
– 控制网格
]1,0[]1,0[),()()(),(
0 0
,,,

vuvB EZuB EZPvuP
m
i
n
j
njmiji
nmjijiP,0,,?
jiP,
742009-8-21 74
Bezier曲面
Bezier曲面的性质
– 边界线
]1,0[)0,(
0
,0,
uB E ZPuP m
i
mii
]1,0[)1,(
0
,,
uB E ZPuP m
i
mini
]1,0[),0(
0
,,0
vB EZPvP n
j
njj
]1,0[),1(
0
,,
vB EZPvP n
j
njjm
752009-8-21 75
Bezier曲面
– 角点位置
0,0)0,0( PP?
nPP,0)1,0(?
0,)0,1( mPP?
nmPP,)1,1(?
762009-8-21 76
Bezier曲面
– 角点切平面
– 角点法矢量
772009-8-21 77
Bezier曲面
– 凸包性
Bezier曲面包含在其控制顶点的凸包之内
– 平面再生性
– 仿射不变性
– 拟局部性
782009-8-21 78
Bezier曲面
离散生成算法
– De Casteljau算法给定,
计算型值点
),( 00 vu
),( 00 vuP
u
v
),( 00 vu
),( 00 vuP
792009-8-21 79
Bezier曲面

snjnsPvPvP
rmimrPuPuP
njmiPP
sr
ji
sr
ji
sr
ji
sr
ji
sr
ji
sr
ji
jiji

,1,0,,1)1(
,1,0,,1)1(
,1,0,,1,0
1,
1,0
1,
,0
,
,
,1
,10
,1
,0
,
,
,
0,0
,
802009-8-21 80
Bezier曲面
– 计算过程
812009-8-21 81
Bezier曲面
822009-8-21 82
Bezier曲面
– 分割定理
nm jijiPP,0,0,,
nm jijinm jiji PGG,0,0,0,0,0,0,,
nm jijni jnm jiji PQQ,0,0,,0,0,0,,
nm jijiminm jiji PRR,0,0,0,,0,0,,
nm jijnim jinm jiji PWW,0,0,,,0,0,,
832009-8-21 83
Bezier曲面
842009-8-21 84
Bezier曲面
852009-8-21 85
习题
8、将如下抛物线表示成 Hermite曲线的形式。
9、将下面的二次参数多项式曲线转换为
Bezier曲线的表示形式。
]1,0[2 xxy
]1,0[,110 201)( )()( 2

ttt
ty
txtP
谢谢大家,下课了,
出去散散心吧 …