计算机辅助几何设计期末作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 p(t ) 为 R 2 中的一条曲线, 令 p (t ) = B0 , 则对 t ∈ [0,1] , 称为基于控制顶点 b0 , b1 , b2 , b3
的 Bezier 曲线。易知:
p ( t ) = (1 − t ) b0 + 3 (1 − t ) tb1 + 3 (1 − t ) t 2b2 + t 3b3
b0n ( t ) = (1 − t ) b0n −1 ( t ) + tb1n −1 ( t ) t ∈ [ 0,1]
由此得到 Bezier 曲线的递推计算公式:
1 bik = (1 − t ) bik −1 + tbik+− 1 , k = 1,..., n, i = 0,1,..., n − k
3 2
给定四点 b0 , b1 , b2 , b3 所得的 Bezier 曲线如图 1 所示。
2
姓名:
学号:
专业:
图 1 四个控制点的 Bezier 曲线 类似于上述例子,现从手绘图形中读入数据点集合 {bi } ,将其作为控制点绘 制图形,如图 2 所示。
图 2 更高阶的 Bezier 曲线
Bezier 曲线是图形学中最基本、最重要的内容之一,它广泛应用于二维和三
i = b i i ⎞ ⎛ bi −1 + ⎜ 1 − ⎟ bi , i = 0,..., n + 1 n +1 ⎝ n +1⎠
当原控制点为 (1,5), (9,1), (7,8), (3, 2) 时,升阶一次以后,两个控制多边形定义了相 同的 Bezier 曲线,如图 5 所示。
图 5 升阶:两个多边形定义了相同的三次曲线 2 B 样条曲线 虽然 Bezier 曲线较好地解决了整体形状控制问题,但仍存在连接问题和局 部修改问题。而 B 样条曲线不仅具有 Bezier 曲线的几何特征,而且还具有曲线
用 de Casteljau 算法绘制的 Bezier 曲线如图 4 所示。
图 4 de Casteljau 算法绘制 Bezier 曲线 1.3 Bezier 曲线的升阶公式 假设用上面介绍的方法设计一个 n 次 Bezier 曲线。在对多边形多次修改后, 可以发现 n 次曲线不具有充分的灵活性来模拟所要求的形状。在这种情况下,一 个可行的方法就是通过再增加一个顶点来增加多边形的灵活性。增加了一个顶 点,曲线的次数也就增加了 1,但仍要求保持曲线的形状不发生改变。因此,我
1 b00b0 1 0 b0 b1
=
b10b11
0 b11b2
=
1 2 b0 b0 1 b02b1
这就是抛物线的三切线定理。
0 0 当 b0 , b2 固定,引入参数 t ,令上述比值为 t : (1 − t ) ,即有:
1 b0 = (1 − t ) b00 + tb10 0 b11 = (1 − t ) b10 + tb2 1 1 b02 = (1 − t ) b0 + tb1
t 从 0 变到 1,第一、二式是两条一次 Bezier 曲线。将第一、二式代入第三式得:
0 b02 ( t ) = (1 − t ) b00 + 2t (1 − t ) b10 + t 2b2 2
0 0 当 t 从 0 变到 1 时, 它表示了由 b0 三个控制顶点形成的一条二次 Bezier , b10 , b2
姓名:
学号:
专业:
计算机辅助几何设计期末作业
——基于 Bezier 曲线和 B 样条曲线的手绘图
姓名: 专业: 学号: 得分:
计算机辅助几何设计(Computer Aided Geometric Design)简称 CAGD, 主要研 究在计算机图像系统的环境下对曲线、曲面信息的表示、逼近、分析和综合。它 起源于飞机、船舶的外形放样(Lofting)工艺。随着计算机图形显示对于真实性、 实时性和交互性要求的日益增强, 计算机辅助几何设计在近几十年来得到了长足 的发展。 Bezier 曲线是法国雷诺(Renault)汽车公司的工程师 Bezier 在 1971 年给出的 一种由控制多边形定义曲线的方法。Bezier 曲线具有良好的几何性质,能简洁、 清晰地描述和表达自由曲线曲面,在 CAGD 中占有重要的位置。Bezier 曲线的 最大优点之一是:控制点如果构成凸多边形,即控制多边形是凸的,Bezier 曲线 也是凸的。无论在理论上还是应用上,我们都希望曲线整体要达到一定高的光滑 度。当设计一个复杂的曲线曲面时,希望用多张曲面或多条曲线拼接而成,那么 在相接的地方要求光滑,这时就要用到连续性的概念。我们应用 B 样条方法实 现曲线的光滑拼接。 B 样条曲线是由许多的多项式曲线段组成, 它比 Bezier 曲线 更加灵活通用。 本文首先针对 Bezier 曲线的造型问题做了一系列的理论阐述与实践,然后 进一步针对 B 样条曲线的造型问题, 从手绘图形中读入数据点集合 {d i } , 将其作 为 de Boor 控制点,进而运用 B 样条方法,输出平滑后的曲线。最后综合运用 Bezier 方法及 B 样条方法开展几何设计。 1 Bezier 曲线 1.1 Bezier 曲线的定义 给定 n + 1 个空间向量 bi ( i = 0,1,..., n ) ,则 Bezier 曲线段的 n 次参数方程表示 如下:
给定节点序列,通过给定的de Boor控制点计算出满足C1条件的Bezier控制 点,然后运用分段de Casteljau算法,绘制相应的满足C1条件的二次B样条曲线。 具体过程如下:
(1) 令 b0 = d −1 , b2l = dl ; (2) 令 b2 j −1 = d j −1 , j = 1,..., l ; (3) 令 b2 j =
n +1 n − i + 1 n +1 i n +1 Bi (t ) + ∑ bi −1 Bi (t ) n +1 n +1 i =0 i =0 n +1 n +1− i i = ∑( bi + bi −1 )Bin +1 (t ) n + 1 n + 1 i =0
= ∑ bi
n +1
比较参数就可以得到所求的结果:
这便是 de Casteljau 算法。用这一递推公式,在给定参数下,求 Bezier 曲线上一 点 p (t ) 非常有效。上式中:bi0 ( i = 0,1,..., n ) 是定义 Bezier 曲线的控制点,b0n ( t ) 即 为曲线 p (t ) 上参数为 t 的点。
0 下面给出一个具体的例子:当 b00 = (1,1) , b10 = ( 2,5 ) , b2 = ( 6, 7 ) , b30 = ( 9,3) 时,
4
姓名:
学号:
专业:
的二条二次 Bezier 曲线的线性组合。由 n + 1 个控制点 bi0 ( i = 0,1,..., n ) 定义的 n 次
Bezier 曲线 b0n ( t ) 可被定义为分别由前、后 n 个控制点定义的两条 n − 1 次 Bezier
曲线 b0n −1 ( t ) 和 b1n −1 ( t ) 的线性组合:
6
姓名:
学号:
专业:
形状局部可调及连续阶数可调等 Bezier 曲线所没有的特征。一条 B 样条曲线由 许多多项式曲线段组成,曲线段可以用 de Boor 算法进行处理。 2.1 C1的二次B样条曲线 一条C1的二次B样条曲线是由下面几点定义的:
(1) 每个曲线段的次数小于等于 2; (2) 节点序列 t0 < ... < tl , Δ j −1 = t j − t j −1 , ( j = 1,..., l ) ; (3) de Boor 控制点为 d −1 , d 0 ,..., dl −1 , dl 。
p (t ) = ∑ bi Bi ,n (t )
i =0 n
t ∈ [0,1]
1
wk.baidu.com
姓名:
学号:
专业:
式中空间向量 bi ( i = 0,1,..., n ) 是控制多边形的 n + 1 个顶点, Bi ,n (t ) 是 Bernstein 基 函数,有如下形式: ⎛n⎞ n! Bi ,n (t ) = ⎜ ⎟ t i (1 − t ) n −i = t i (1 − t ) n −i i !(n − i )! ⎝i⎠
1 1 1 B0 = (1 − t ) b0 + tb1 , B1 = (1 − t ) b1 + tb2 , B2 = (1 − t ) b2 + tb3 1 1 1 1 , B12 = (1 − t ) B1 B02 = (1 − t ) B0 + tB1 + tB2 3 B0 = (1 − t ) B02 + tB12
3
姓名:
学号:
专业:
不太适合在工程上使用。但使用德卡斯特里奥(de Casteljau)提出的递推算法则简 单得多。
图 3 定比分割
0 0 0 0 如图 3 所示,设 b0 是一条抛物线上顺序三个不同的点。过 b0 和 b2 点的 , b02 , b2
0 1 两切线交于 b10 点,过 b02 点的切线交 b00b10 和 b10b2 于 b0 和 b11 ,则如下比例成立:
n
(i = 0,1,....n)
n
由于 ∑ Bi ,n (t ) 恰好是二项式 [t + (1 − t )]n 的展开式,从而有 ∑ Bi , n (t ) ≡ 1 。
i =0 i =0
在二维平面中,bi 是平面上的一系列点,t 在 0 到 1 之间取值。 任意取定 [0,1] 之间的某个 t 可以得到一个 p (t ) (即平面上一个点) ,随着 t 的不断变化,点也随 之改变。当 t 从 0 变到 1 时,就得到平面上的一条曲线,该曲线就是 Bezier 曲线。 下面用一个例子来解释该方法:给定四点 b0 , b1 , b2 , b3 ,用下面方法构造一条 曲线:对任意 t ∈ [0,1] ,取
0 曲线。 并且表明: 这个二次 Bezier 曲线 b02 ( t ) 可以定义为分别由前两个顶点 ( b0 , b10 )
0 和后两个顶点 ( b10 , b2 ) 决定的一次 Bezier 曲线的线性组合。依次类推,由四个控 3 制点定义的三次 Bezier 曲线 b0 ( t ) 可被定义为分别由 ( b00 , b10 , b20 ) 和 ( b10 , b20 , b30 ) 确定
∑b B
i =0 i
n
n i
(t )
= (1 − t + t )∑ bi Bin (t )
i =0
n
= ∑ bi (1 − t ) Bin (t ) + ∑ bi tBin (t )
i =0 n i =0
n
n
= ∑ bi
i =0
n n − i + 1 n +1 i + 1 n +1 Bi (t ) + ∑ bi Bi +1 (t ) n +1 n +1 i =0
维图形中。但是如何快速、准确地绘制曲线仍是一个问题。通常的绘制方法是令
t 取 0 到 1 之间不同的值,求出 Bezier 曲线上的很多点,然后将这些点用小直线
段相连,从而绘出 Bezier 曲线。 1.2 Bezier 曲线的递推(de Casteljau)算法 根据 Bezier 曲线的定义确定参数方程绘制 Bezier 曲线,因其计算量过大,
图 6 山峦耸立 2.2 C1的二次B样条闭曲线
0 ,..., b n +1 的曲线来描述原来顶点为 b ,..., b 的曲线。为了实现这 们要用控制点为 b 0 n
5
姓名:
学号:
专业:
个目的,考虑如下等式:
i B n +1 (t ) ∑ bi Bin (t ) = ∑ b i
i =0 i =0 n n +1
i 与 b 的关系。对于等式左边,我们有: 然后通过这个等式找出 b i
Δj Δ j −1 + Δ j b2 j −1 + Δ j −1 Δ j −1 + Δ j b2 j +1 , j = 1,..., l − 1 ;
(4) 对 Bezier 控制点 b0 , b1 ,...., b2l −1 , b2l ,运用分段 de Casteljau 算法。
下面给出一个具体的例子:取定 Δ 0 = Δ1 = ... = Δl −1 ,从手绘图形中读入数据 点集合 {d j j = −1, 0,..., l} ,将其作为 de Boor 控制点绘制曲线,如图 6 所示。
相关文档
最新文档