计算机图形学基础教程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在计算机图形学中,样条曲线是指 由多项式曲线段连接而成的曲线,在每 段的边界处满足特定的连续性条件,而 样条曲面则可用两组正交样条曲线来描 述。
7.1.2 曲线曲面的表示形式
曲线曲面的可以采用显式方程、隐函数 方程和参数方程表示。
首先看一下直线的表示形式:已知直线 的起点坐标P1(x1,y1)和终点坐标P2 (x2,y2),直线的显式方程表示为:
px[13]=180;py[13]=0;
px[14]=225;py[14]=71;
px[15]=270;py[15]=100;
px[16]=315;py[16]=71;
px[17]=360;py[17]=0;
}
void CTestView::DrawPoint()//绘制型值点 {
CClientDC dc(this); CPen NewPen,*OldPen; CBrush NewBrush,*OldBrush; NewPen.CreatePen(PS_SOLID,1,RGB(255,255,0)); OldPen=dc.SelectObject(&NewPen); NewBrush.CreateSolidBrush(RGB(0,0,0)); OldBrush=dc.SelectObject(&NewBrush); for(int i=1;i<N;i++) {
图7-1 汽车的曲面
7.1 基本概念
7.1.1 样条曲线曲面 7.1.2 曲线曲面的表示形式 7.1.3 拟合和逼近 7.1.4 连续性条件
7.1.1 样条曲线曲面
在汽车制造厂里,传统上采用样条 绘制曲线的形状。绘图员弯曲样条(如 弹性细木条)通过各型值点,其它地方 自然过渡,然后沿样条画下曲线,即得 到样条曲线(Spline Curve)。
Computer Graphics
第七章 自由曲线和曲面(1)
本章内容-1
7.1 基本概念 7.2 三次参数样条曲线
工业产品的几何形状大致可分为两 类:一类由初等解析曲面,如平面、圆 柱面、圆锥面、球面、圆环面等组成, 可以用初等解析函数完全清楚地表达全 部形状。
另一类由自由曲面组成,如汽车车 身、飞机机翼和轮船船体等的曲线和曲 面,不能用初等解析函数完全清楚地表 达全部形状,需要构造新的函数来进行 研究,这些研究成果形成了计算机辅助 几何设计(Computer Aided Geometric Design,CAGD)学科。
(7 3)
三次参数样条曲线常用的边界条件有夹持端、
自由端和抛物端3种。
1 夹持端
参数样条曲线在始端的一阶导数P1和终端处的
一阶导数Pn。
P1(0) P1, 代入(7 3)的导数有
2M1
M2
6( P2 L1
P1
P1)
/
L1
Pn1 (Ln ) Pn, 代入(7 3)的导数有
图7-3逼近曲线
7.1.4 连续性条件
通常单一的曲线段或曲面片难以表 达复杂的形状,必须将一些曲线段连接 成组合曲线,或将一些曲面片连接成组 合曲面,才能描述复杂的形状。为了保 证在连接点处平滑过渡,需要满足连续 性条件。连续性条件有两种:参数连续 性和几何连续性。
参数连续性 零阶参数连续性,记作C0,指相邻两个曲
(3)
设第i段曲线在型值点Pi+1处的二阶导矢量为Mi+1, 有
Pi(Li )=2B3 6B4Li (4)
联立上述4个方程可以解得系数矢量如下:
B1 =Pi ; B2
1 Li
( Pi 1
Pi
)
Li
(
M 3
i
M i1 ); 6
B3
Mi
/
2; B4
1 6Li
(M i1
Mi)
M n1
2Mn
6(Pn
Pn Pn1 ) / Ln1
Ln1
2 自由端 参数样条曲线在始端和终端的二阶导数为0。
M1 0, M n 0
3 抛物端 参数样条曲线的第1段和第n -1段的二阶导数为常数。
M1 M 2 , M n1 M n
2M1 1M 2 D1 nM n1 2M n Dn
参数连续性和几何连续性的比较: 对于几何连续性,曲线将向具有较大切
向量的部分弯曲。
7.2 三次参数样条曲线
7.2.1 参数样条曲线定义
三次参数样条曲线可表述如下:
已知n个型值点Pi (i 1, 2, , n)且相邻型值点不重 合,若P(t)满足下列条件: (1)型值点Pi在P(t)上; (2)P(t)在整个区间[P1, Pn ]上二阶连续可导; (3)在每个子区间[Pi , Pi1](i 1, 2, , n 1)上,分段 函数Pi (t)都是参数t的三次多项式,则称函数P(t) 是过型值点的三次参数样条函数,由三次参数样
2.已知17个型值点:P 1(-360,0),P 2 (315,71),P 3(-270,100),P 4(-225,71), P 5(-180,0),P 6(-135,71),P 7(90,100),P 8(-45,71),P 9(0,0),P 10 (45,-71),P 11(90,-100),P 12(135,71),P 13(180,0),P 14(225,71),P 15 (270,100),P 16(315,71),P 17(360,0), 如图7-27所示。边界条件为:自由端。使用VC++ 编程绘制通过给定型值点的三次参数样条曲线和 正弦曲线,试比较二者之间差异。
边界条件 1,n
D1,Dn
夹持端 1=1,n 1
D1=6(
P2
L1
P1
P1)
/
L1
Dn
6(Pn
Pn Pn1 ) Ln1
/
Ln1
自由端 1=0,n 0 D1 2M1, Dn 2M n
其中M1 M n 0
抛物端 1=-2,n 2 D1 0, Dn 0
条函数构成的曲线称为三次参数样条曲线。
这里,参数t是相邻型值点之间的弦长,t [0, Li ]。
Li (xi1 xi )2 ( yi1 yi )2 (zi1 zi )2 这里P(t)是矢量,即
x(t)
P(t
)
y(t)
z(t)
7.2.2 系数求解
第i段的三次参数样条曲线的表达式为 Pi (t)=B1 B2t B3t 2 B4t3 t [0, Li ] (7 1)
下面,根据已知条件确定各待定系数 B1、B2、B3、B4
对Pi (t)两次求导,有 Pi(t)=B2 2B3t 3B4t 2 Pi(t)=2B3 6B4t
t2
t
1
b c
,t
0,1
d
7.1.3 拟合和逼近
曲线曲面的拟合:当 用一组型值点(插值 点)来指定曲线曲面 的形状时,形状完全 通过给定的型值点序 列确定,称为曲线曲 面的拟合。
图7-2 拟合曲线
曲线曲面的逼近:当用一组控制点来指 定曲线曲面的形状时,求出的形状不必通 过控制点,称为曲线曲面的逼近。
Li
(
M 3
i
M i1 ) 6
令
i
Li1 Li1 Li
, i
Li Li1
Li
,
M连续性方程
Di
6 Li1
( Pi1
Li
Li
Pi
-
Pi Pi1 ) Li1
则有
i M i1 2M i i M i1 Di
其中,i 2, , n 1; i i 1。
代入Pi (t)=B1 B2t B3t 2 B4t3得到三次参数
样条函数为
Pi (t)=Pi
[ 1 Li
( Pi 1
Pi )
Li
(
M 3
i
M i1 )]t 6
Mi 2
t2
1 6Li
(M i1
M i )t3
(7 2)
7.2.3 边界条件
利用P(t)的一阶导数连续来求解各型值点处的
二阶导数矢量M
。
i
Pi-1(Li1) Pi(0)
Pi(t)=B2 2B3t 3B4t 2
Bi1 2
2 B3i 1 ( Li 1 )
3B4i 1 ( Li 1
)2
=B2i
[1 Li1
(Pi
Pi 1 )
Li1
(
M i1 3
Mi 6
)]
2
M i1 2
Li1
y
y1
y2 x2
y1 x1
(x
x1 )
直线的隐函数方程表示为:
f
(x)
y
y1
y2 x2
y1 x1
(x
x1 )
0
直线的参数方程表示为:
x
y
x1 y1
(x2 ( y2
x1 )t y1 )t
由于用参数方程表示的曲线曲面可以直接进 行几何变换,而且易于表示成矢量和矩阵, 所以在计算机图形学中一般使用参数方程来 描述曲线曲面。下面以一条三次曲线为例, 给出参数方程的矢量和矩阵表示:
当t 0时,第i段子曲线对应于端点Pi ,记为Pi:
Pi (0)=Pi =B1
(1)
当t
Li时,第i段子曲线对应于端点Pi
,
+1
记为Pi+1 :
Pi (Li ) Pi+1 B1 B2Li B3Li2 B4Li3 (2) 设第i段曲线在型值点Pi处的二阶导矢量为Mi ,有
Pi (0)=2B3
线段在交点处具有相同的坐标。如图7-4 所示。
图7-4 零阶连续性
一阶参数连续性,记作C1,指相邻两 个曲线段在交点处具有相同的一阶导 数。如图7-5所示。
图7-5 一阶连续性
二阶参数连续性,记作C2,指相邻两个 曲线段在交点处具有相同的一阶和二阶 导数。如图7-6所示。
图7-6 二阶连续性
3[ 1 6Li1
(Mi
M i1)]L2i1
1 Li
( Pi 1
Pi
)
Li
(
M 3
i
M i1 ) 6
[1 Li1
( Pi
Pi 1 )
Li1
(
M i1 3
Mi 6
)]
M i1Li1
1 2 (M i M i1)Li1
1 Li
(
Pi1
Pi
)
图 7-27 型值点
CTestView::CTestView()
{ // TODO: add construction code here
px[1]=-360;py[1]=0;//型值点初始化
px[2]=-315;py[2]=-71;
px[3]=-270;py[3]=-100;
px[4]=-225;py[4]=-71;
Dn1
n 2 M n Dn
三次参数样条曲线算法
1 设置最大型值点数为40. 2 设置标志变量Flag,当Flag=TURE时开始绘制型值点; 当Flag=FALSE时绘制结束。 3 计算弦长。 4 根据边界条件计算始端和终端的投影。 5 对x和y方向进行同样的计算。 6 分别计算x和y方向的 ,,D 7 用追赶法求解三弯矩方程 8 分别计算x和y方向的系数 B1、B2、B3、B4 9 根据(x,y)坐标值绘制三次参数样条曲线
参数方程表示:
x(t) y(t)
axt ayt
3 3
bxt byt
2 2
cxt cyt
dx dy
,t
0,1
z(t
)
azt
3
bzt
2
czt
d
z
矢量表示:
p(t) at3 bt2 ct d,t 0,1
矩阵表示:
a
p(t) t3
各型值点处的二阶导矢量M
可以用三对角
i
矩阵表示,使用追赶法可以求出唯一解。
矩阵表示如下
2 1 2 2 2
M1 D1
M2
D2
3 2 3
M3
D3
n1
2
n
M
n
1
px[5]=-180;py[5]=0;
px[6]=-135;py[6]=71;
px[7]=-90;py[7]=100; px[8]=-45;py[8]=71; px[9]=0;py[9]=0;
px[10]=45;py[10]=-71; px[11]=90;py[11]=-100; px[12]=135;py[12]=-71;
几何连续性
与参数连续性不同,集合连续性只要求参 数导数成比例,而不是相等。
零阶几何连续性,记作G0,与零阶参数连 续性相同,指相邻两个曲线段在交点处具 有相同的坐标。
一阶几何连续性,记作G1,指相邻两个曲 线段在交点处的一阶导数成比例,但大小 不一定相等。
二阶几何连续性,记作G2,指相邻两个曲 线段在交点处的一阶和二阶导数成比例, 即曲率一致。
7.1.2 曲线曲面的表示形式
曲线曲面的可以采用显式方程、隐函数 方程和参数方程表示。
首先看一下直线的表示形式:已知直线 的起点坐标P1(x1,y1)和终点坐标P2 (x2,y2),直线的显式方程表示为:
px[13]=180;py[13]=0;
px[14]=225;py[14]=71;
px[15]=270;py[15]=100;
px[16]=315;py[16]=71;
px[17]=360;py[17]=0;
}
void CTestView::DrawPoint()//绘制型值点 {
CClientDC dc(this); CPen NewPen,*OldPen; CBrush NewBrush,*OldBrush; NewPen.CreatePen(PS_SOLID,1,RGB(255,255,0)); OldPen=dc.SelectObject(&NewPen); NewBrush.CreateSolidBrush(RGB(0,0,0)); OldBrush=dc.SelectObject(&NewBrush); for(int i=1;i<N;i++) {
图7-1 汽车的曲面
7.1 基本概念
7.1.1 样条曲线曲面 7.1.2 曲线曲面的表示形式 7.1.3 拟合和逼近 7.1.4 连续性条件
7.1.1 样条曲线曲面
在汽车制造厂里,传统上采用样条 绘制曲线的形状。绘图员弯曲样条(如 弹性细木条)通过各型值点,其它地方 自然过渡,然后沿样条画下曲线,即得 到样条曲线(Spline Curve)。
Computer Graphics
第七章 自由曲线和曲面(1)
本章内容-1
7.1 基本概念 7.2 三次参数样条曲线
工业产品的几何形状大致可分为两 类:一类由初等解析曲面,如平面、圆 柱面、圆锥面、球面、圆环面等组成, 可以用初等解析函数完全清楚地表达全 部形状。
另一类由自由曲面组成,如汽车车 身、飞机机翼和轮船船体等的曲线和曲 面,不能用初等解析函数完全清楚地表 达全部形状,需要构造新的函数来进行 研究,这些研究成果形成了计算机辅助 几何设计(Computer Aided Geometric Design,CAGD)学科。
(7 3)
三次参数样条曲线常用的边界条件有夹持端、
自由端和抛物端3种。
1 夹持端
参数样条曲线在始端的一阶导数P1和终端处的
一阶导数Pn。
P1(0) P1, 代入(7 3)的导数有
2M1
M2
6( P2 L1
P1
P1)
/
L1
Pn1 (Ln ) Pn, 代入(7 3)的导数有
图7-3逼近曲线
7.1.4 连续性条件
通常单一的曲线段或曲面片难以表 达复杂的形状,必须将一些曲线段连接 成组合曲线,或将一些曲面片连接成组 合曲面,才能描述复杂的形状。为了保 证在连接点处平滑过渡,需要满足连续 性条件。连续性条件有两种:参数连续 性和几何连续性。
参数连续性 零阶参数连续性,记作C0,指相邻两个曲
(3)
设第i段曲线在型值点Pi+1处的二阶导矢量为Mi+1, 有
Pi(Li )=2B3 6B4Li (4)
联立上述4个方程可以解得系数矢量如下:
B1 =Pi ; B2
1 Li
( Pi 1
Pi
)
Li
(
M 3
i
M i1 ); 6
B3
Mi
/
2; B4
1 6Li
(M i1
Mi)
M n1
2Mn
6(Pn
Pn Pn1 ) / Ln1
Ln1
2 自由端 参数样条曲线在始端和终端的二阶导数为0。
M1 0, M n 0
3 抛物端 参数样条曲线的第1段和第n -1段的二阶导数为常数。
M1 M 2 , M n1 M n
2M1 1M 2 D1 nM n1 2M n Dn
参数连续性和几何连续性的比较: 对于几何连续性,曲线将向具有较大切
向量的部分弯曲。
7.2 三次参数样条曲线
7.2.1 参数样条曲线定义
三次参数样条曲线可表述如下:
已知n个型值点Pi (i 1, 2, , n)且相邻型值点不重 合,若P(t)满足下列条件: (1)型值点Pi在P(t)上; (2)P(t)在整个区间[P1, Pn ]上二阶连续可导; (3)在每个子区间[Pi , Pi1](i 1, 2, , n 1)上,分段 函数Pi (t)都是参数t的三次多项式,则称函数P(t) 是过型值点的三次参数样条函数,由三次参数样
2.已知17个型值点:P 1(-360,0),P 2 (315,71),P 3(-270,100),P 4(-225,71), P 5(-180,0),P 6(-135,71),P 7(90,100),P 8(-45,71),P 9(0,0),P 10 (45,-71),P 11(90,-100),P 12(135,71),P 13(180,0),P 14(225,71),P 15 (270,100),P 16(315,71),P 17(360,0), 如图7-27所示。边界条件为:自由端。使用VC++ 编程绘制通过给定型值点的三次参数样条曲线和 正弦曲线,试比较二者之间差异。
边界条件 1,n
D1,Dn
夹持端 1=1,n 1
D1=6(
P2
L1
P1
P1)
/
L1
Dn
6(Pn
Pn Pn1 ) Ln1
/
Ln1
自由端 1=0,n 0 D1 2M1, Dn 2M n
其中M1 M n 0
抛物端 1=-2,n 2 D1 0, Dn 0
条函数构成的曲线称为三次参数样条曲线。
这里,参数t是相邻型值点之间的弦长,t [0, Li ]。
Li (xi1 xi )2 ( yi1 yi )2 (zi1 zi )2 这里P(t)是矢量,即
x(t)
P(t
)
y(t)
z(t)
7.2.2 系数求解
第i段的三次参数样条曲线的表达式为 Pi (t)=B1 B2t B3t 2 B4t3 t [0, Li ] (7 1)
下面,根据已知条件确定各待定系数 B1、B2、B3、B4
对Pi (t)两次求导,有 Pi(t)=B2 2B3t 3B4t 2 Pi(t)=2B3 6B4t
t2
t
1
b c
,t
0,1
d
7.1.3 拟合和逼近
曲线曲面的拟合:当 用一组型值点(插值 点)来指定曲线曲面 的形状时,形状完全 通过给定的型值点序 列确定,称为曲线曲 面的拟合。
图7-2 拟合曲线
曲线曲面的逼近:当用一组控制点来指 定曲线曲面的形状时,求出的形状不必通 过控制点,称为曲线曲面的逼近。
Li
(
M 3
i
M i1 ) 6
令
i
Li1 Li1 Li
, i
Li Li1
Li
,
M连续性方程
Di
6 Li1
( Pi1
Li
Li
Pi
-
Pi Pi1 ) Li1
则有
i M i1 2M i i M i1 Di
其中,i 2, , n 1; i i 1。
代入Pi (t)=B1 B2t B3t 2 B4t3得到三次参数
样条函数为
Pi (t)=Pi
[ 1 Li
( Pi 1
Pi )
Li
(
M 3
i
M i1 )]t 6
Mi 2
t2
1 6Li
(M i1
M i )t3
(7 2)
7.2.3 边界条件
利用P(t)的一阶导数连续来求解各型值点处的
二阶导数矢量M
。
i
Pi-1(Li1) Pi(0)
Pi(t)=B2 2B3t 3B4t 2
Bi1 2
2 B3i 1 ( Li 1 )
3B4i 1 ( Li 1
)2
=B2i
[1 Li1
(Pi
Pi 1 )
Li1
(
M i1 3
Mi 6
)]
2
M i1 2
Li1
y
y1
y2 x2
y1 x1
(x
x1 )
直线的隐函数方程表示为:
f
(x)
y
y1
y2 x2
y1 x1
(x
x1 )
0
直线的参数方程表示为:
x
y
x1 y1
(x2 ( y2
x1 )t y1 )t
由于用参数方程表示的曲线曲面可以直接进 行几何变换,而且易于表示成矢量和矩阵, 所以在计算机图形学中一般使用参数方程来 描述曲线曲面。下面以一条三次曲线为例, 给出参数方程的矢量和矩阵表示:
当t 0时,第i段子曲线对应于端点Pi ,记为Pi:
Pi (0)=Pi =B1
(1)
当t
Li时,第i段子曲线对应于端点Pi
,
+1
记为Pi+1 :
Pi (Li ) Pi+1 B1 B2Li B3Li2 B4Li3 (2) 设第i段曲线在型值点Pi处的二阶导矢量为Mi ,有
Pi (0)=2B3
线段在交点处具有相同的坐标。如图7-4 所示。
图7-4 零阶连续性
一阶参数连续性,记作C1,指相邻两 个曲线段在交点处具有相同的一阶导 数。如图7-5所示。
图7-5 一阶连续性
二阶参数连续性,记作C2,指相邻两个 曲线段在交点处具有相同的一阶和二阶 导数。如图7-6所示。
图7-6 二阶连续性
3[ 1 6Li1
(Mi
M i1)]L2i1
1 Li
( Pi 1
Pi
)
Li
(
M 3
i
M i1 ) 6
[1 Li1
( Pi
Pi 1 )
Li1
(
M i1 3
Mi 6
)]
M i1Li1
1 2 (M i M i1)Li1
1 Li
(
Pi1
Pi
)
图 7-27 型值点
CTestView::CTestView()
{ // TODO: add construction code here
px[1]=-360;py[1]=0;//型值点初始化
px[2]=-315;py[2]=-71;
px[3]=-270;py[3]=-100;
px[4]=-225;py[4]=-71;
Dn1
n 2 M n Dn
三次参数样条曲线算法
1 设置最大型值点数为40. 2 设置标志变量Flag,当Flag=TURE时开始绘制型值点; 当Flag=FALSE时绘制结束。 3 计算弦长。 4 根据边界条件计算始端和终端的投影。 5 对x和y方向进行同样的计算。 6 分别计算x和y方向的 ,,D 7 用追赶法求解三弯矩方程 8 分别计算x和y方向的系数 B1、B2、B3、B4 9 根据(x,y)坐标值绘制三次参数样条曲线
参数方程表示:
x(t) y(t)
axt ayt
3 3
bxt byt
2 2
cxt cyt
dx dy
,t
0,1
z(t
)
azt
3
bzt
2
czt
d
z
矢量表示:
p(t) at3 bt2 ct d,t 0,1
矩阵表示:
a
p(t) t3
各型值点处的二阶导矢量M
可以用三对角
i
矩阵表示,使用追赶法可以求出唯一解。
矩阵表示如下
2 1 2 2 2
M1 D1
M2
D2
3 2 3
M3
D3
n1
2
n
M
n
1
px[5]=-180;py[5]=0;
px[6]=-135;py[6]=71;
px[7]=-90;py[7]=100; px[8]=-45;py[8]=71; px[9]=0;py[9]=0;
px[10]=45;py[10]=-71; px[11]=90;py[11]=-100; px[12]=135;py[12]=-71;
几何连续性
与参数连续性不同,集合连续性只要求参 数导数成比例,而不是相等。
零阶几何连续性,记作G0,与零阶参数连 续性相同,指相邻两个曲线段在交点处具 有相同的坐标。
一阶几何连续性,记作G1,指相邻两个曲 线段在交点处的一阶导数成比例,但大小 不一定相等。
二阶几何连续性,记作G2,指相邻两个曲 线段在交点处的一阶和二阶导数成比例, 即曲率一致。