计算机图形学 第3章 曲线
计算机图形学.3
t
T (切矢) B t=1 (副法矢)
N (法矢) o
y
x
B
法平面
直化面
P
N
密切面 Q d P h
密切面的定义
π是通过P的一个平面。当Q
2
T
C
P
时,h/d 0,称π的极限位置为 曲线C在P点的密切平面。
π
与非参数方法相比,参数方法有如下优点:
1. 曲线、曲面方程与坐标系无关,方程形式不因坐标系的改
H(t)
1
H0,0(t)
H0,1(t)
1
K=4 k=3
0.5 H1,0(t) 0 H1,1(t)
k=2 k=1
1
t
0
0.5
1
三次Hermite插值基函数
切矢对Ferguson曲线形状的影响
二. Ferguson曲线产生尖点的条件
给出位置矢量Q0,Q1和切矢Q’0,Q’1,即可唯一的确定一条 Ferguson曲线。若改变切矢方向和大小,则曲线形状也随之改 变。 如图所示,设Q0=[0,0],Q1=[1,0],Q’0=[k,k],Q’1=[k,-k]。
计算机图形学
Computer Graphics
曲线和曲面
在计算机图形学中,曲线和曲面是形象表示复杂形体的 工具。曲线曲面的研究成果有着广泛的实际应用。如机械零 件的形状表示,汽车、飞机的外形表示,实验数据的曲线、 曲面表示,艺术绘图、广告、动画等。 研究解析曲线和曲面的显式、隐式表示的历史悠久、理
t=1
(0≢t≢1)
写成矩阵形式为
0 1 0 3
0 1 0 2
0 1 1 1
1 1 M 0 0
Q0 Q1 Q’0 Q’1 Q0 1 Q1 -1 Q’0 0 Q’1 0 H1,1(t)][Q0 Q1 Q’0 Q’1]T (0≢t≢1)
计算机图形学 曲线和曲面 算法
5.1.3 Bezier曲线 Bezier曲线
Q(t ) = [x(t ) = t y ( t ) z ( t )] = T * M B * G B −1 3 − 3 3 −6 3 t 1 * − 3 3 0 0 0 1 1 P 1 P 0 2 * 0 P3 0 P4
G1 g1x G g 2x G = 2 = G3 g 3 x G4 g 4 x g1 y g2 y g3 y g4 y g1z g2z g3z g4z
Q(t ) = [x(t )
G1 g1 x G g 2x G = 2 = G 3 g 3 x G 4 g 4 x
y (t ) z (t )] = t 3
g1 y g2 y g3 y g4 y g1 z g2z g3z g4z
[
t2
m11 m t 1 21 m31 m41
]
m12 m22 m32 m42
m13 m23 m33 m43
m14 G1 m24 G2 m34 G3 m44 G4
5.1.3 Bezier曲线 Bezier曲线
Q(t ) = T * M H * GH = T * M H * ( M HB * GB ) = T * ( M H * M HB ) * GB = T * M B * GB
M B = M H * M HB −1 3 − 3 3 −6 3 = − 3 3 0 0 0 1 1 0 0 0
如何确定曲线的约束条件
Q(t ) = [x(t ) y ( t ) z ( t )] = T * C
拆分 C = M * G
计算机图形学第3章 基本图形生成算法
例题:有点P0(4,3);P1(6,5);P2(10,
6 );P3(12,4),用以上4点构造2次B样条曲线。
2.1.7 非均匀有理B样条
非均匀有理B样条NURBS(Non Uniform Rational BSpline);
3.2.2
Bresenham画圆法
该算法是最有效的算法之一。
不失一般性,假设圆心(xc,yc) ,圆上的点(x′,y′),则:
x' x xc
y ' y yc
圆心为原点,半径为R的位于第一象限1/8圆弧的画法,即(0, R)~( R , R )。
2 2
yi ), 思想:每一步都选择一个距离理想圆周最近的点P( xi , 使其误差项最小。
画其他曲线。
3.3
自由曲线的生成
正弦函数曲线
指数函数曲线
多项式函数曲线
自 由 曲 线
概率分布曲线及样条函数曲线
3.3.1 曲线的基本理论
基本概念
2.1.4
规则曲线:可用数学方程式表示出来的,如抛物 线等。
自由曲线:很难用一个数学方程式描述的,如高
速公路等。可通过曲线拟合(插值、逼近)的方法来
例题: 利用Bresenham算法生成P (0,0)到Q(6,5)的直 线所经过的像素点。要求先 列出计算式算出各点的坐标 值,然后在方格中标出各点。
(1,1)
3.1.5 双步画线法 原理
模式1:当右像素位于右下角时,中间像素位于底线 模式4:当右边像素位右上角时,中间像素位于中线 模式2和模式3:当右像素位于中线时,中间像素可能位于底线 上,也可能位于中线上,分别对应于模式2和模式3,需进一步 判断。 当0≤k≤1/2时,模式4不可能出现,当1/2≤k≤1时,模式1不 可能出现。
计算机图形学
u=i时,位置矢量: Pi0=Fh1(ui)P00+Fh2(ui)P10+Fh3(ui)P 00+Fh4(ui)P 10 Pi1=Fh1(ui)P01+Fh2(ui)P11+Fh3(ui)Pu01+Fh4(ui)Pu11 u=i时,切向矢量:
P
0 w w i0=Fh1(ui)P w w uw uw 00+Fh2(ui)P 10+Fh3(ui)P 00+Fh4(ui)P 1 u u
Pw(ui,wj)
P00 P11
Pu(ui,wj)
双 三 次 曲 面 片 示 意 图
7
y
2013-8-14
x
苏州大学计算机科学与技术学院
拟合曲面
常见的拟合曲面有三种:
Coons曲面
Bezier曲面 B样条曲面 我们主要介绍三次曲面。
2013-8-14
苏州大学计算机科学与技术学院
8
Coons曲面
P10 P11 P01 P11
u P00
u P10
P
u 01 w P00
P
u T 11
T
w P01
P
u 10
P
u T 11
T
……..(1) ……..(2) ……..(3) ..(4)
2) 对u方向的切线矢量: =3a33u2 w3+3a32u2 w2+3a31u2w+3a30u2 +2a23uw3+2a22uw2+2a21uw+2a20u +a13w3+a12w2+a11w +a10 u=0 w=0 Pu00=a10 ……..(5) u=1 w=0 Pu10= 3a30+2a20+ a10 ……..(6) u=0 w=1 Pu01= a13+ a12+ a11+ a10 … ..(7) u=1 w=1 Pu11= 3a33+ 3a32+….. + a11+ a10 …..(8)
最新计算机图形学及cad技术讲义——曲线曲面基本理论
第三讲 曲线曲面基本理论1概述(a) 飞机 (b) 船舶 (c) 汽车图 1-1 曲线曲面造型应用曲线曲面造型(Surface Modeling)是计算机辅助几何设计(Computer Aided Geometric Design, CAGD)和计算机图形学的一项重要内容,主要研究在计算机系统中如何用曲线曲面表示、设计、显示和分析物体模型。
它在航空航天、船舶、飞机、汽车等行业得到广泛应用(如图1-1所示)。
由Coons 、Bezier 等大师于二十世纪六十年代奠定其理论基础,经过三十多年的发展,曲线曲面造型现在已形成了以有理B 样条曲线曲面(Rational B-spline Surface)参数化特征设计和隐式代数曲线曲面(Implicit Algebraic Surface)表示为主体的两类方法,且以插值(Interpolation)、逼近(Approximation)手段为几何理论体系。
1.1曲线曲面表示曲线曲面可以用三种形式进行表示,即显式、隐式和参数表示,三种形式表示如下。
显式表示:形如),(y x f z =的表达式。
对于一个平面曲线而言,显式表达式可写为)(x f y =。
在平面曲线方程中,一个x 值与一个y 值对应,所以显式方程不能表示封闭或多值曲线,例如,不能用显式方程表示一个圆。
隐式表示:形如0),,(=z y x f 的表达式。
如一个平面曲线方程,隐式表达式可写为0),(=y x f 。
隐式表示的优点是易于判断函数),(y x f 是否大于、小于或等于零,也就易于判断点是落在所表示曲线上或在曲线的哪一侧。
参数表示:形如)(t f x =,)(t f y =,)(t f z =的表达式,其中t 为参数。
即曲线上任一点的坐标均表示成给定参数的函数。
如平面曲线上任一点P 可表示为)](),([)(t y t x t P =,如图1-2(a)所示;空间曲线上任一三维点P 可表示为)](),(),([)(t z t y t x t P =,如图1-2(b)所示。
计算机图形学 曲线
所以,P(t)是P0,P1,…,Pn凸线性组合。 这证明Bezier曲线 完全被包在其特征多边形的凸包内。
(4) 几何不变性 由给定控制顶点所确定的Bezier曲线的形状与坐标 系的选取无关。此性质就是Bezier曲线的几何不变 性。 几何不变性对几何图形来说是一种很重要的性质。 在计算机图形学中经常要作坐标变换,如果同一表 示式在不同坐标系下表示不同的曲线,则会给图形 变换带来很多不便之处。 (5)交互能力 控制多边形P0P1…Pn大致地勾画出Bezier曲线P(t) 的形状。 要改变P(t)的形状,只要改变P0,P1,…,Pn 的位置即可。
① 共点:P4和R1共点。 ② 共线:P3、P4(R1)、R2三点共线。 ③ Q1'(t)为Q2'(t)长度的λ 倍。
2)C²连续
若Q1(t)曲线为m次,而Q2(t)曲线为n次,则有:
Q(1) m(m 1)( P m 2 P m 1 P m 2) Q(0) n(n 1)( R 2 2 R1 R0)
该曲线的矢量表达式为:
p p(t ) A0 A1t A2t 2 A3t 3
上式为三次曲线的代数形 式,Ai(i=0,1,2,3)成为代数系数.
应用端点P0和P1,以及端点切矢P0’和P1’,可得:
p 0 A0 p A1 0 p1 A0 A1 A2 A3 p A1 2 A2 3 A3 1 A0 p 0 A1 p 0
2. 4
三次Bezier曲线的拼接
三次Bezier曲线曲线的拼接,工程上经常采用分段绘制三次 Bezier曲线,然后将分段的Bezier曲线连接起来,形成Bezier 样条曲线。 设有两条Bezier曲线Q1(t)和Q2(t),其特征多边形顶点分别 为:P1、P2、P3、P4和R1、R2、R3、R4,如图。
计算机图形学-第三章-变换及裁剪
(x,y)点对应的齐次坐标为三维空间的一条 直线
xh hx
yh
hy
zh h
7
齐次坐标的作用
1. 将各种变换用阶数统一的矩阵来表示。提供了用矩阵 运算把二维、三维甚至高维空间上的一个点从一个坐 标系变换到另一坐标系的有效方法。
2. 便于表示无穷远点。
例如:(x h, y h, h),令h等于0
25
3 规格化设备坐标系 用于用户的图形是定义在用户坐标系里,
而图形的输出定义在设备坐标系里,它依赖于 基体的图形设备。由于不同的图形设备有不同 的设备坐标系,且不同设备间坐标范围也不尽 相同, 例如:分辨率为1024*768的显示器其屏幕坐标的 范围:x方向为0~1023,y方向为0~767,分辨 率为640*480的显示器,其屏幕坐标范围为:x 方向0~639,y方向0~479
y 1),则
1 0 0
P'x' y' 1 x y 1 0 1 0 x
Tx1
Ty1
1
y 1Tt1
经第二次平移变换后的坐标为P*(x* y* 1)
P * x *
y * 1 x'
y'
1
1 0
0 0 1 0
Tx
2
Ty 2
1
1 0 0 1 0 0
x y 1 0 1 0 0 1 0 x y 1 Tt1Tt2
44
关于透视投影
一点透视投影
两点透视投影
三点透视投影
45
内容
二维变换 三维变换 裁剪
二维线裁剪 二维多边形裁剪 文本裁剪 三维裁剪 关于三维变换与裁剪
46
三维变换流程图
计算机图形学曲线和曲面造型ppt课件
• 如果参数曲线有n阶连续的导矢,则称该曲线为Cn或n阶连续。
一般来说,如果曲线连续的阶数越高,那么曲线就越光滑。 在几何上,C0,C1,C2依次表示曲线的位置、切线方向,曲 率连续。
• 对于组合曲线,整条曲线的参数连续性取决于公共连接点的
连续性。如果在公共连接点达到k阶参数连续,则称该曲线
具有Ck或k阶参数连续性。
| | dpk (u)
duk
u u0
dpk (u) duk
u
u
0
k 0,1,, n
12
y
y(u, v)
z z(u, v)
曲面的范围通常用两个参数u和v的变化区间的矩形区域 u1 u u2 , v1 v v2 给出。这种曲面通常叫做矩形域曲面。参数u和v的变化区间一般规范为0,1,
10
矢量方程式为 s s(u,v) (x(u,v), y(u,v), z(u,v))
计算机图形学
第专题
曲线和曲面造型
1
一. 曲面造型的发展
• 曲面造型(Surface Modeling)是计算机辅助几何
设计 (Computer Aided Geometric Design,CAGD) 和计算机图形学(Computer Graphics)的一项重要 内容,主要研究在计算机图形系统中对曲面的表 示、设计、显示和分析。
多样性 特殊性 拓扑结构复杂性 一体化 集成化 网络化
三维数据采样技术 及硬件设备完善
曲 基于网格细分 面 的离散造型 造 型 曲面变形 研 究 曲面重建 的 开 曲面简化 拓 创 曲面转换 新
计算机图形学-自由曲线与曲面
t [0,1]
参数方程的矢量和矩阵表示
矢量表示:
p(t ) at bt ct d
3 2
t 0,1
矩阵表示:
p(t ) t
3
t
2
a b t 1 t 0,1 c d
参数表示的优点
1)点动成线(t可看为时间,曲线是点随时间而动 的轨迹);有更大的自由度控制曲线曲面的形 状; 2)可对参数曲线曲面的方程直接进行几何变换,而 不需要对曲线曲面的每个数据点进行几何变换 3)可以处理斜率无穷大的情况; 4)代数、几何相关和无关的变量是完全分离的,对 变量个数不限,便于将低维空间中的曲线曲面 扩展到高维空间中;
通常,用基函数和控制点信 息来决定一条曲线
参数三次样条曲线几何形式可以简化表示为:
p(t)=F1(t) p0+ F2(t) p1+ F3(t) p’0+ F4(t) p’1
表示该曲线:两点的坐标及其一阶导数+调和函数, t 的取值范围:[0,1]
7.3 三次Hermite样条
定义:假定型值点Pk和Pk+1之间的曲线段为 p(t),t∈[0,1],给定矢量Pk、Pk+1、Rk和Rk+1,则 满足下列条件的三次参数曲线为三次Hermite样 条曲线:
跨入计算机殿堂的入门篇
计算机图形学 施智平
shizhiping@
第七章
我们需要曲线曲面?
Geri
Geri’s model
Geri’s game
3D艺术的神话 PIXAR经典动画短片回顾
Bezier曲线和B样条曲线
Bezier曲面和B样条曲面
计算机图形学及cad技术讲义——曲线曲面基本理论
第三讲 曲线曲面基本理论1概述(a) 飞机 (b) 船舶 (c) 汽车图 1-1 曲线曲面造型应用曲线曲面造型(Surface Modeling)是计算机辅助几何设计(Computer Aided Geometric Design, CAGD)和计算机图形学的一项重要内容,主要研究在计算机系统中如何用曲线曲面表示、设计、显示和分析物体模型。
它在航空航天、船舶、飞机、汽车等行业得到广泛应用(如图1-1所示)。
由Coons 、Bezier 等大师于二十世纪六十年代奠定其理论基础,经过三十多年的发展,曲线曲面造型现在已形成了以有理B 样条曲线曲面(Rational B-spline Surface)参数化特征设计和隐式代数曲线曲面(Implicit Algebraic Surface)表示为主体的两类方法,且以插值(Interpolation)、逼近(Approximation)手段为几何理论体系。
1.1曲线曲面表示曲线曲面可以用三种形式进行表示,即显式、隐式和参数表示,三种形式表示如下。
显式表示:形如),(y x f z =的表达式。
对于一个平面曲线而言,显式表达式可写为)(x f y =。
在平面曲线方程中,一个x 值与一个y 值对应,所以显式方程不能表示封闭或多值曲线,例如,不能用显式方程表示一个圆。
隐式表示:形如0),,(=z y x f 的表达式。
如一个平面曲线方程,隐式表达式可写为0),(=y x f 。
隐式表示的优点是易于判断函数),(y x f 是否大于、小于或等于零,也就易于判断点是落在所表示曲线上或在曲线的哪一侧。
参数表示:形如)(t f x =,)(t f y =,)(t f z =的表达式,其中t 为参数。
即曲线上任一点的坐标均表示成给定参数的函数。
如平面曲线上任一点P 可表示为)](),([)(t y t x t P =,如图1-2(a)所示;空间曲线上任一三维点P 可表示为)](),(),([)(t z t y t x t P =,如图1-2(b)所示。
计算机图形学第三章
void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy; float k, e; dx = x1-x0, dy = y1- y0, k=dy/dx; e=-0.5, x=x0, y=y0; for (i=0; idx; i++) { drawpixel (x, y, color); x=x+1,e=e+k; if (e0) { y++, e=e-1;} } }
设备级显示算法,考虑运算方式、时间、 次数等细节。
扫描转换直线段
直线的绘制要求:
1.直线要直; 2.直线上的点要准确,即无不定向性和断裂情况; 3.直线的亮度、色泽要均匀; 4.画线的速度要快; 5.要求不同直线可具有不同的色泽、亮度、线型等。
扫描转换直线段
直线基础
我们知道:直线的笛卡儿斜率截距方程为:y=m•x+b
过各行各列象素中心构造一组虚拟网格线。按直线 从起点到终点的顺序计算直线与各垂直网格线的交 点,然后根据误差项的符号确定该列象素中与此交 点最近的象素。
d d d
d
yi 1 yi k ( xi 1 xi ) yi k 设直线方程为: ,其中k=dy/dx。 因为直线的起始点在象素中心,所以误差 项d的初值d0=0。 X下标每增加1,d的值相应递增直线的斜率值k,即d=d+k。 一旦d≥1,就把它减去1,这样保证d在0、1之间。 当d≥0.5时,最接近于当前象素的右上方象素 xi 1 , yi 1 ( ) xi 1 , yi 而当d<0.5时,更接近于右方象素( )。 为方便计算,令e=d-0.5, e的初值为-0.5,增量为k。 当e≥0时,取当前象素(xi,yi)的右上方象素 ( ); xi 1 , yi 1 而当e<0时,更接近于右方象素( xi 1 , yi )。
计算机图形学第三章
pDC->SetPixel(xc-x,yc+y,color);
pDC->SetPixel(xc-x,yc-y,color);
pDC->SetPixel(xc-y,yc-x,color);
pDC->SetPixel(xc+y,yc-x,color);
pDC->SetPixel(xc+x,yc-y,color);
K(xk, yk),这里的坐标为局部坐标。
圆弧的逐点插补法(2/15)
Y B(xb , yb) K(xk , yk)
R A(xa , ya)
O
X
图3-1 逐点比较法与圆弧的生成
圆弧的逐点插补法(3/15)
( (
( (
点K相对于圆弧AB的位置有三种情况:点K在AB外侧,点K在
AB上以及点K在AB内侧。为判断点K与AB的相对位置,引入偏差
制。每走一步J减去1,当J=0时即到达终点。下面以
一个例子说明。
圆弧的逐点插补法(8/15)
例 用逐点比较法逆时针画圆弧AB,设起点为 A(4,3), 终点为B(0,5),圆心为O(0,0)。
算法生成圆弧从起点开始,总走步数J=|0-
4|+|5-3|=6,起点处F0=0,走步方向的规定按第一象
限进行。算法的计算过程列于下表,其结果如图3-2
if (x*x+y*y-r*r>=0)
{
x=x-1;
}
if (x*x+y*y-r*r<0)
{
y=y+1;
}
递推计算圆的逐点绘制算法
void CDddView::OnCircle2() { pDC=GetDC(); GetClientRect(rect); int xc=200,yc=200; float r=100; int x=int(r+0.5); int y=0; int x1,x2;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
式中,ti是节点值,T= [t0,t1,…,tn+k]构成了k阶B 样条函数的节点矢量,其中的节点是非递减序列。
2.B样条曲线类型的划分
B样条曲线按其节点矢量中节点的分布情况,可划分 为多种类型。假定控制多边形的顶点为Pi(i=0, 1,…,n),介绍两种常用的简单类型。 (1)均匀周期样条曲线。
3.3 曲 线 图 形
3.3.1 曲线的生成算法 1.Bezier曲线
(1)Bezier曲线的定义:给定空间n+1个点的 位置矢量Pi(i=0,1,2,…,n),则Bezier参 数曲线上各点坐标的插值公式是
P(t ) Pi Bi ,n (t ), t [0,1]
i 0 n
其中,Pi构成该Bezier曲线的特征多边形,Bi, n(t)是n次Bernstein基函数:
(0≤t≤1,i = 0,1,2,…,n-2) N0,3 (t +2)=(3-( t +2))2/2=(1-t)2/2 N0,3 (t +1)= -(t +1)2+3(t +1)-3/2=-t 2+t +1/2 N0,3 (t)= t 2/2
例如:给定如图3-35所示的5个控制点,则由它们控制的二次 B样条曲线有3段,由P0、P1、P2控制的二次B样条曲线为 P (t)= P0(1-t)2/2+P1(-t2+t+1/2)+ P2 t2/2 当t=0时,P(0)= 0.5P0+0.5P1 (为P0 P1的中点。) 当t=1时,P(1)= 0.5P1+0.5P2 (为P1 P2的中点。) 同理由P1、P2、P3控制的二次B样条曲线为 P(t)= P1(1-t)2/2+P2(-t2+t+1/2)+ P3 t2/2 由P2、P3、P4控制的二次B样条曲线为 P(t)= P2(1-t)2/2+P3(-t2+t+1/2)+ P4 t2/2 可见二次B样条曲线经过控制多边形各边的中点,各段曲线在 各边的中点处一阶连续,其所共有的切线就是控制多边形的 边。
递推算法程序设计。
CDC *pDC=GetDC();
pDC->MoveTo(x[0],y[0]); for(t=0.05;t<1.0001;t=t+0.05)
{
for(i=0;i<=n;i++)
xx[i]=x[i], yy[i]=y[i]; for(k=1;k<=n;k++) { for(int i=0;i<n-k;i++) { } } pDC->LineTo (xx[0],yy[0]); xx[i]=xx[i]*(1-t)+xx[i+1]*t; yy[i]=yy[i]*(1-t)+yy[i+1]*t;
i 0 n
式中,Pi(i=0,1,…,n)是控制多边形的顶点, Ni,k (t)(i=0,1,…,n)称为k阶(k-1次)B样条基 函数。 B样条的基函数由递推公式定义为(约定0/0=0)
1 t i t t i 1 N i ,1 (t ) 0 otherwise
(tk-1≤t≤tn+1)
in 1 Bi ,n (t ) 0 otherwise
②端点性质
i0 1 Bi ,n (t ) 0 otherwise
③权性 ④对称性 ⑤递推性
B
i 0
n
i ,n
(t ) 1, t (0,1)
Bi ,n (t ) Bni ,n (t )
Bi ,n (t ) (1 t )Bi,n1 (t ) tBi 1,n1 (t )
Bezier曲线的起点和终点处的切线方向和特征多边形的 第1条边及最后一条边的走向一致。
②对称性:由控制顶点Qi =Pn-i构造出的新Bezier曲线, 与原Bezier曲线形状相同,但走向相反。
③凸包性:在[0,1]区间变化时,对某一个t值,P(t) 是特征多边形各顶点Pi的加权平均,加权因子依次是 Bi,n(t)。在几何图形上,曲线落在Pi构成的凸包之中, 如图3-26所示。 凸包
当n=2时,P(t)= P0B0,2(t)+ P1B1,2(t) + P2B2,2(t)
= P0 (1-t) 2-2P1 t (1-t) + P2t2 二次Bezier曲线是一条过P0、P2的抛物线。 当n=3时,P(t)= P0B0,3(t)+ P1B1,3(t) + P2B2,3(t) + P3B3,3(t) = P0 (1-t) 3+3P1 t (1-t) 2+ 3P2t2(1-t) + P3 t3
三次Bezier曲线 Bernstein基函数曲线如图3-25所示。
B 1 B0,3 B1,3 B2,3 B3,3
0
1 t
图3-25 三次Bezier曲线基函数
(2)Bernstein基函数的性质。
①正性
t 0,1 0 Bi ,n (t ) 0 t (0,1), i 1,2,...,n 1
5.反算Bezier曲线控制点
Bezier曲线是由控制点控制的,曲线只经过 控制点的起点和终点,如果要构造一条Bezier曲 线经过给定n+1个型值点Qi(i=0,1,2,…,n), 可反求该Bezier曲线的控制点。
3.3.2 B样条曲线
1.B样条的定义 B样条曲线方程定义为
P(t ) Pi N i , k (t )
for(t=0.01;t<1.0001;t=t+0.01) { //计算基函数 b03=(1-t)*(1-t)*(1-t);b13=3*t*(1-t)*(1-t); b23=3*t*t*(1-t);b33=t*t*t; x=b03*x[0]+b13*x[1]+b23*x[2]+b33*x[3]; y=b03*y[0]+b13*y[1]+b23*y[2]+b33*y[3];
P3
图3-29 n=3时
Pi n 的递推关系
图3-30 几何作图法求Bezier曲线上一点 (n=3,t=1/3)
3.Bezier曲线的拼接 如图3-32,设给定特征多边形的顶点为P0、P1、P2、 P3、P4、P5,由它们控制的曲线为5次Bezier曲线(虚 曲线)。如果在P2、P3直线上增加一个控制点Q,则 P0、P1、P2、Q和Q、P3、P4、P5分别控制两个三次 Bezier曲线(实曲线),在连接处具有一阶连续。
(i=0,1,…,n)
(3)Bezier曲线的性质。 ①端点性质
曲线端点位置矢量:
当t=0时,P(0)= P0;
当t=1时,P(1)= Pn。
Bezier曲线的起点、终点与相应的特征多边形的起点、 终点重合。
切矢量:
当t=0时,P'(0)=n (P1- P0);
当t=1时,P' (1)=n (Pn- Pn-1)。
P1
P(1)
P2 P4
P(0) P0
P(2) P3
图3-35 均匀周期二次B样条曲线示意图
主要VC程序代码为:
CDC *pDC=GetDC();
x1 = (x[0] + x[1]) * 0.5; y1 = (y[0] + y[1]) * 0.5; pDC->MoveTo (x1,y1); for(i=0; i<n-2; i++) { for(t=0.01; t<1.0001; t=t+0.01) { n2 = (1 - t) * (1 - t) * 0.5; n1 = (-2 * t * t + 2 * t + 1) * 0.5; n0 = t * t * 0.5; x1 = x[i] * n2 + x[i + 1] * n1 + x[i + 2] * n0; y1 = y[i] * n2 + y[i + 1] * n1 + y[i + 2] * n0; pDC->LineTo (x1,y1);
}
(3)递推算法几何作图 当n=3时,递推出的Pi k呈直角三角形,对应结果如图 3-29所示。从左向右递推,最右边点 P03 即为曲线上的 点。
P0 P1 P2
P Pi01
n
P12 P1 P0 P02 P12 P03 P01 P0 0 1/3 1
2
P11
P2
P21
P11
P03=P(1/3)
P3
P21
P1 P2 Q P0 P3 P4 P5
图3-32 Bezier曲线的拼接
4.Bezier曲线的升阶与降阶 (1)Bezier曲线的升阶。保持Bezier曲线的形状 与定向不变,增加控制顶点数,可以提高Bezier 曲线的次数。增加控制顶点数,就增加了对曲线 进行形状控制的灵活性,还在构造曲面方面有着 重要的应用。 (2)Bezier曲线的降阶。降阶是升阶的逆过程。 给定一条由原始控制顶点Pi(i=0,1,…,n) 定义的n次Bezier曲线,要求找到一条由新控制 顶点(i=0,1,…,n-1)定义的n-1次Bezier曲 线来逼近原始曲线。
图3-26 Bezier曲线的凸包性
④几何不变性:Bezier曲线的位置和形状与其特征多 边形顶点的位置有关,它不依赖坐标系的选择。
(4)Bezier曲线的程序设计。
①三次Bezier曲线的程序设计如下: CDC[0],y[0]); //移到曲线上的第一个点
Bi ,n (t ) C t (1 t )
i i n n i
n! t i (1 t ) ni i!(n i)!