前言
如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
文章目录
第七章 曲线曲面 - 1
7.1 几何造型简史
-
几何造型技术 —— 表达物体模型形状的技术
-
三类三维模型
-
线框模型 —— 顶点和棱边来表示物体
-
曲面模型 (最常用) —— 描述物体表面和表面的连接关系,不描述物体内部的点的属性
-
实体模型 —— 不但有物体的外观而且也有物体内点的描述
-
7.2 参数曲线基本概念
7.2.1 曲线和曲面的三种表示方法
-
非参数表示
-
显式表示
y = f ( x ) y = f(x) y=f(x), 一个 x x x 值对应一个 y y y 值。因此显式方程不能表示封闭或多值曲线。
-
隐式表示
f ( x , y ) = 0 f(x,y)=0 f(x,y)=0, 易于判断一个点是否在曲线上。
-
显式或隐式表示存在的问题
与坐标轴相关、隐函数表示不直观、作图不方便、显函数表示存在多值性、会出现斜率为无穷大的情形
-
-
参数表示
-
特性
① 用 t t t 表示参数,平面曲线 p ( t ) = [ x ( t ) , y ( t ) ] p(t)=[x(t),y(t)] p(t)=[x(t),y(t)],空间曲线 p ( t ) = [ x ( t ) , y ( t ) , z ( t ) ] p(t)=[x(t),y(t),z(t)] p(t)=[x(t),y(t),z(t)]
② 等价于笛卡尔分量表示, p ( t ) = x ( t ) ∗ i + y ( t ) ∗ j + z ( t ) ∗ k p(t)=x(t)*i+y(t)*j+z(t)*k p(t)=x(t)∗i+y(t)∗j+z(t)∗k
-
区间规范化
① 假设曲线段对应的参数区间为 [ a , b ] [a,b] [a,b],即 a ≤ t ≤ b a \leq t \leq b a≤t≤b 。为了方便计算,可以将区间 [ a , b ] [a,b] [a,b] 规范化为 [ 0 , 1 ] [0,1] [0,1],参数变换为 t ′ = t − a b − a t^{'} = \frac{t-a}{b-a} t′=b−at−a, p = p ( t ) , t ∈ [ 0 , 1 ] p=p(t), \ t\in [0,1] p=p(t), t∈[0,1]。
② 该形式把曲线上表示一个点的位置矢量的各个分量合写在一起当成一个整体,考虑的是曲线上的点之间的相对位置关系而不是它们与所取坐标系之间的相对位置关系。
③ 可以把曲面表示成为双参数 u 和 v 的矢量函数, p ( u , v ) = p ( x ( u , v ) , y ( u , v ) , z ( u , v ) ) p(u,v)=p(x(u,v),y(u,v),z(u,v)) p(u,v)=p(x(u,v),y(u,v),z(u,v)) ( u , v ) ∈ [ 0 , 1 ] ∗ [ 0 , 1 ] (u,v)\in [0,1]*[0,1] (u,v)∈[0,1]∗[0,1] 。
-
参数方程的优势
① 可以满足几何不变性的要求 —— 表示的形状不随所取坐标系而改变
② 有更大的自由度来控制曲线、曲面的形状
③ 直接对参数方程进行几何变换 —— 非参数方程的几何变换必须对图形上每个型值点进行几何变换,而参数表示的几何变换可对其参数方程直接进行变换
④ 便于处理斜率为无穷大的情形,不会因此而中断计算
⑤ 界定曲线、曲面的范围十分简单 —— 具有规格化的参数变量 t ∈ [ 0 , 1 ] t\in [0,1] t∈[0,1]
⑥ 易于用向量和矩阵运算,简化计算
-
7.2.2 参数曲线的基本概念
- 基本数学形式
- 位置矢量
曲线上任一点的位置矢量可表示为:$p(t)=[x(t),y(t),z(t)] $
- 切矢量
- 曲率
切向量求导,求导以后还是一个向量,称为曲率,其几何意义是曲线的单位切向量对弧长的转动率,即刻画这一点曲线的弯曲程度。
- 法矢量
- 挠率
刻画空间曲线的扭曲程度。空间曲线的扭曲程度等价于密切平面的法矢量 (即曲线的副法矢量) 关于弧长的变化率。
-
插值
自由曲线和自由曲面一般通过少数分散的点生成,这些点叫做"型值点"、“样本点"或"控制点”。
给定一组有序的数据点 P i ( i = 0 , 1 , 2 , … , n ) P_i(i=0,1,2,…,n) Pi(i=0,1,2,…,n) ,要求构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值,所构造的曲线称为插值曲线。
构造插值曲线曲面所采用的数学方法称为曲线曲面插值法。
-
线性插值
假设给定函数 f ( x ) f(x) f(x) 在两个不同点 x 1 x_1 x1 和 x 2 x_2 x2 的值,用一个线性函数: y = a x + b y=ax+b y=ax+b,近似代替,称为线性插值函数。
-
抛物线插值
已知三个点的坐标,要求构造一个抛物线函数。 ϕ ( x ) = a x 2 + b x + c \phi(x)=ax^2+bx+c ϕ(x)=ax2+bx+c
-
-
拟合
构造一条曲线使之在某种意义下最接近给定的数据点 (但未必通过这些点),所构造的曲线为拟合曲线。
逼近通常指用一些性质较好的函数近似表示一些性质不好的函数。因此插值和拟合都可以视为逼近。
- 光顺
指曲线的拐点不能太多 (有一、二阶导数等)。[拐点 —— 凸曲线和凹曲线的连接点]
对平面曲线而言,相对光顺的条件是:a. 具有二阶几何连续性 ( G 2 G^2 G2)
b. 不存在多余拐点和奇异点
c. 曲率变化较小
-
连续性
-
参数连续性
- 0阶参数连续性
记为 C 0 C^0 C0连续性,是指曲线的几何位置连接,即第一个曲线段在 t i 1 t_{i1} ti1处的 x x x、 y y y、 z z z值与第二个曲线段在 t ( i + 1 ) 0 t_{(i+1)0} t(i+1)0处的 x x x、 y y y、 z z z值相等。
- 1阶参数连续性
记为 C 1 C^1 C1连续性,指代表两个相邻曲线段的方程在相交点处有相同的一阶导数(切线)
- 2阶参数连续性
记为 C 2 C^2 C2连续性,指两个相邻曲线段的方程在相交点处具有相同的一阶和二阶导数。 C 2 C^2 C2连续性即交点处的切向量变化率相等,即切线从一个曲线段平滑地变化到另一个曲线段。二阶连续性对电影中的动画途径和很多精密 CAD \text{CAD} CAD 需求有用。
-
几何连续性
- 0阶几何连续性
记为 G 0 G^0 G0连续性。与0阶参数连续性的定义相同,满足 p i ( t i 1 ) = p ( i + 1 ) ( t ( i + 1 ) 0 ) p_i(t_{i1})=p_{(i+1)}(t_{(i+1)0}) pi(ti1)=p(i+1)(t(i+1)0)
- 1阶几何连续性
记为 G 1 G^1 G1连续性。若要求在结合处达到 G 1 G^1 G1连续,就是说两条曲线在结合处在满足 G 0 G^0 G0连续的条件下,并有公共的切矢。即切矢量方向一致。
- 2阶几何连续性
记为 G 2 G^2 G2连续性。就是说两条曲线在满足 G 1 G^1 G1连续的条件下,并有公共的曲率,即方向相同。
-
-
参数化
-
均匀参数化
- 节点在参数轴上呈等距分布。如0、1/10、2/10…
-
累加弦长参数化 (根据长度的比例关系来确定 t)
- 这种参数法如实反映了型值点按弦长的分布情况,能够克服型值点按弦长分布不均匀的情况下采用均匀参数化所出现的问题。
-
向心参数化法
- 向心参数化法假设在一段曲线弧上的向心力与曲线切矢从该弧段始端至末端的转角成正比,加上一些简化假设,得到向心参数化法。此法尤其适用于非均匀型值点分布。
-
-
参数曲线的代数和几何形式
-
代数形式
-
-
几何形式
-
几何形式是利用一条曲线端点的几何性质来刻画一条曲线。端点的几何性质,就是指曲线的端点位置、切向量、各阶导数等端点的信息。
-
对三次参数曲线,若用其端点位矢 P ( 0 ) P(0) P(0)、 P ( 1 ) P(1) P(1)和切矢 P ′ ( 0 ) P^{'}(0) P′(0)、 P ′ ( 1 ) P^{'}(1) P′(1)描述。需要这四个量来刻画三次参数曲线。
-
-
-
-
-
-
7.3 Bezier曲线与曲面
7.3.1 Bezier曲线的背景和定义
-
Bezier曲线的背景
-
用曲线段拟合曲线 f ( x ) f(x) f(x)时,可以把曲线表示为许多小线段 ϕ ( x ) \phi(x) ϕ(x)之和,其中 ϕ ( x ) \phi(x) ϕ(x)称为基(混合)函数。 f ( x ) = ∑ i = 0 n a i ∗ ϕ i ( x ) f(x)=\sum\limits_{i=0}^{n}a_i*\phi_{i}(x) f(x)=i=0∑nai∗ϕi(x) 。
-
这些基函数是要用于计算和显示的。因此,经常选择多项式作为基函数。 ϕ ( x ) = a n x n + a n − 1 x n − 1 + … + a 1 x + a 0 \phi(x)=a_nx^n+a_{n-1}x^{n-1}+…+a_1x+a_0 ϕ(x)=anxn+an−1xn−1+…+a1x+a0 。
-
1962年,Bezier构造了一种以逼近为基础的参数曲线和曲面的设计方法。该方法基点是在进行汽车外形设计时,先用折线段勾画出汽车的大致外形轮廓,然后用光滑的参数曲线去逼近这个折线多边形。这个折线多边形被称为特征多边形,逼近该特征多边形的曲线被称为Bezier曲线。
-
-
-
-
-
Bezier曲线的定义
-
针对Bezier曲线,给定空间 n+1 个点的位置矢量 P i ( i = 0 , 1 , 2 … , n ) P_i(i=0,1,2…,n) Pi(i=0,1,2…,n),则Bezier曲线段的参数方程表示如下:( 0 0 = 1 , 0 ! = 1 0^0=1, 0!=1 00=1,0!=1)
-
-
P i P_i Pi代表空间的很多点,t在0到1之间,把t代进去可以算出一个数 —— 即平面或空间一个点。随着t值的变化,点也在变化。当t从0变到1时,就得到空间的一个图形,这个图形就是Bezier曲线。
-
-
一次Bezier曲线
-
-
B 0 , 1 ( t ) = ( 1 − t ) , B 1 , 1 ( t ) = t , p ( t ) = ( 1 − t ) P 0 + t P 1 B_{0,1}(t)=(1-t),\ B_{1,1}(t)=t,\ p(t)=(1-t)P_0+tP_1 B0,1(t)=(1−t), B1,1(t)=t, p(t)=(1−t)P0+tP1,即连接起点 P 0 P_0 P0和终点 P 1 P_1 P1的直线段。
-
-
-
二次Bezier曲线
- B 0 , 2 ( t ) = ( 1 − t ) 2 , B 1 , 2 ( t ) = 2 t ( 1 − t ) , B 2 , 2 ( t ) = t 2 , p ( t ) = ( P 2 − 2 P 1 + P 0 ) t 2 + 2 ( P 1 − P 0 ) t + P 0 B_{0,2}(t)=(1-t)^2,\ B_{1,2}(t)=2t(1-t),\ B_{2,2}(t)=t^2,\ p(t)=(P_2-2P_1+P_0)t^2+2(P_1-P_0)t+P_0 B0,2(t)=(1−t)2, B1,2(t)=2t(1−t), B2,2(t)=t2, p(t)=(P2−2P1+P0)t2+2(P1−P0)t+P0
-
三次Bezier曲线
-
三次Bezier曲线由4个控制点生成,这时n=3,有4个控制点 p 0 p_0 p0、 p 1 p_1 p1、 p 2 p_2 p2、 p 3 p_3 p3,Bezier多项式是三次多项式。
-
-
-
-
图中每个基函数在参数 t t t 的整个 ( 0 , 1 ) (0,1) (0,1) 的开区间范围内不为 0 0 0。Bezier曲线不可能对曲线形状进行局部控制,如果改变任一控制点位置,整个曲线会受到影响。
-
-
-
-
7.3.2 Bernstein基函数的性质
-
正性 (非负性)
- B i , n ( t ) = { = 0 t = 0 , 1 > 0 t ∈ ( 0 , 1 ) , i = 1 , 2 , … , n − 1 ; B_{i,n}(t)= \left\{\begin{aligned}& = 0 \ \ \ t=0,1 \\& > 0 \ \ \ t\in (0,1),i=1,2,…,n-1;\\\end{aligned}\right. Bi,n(t)={=0 t=0,1>0 t∈(0,1),i=1,2,…,n−1;
-
权性
- 基函数有n+1项,n+1个基函数的和加起来正好等于1。 ∑ i = 0 n B i , n ( t ) = 1 , t ∈ ( 0 , 1 ) 。 \sum\limits_{i=0}^{n}B_{i,n}(t)=1,t\in(0,1)。 i=0∑nBi,n(t)=1,t∈(0,1)。
-
端点性质
-
对称性
- 保持 n n n 次Bezier曲线控制多边形的顶点位置不变,而把次序颠倒过来,则此时曲线仍不变,只不过曲线的走向相反。
-
递推性
- B i , n ( t ) = ( 1 − t ) B i , n − 1 ( t ) + t B i − 1 , n − 1 ( t ) B_{i,n}(t)=(1-t)B_{i,n-1}(t)+tB_{i-1,n-1}(t) Bi,n(t)=(1−t)Bi,n−1(t)+tBi−1,n−1(t)
- C n i = C n − 1 i + C n − 1 i − 1 C_n^i=C_{n-1}^i+C_{n-1}^{i-1} Cni=Cn−1i+Cn−1i−1
-
导函数
- B i , n ′ ( t ) = n [ B i − 1 , n − 1 ( t ) − B i , n − 1 ( t ) ] , i = 0 , 1 , … , n B^{'}_{i,n}(t)=n[B_{i-1,n-1}(t)-B_{i,n-1}(t)],\ \ i=0,1,…,n Bi,n′(t)=n[Bi−1,n−1(t)−Bi,n−1(t)], i=0,1,…,n
-
最大值
- B i , n ( t ) B_{i,n}(t) Bi,n(t)在 t = i n t=\frac{i}{n} t=ni处达到最大值
-
积分
- ∫ 0 1 B i , n ( t ) d t = 1 n + 1 \int_0^1 B_{i,n}(t)dt=\frac{1}{n+1} ∫01Bi,n(t)dt=n+11
-
降阶公式
- B i , n ( u ) = ( 1 − u ) B i , n − 1 ( u ) + u B i − 1 , n − 1 ( u ) B_{i,n}(u)=(1-u)B_{i,n-1}(u)+uB_{i-1,n-1}(u) Bi,n(u)=(1−u)Bi,n−1(u)+uBi−1,n−1(u)
-
升阶公式
- B i , n ( n ) = i + 1 n + 1 B i + 1 , n + 1 ( t ) + n + 1 − i n + 1 B i , n + 1 ( t ) B_{i,n}(n)=\frac{i+1}{n+1}B_{i+1,n+1}(t)+\frac{n+1-i}{n+1}B_{i,n+1}(t) Bi,n(n)=n+1i+1Bi+1,n+1(t)+n+1n+1−iBi,n+1(t)
7.3.3 Bezier曲线的性质
-
端点性质
- 顶点 p 0 p_0 p0 和 p n p_n pn 分别位于实际曲线段的起点和终点上。
-
一阶导数
- p ′ ( t ) = n ∑ i = 1 n ( p i − p i − 1 ) B i − 1 , n − 1 ( t ) p^{'}(t)=n\sum\limits_{i=1}^{n}(p_i-p_{i-1})B_{i-1,n-1}(t) p′(t)=ni=1∑n(pi−pi−1)Bi−1,n−1(t)
- p ′ ( 0 ) = n ( p 1 − p 0 ) , p ′ ( 1 ) = n ( p n − p n − 1 ) p^{'}(0)=n(p_1-p_0), \ p^{'}(1)=n(p_n-p_{n-1}) p′(0)=n(p1−p0), p′(1)=n(pn−pn−1)
- 证明Bezier曲线的起点和终点处的切线方向和特征多边形的第一条边及最后一条边的走向一致
-
几何不变性
- 指某些几何特性不随坐标变换而变化的特性。Bezier曲线的形状仅与控制多边形各顶点的相对位置有关,而与坐标系的选择无关。
-
变差缩减性
- 若Bezier曲线的特征多边形是一个平面图形,则平面内任意直线与 p ( t ) p(t) p(t) 的交点个数不多于该直线与其特征多边形的交点个数。这一性质叫变差缩减性质。
- 此性质反映了Bezier曲线比其特征多边形的波动还小,也就是说Bezier曲线比特征多边形的折线更光顺。