当前位置:   article > 正文

曲线曲面理论_曲面隐式化函数

曲面隐式化函数

曲线曲面理论

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的形式,称之为隐式表示。隐式表示的优点是易于判断一个点是否在曲线上

2、显示或隐式表示存在的问题

(1)与坐标轴相关

(2)用隐函数表示不直观,作图不方便

(3)用显函数表示存在多值性

(4)会出现斜率为无穷大的情形

3、参数方程

为了解决2的问题,可以采用参数方程

为了克服以上问题,曲线曲面方程通常表示成参数的形式,假定用 t t t表示参数,

平面曲线上任一点P可表示为: p ( t ) = [ x ( t ) , y ( t ) ] p(t)=[x(t),y(t)] p(t)=[x(t),y(t)]

空间曲线上任一三维点P可表示为: 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

这样,给定一个 t t t值,就得到曲线上一点的坐标

假设曲线段对应的参数区间为 [ a , b ] [a,b] [a,b],即 a ≤ t ≤ b a≤t≤b atb。为方便区间,可以将区间 [ a , b ] [a,b] [a,b]规范化成 [ 0 , 1 ] [0,1] [0,1],参数变换为:
t ′ = t − a b − a t'=\frac{t-a}{b-a} t=bata
当取 t = a t=a t=a时, t ′ = 0 t'=0 t=0,当 t = b t=b t=b时, t ′ = 1 t'=1 t=1,因此这就实现了将区间 [ a , b ] [a,b] [a,b]规范化成 [ 0 , 1 ] [0,1] [0,1]

参数曲线一般可写成: p = p ( t ) , t ∈ [ 0 , 1 ] p=p(t),t\in[0,1] p=p(t),t[0,1]

类似地,可把曲面表示成为双参数 u u u v v v的矢量函数

$p(u,v)=p(x(u,v),y(u,v),z(u,v))\ \ (u,v)\in[0,1]×[0,1] $

最简单的参数曲线是直线段,端点 P 1 , P 2 P_1,P_2 P1,P2的直线段参数方程可表示为:
p ( t ) = p 1 + ( p 2 − p 1 ) t ,   t ∈ [ 0 , 1 ] p(t)=p_1+(p_2-p_1)t,\ t\in[0,1] p(t)=p1+(p2p1)t, t[0,1]

4、参数方程的优势

在曲线、曲面的表示上,参数方程比显示、隐式方程有更多的优越性,主要表现在:

  1. 可以满足几何不变性的要求

    即指形状的数学表示及其所表达的形状不随所取坐标系而改变的性质(跟 x y z xyz xyz坐标没有关系,只跟参数 t t t有关)

  2. 有更大的自由度来控制曲线、曲面的形状

    y = a x 3 + b x 2 + c x + d y=ax^3+bx^2+cx+d y=ax3+bx2+cx+d只有4个系数控制曲线的形状。

    而二维三次曲线的参数表达式为:
    p ( t ) = [ a 1 t 3 + a 2 t 2 + a 3 t + a 4 b 1 t 3 + b 2 t 2 + b 3 t + b 4 ]   t ∈ ( 0 , 1 ) p(t)=[a1t3+a2t2+a3t+a4b1t3+b2t2+b3t+b4]

    \ t\in(0,1) p(t)=[a1t3+a2t2+a3t+a4b1t3+b2t2+b3t+b4] t(0,1)
    有8个系数,所以由更大的自由度来控制曲线的形状

  3. 直接对参数方程进行几何变换

    对非参数方程表示的曲线、曲面进行变换,必须对曲线、曲面上的每个型值点进行几何变换;而对参数表示的曲线、曲面可对其参数方程直接进行几何变换

  4. 便于处理斜率为无穷大的情形,不会因此而中断计算

  5. 界定曲线、曲面的范围十分简单

    具有规格化的参数变量 t ∈ [ 0 , 1 ] t\in[0,1] t[0,1]

  6. 易于用向量(矢量)和矩阵运算,简化计算

5、参数曲线的基本概念

微分几何是用微分的方法来研究曲线的局部性质,如曲线的弯曲程度等

一条用参数表示的三维曲线是一个有界点集,可写成一个带参数的、连续的、单值的数学函数,其形式:
{ x = x ( t ) y = y ( t ) z = z ( t )         0 ≤ t ≤ 1 {x=x(t)y=y(t)z=z(t) 

\ \ \ \ \ 0≤t≤1 \\ x=x(t)y=y(t)z=z(t)      0t1

p = p ( t )     t ∈ [ 0 , 1 ] p ′ ( t ) = d P d t     p ′ ′ ( t ) = d 2 P d t 2 p=p(t)\ \ \ t\in[0,1]\\ p'(t)=\frac{dP}{dt}\ \ \ p''(t)=\frac{d^2P}{dt^2} p=p(t)   t[0,1]p(t)=dtdP   p(t)=dt2d2P

1.位置矢量

曲线上任一点的位置矢量可表示为:

p ( t ) = [ x ( t ) , y ( t ) , z ( t ) ] p(t)=[x(t),y(t),z(t)] p(t)=[x(t),y(t),z(t)]

2.切矢量

选择弧长 s s s作为参数,当 Δ t → 0 \Delta t\to0 Δt0时,弧长 Δ s → 0 \Delta s\to0 Δs0,但方向不能趋向于0
T = d P d s = lim ⁡ Δ s → 0 Δ P Δ s     单 位 矢 量 T=\frac{dP}{ds}=\lim_{\Delta s\to 0}\frac{\Delta P}{\Delta s}\ \ \ 单位矢量 T=dsdP=Δs0limΔsΔP   
根据弧长微分公式有: ( d s ) 2 = ( d x ) 2 + ( d y ) 2 + ( d z ) 2 (ds)^2=(dx)^2+(dy)^2+(dz)^2 (ds)2=(dx)2+(dy)2+(dz)2

引入参数 t t t,可改写成:
( d s / d t ) 2 = ( d x / d t ) 2 + ( d y / d t ) 2 + ( d z / d t ) 2 = ∣ P ′ ( t ) ∣ 2 T = d P d s = d P d t ⋅ d t d s = P ′ ( t ) ∣ P ′ ( t ) ∣     即 T 是 单 位 切 矢 量 (ds/dt)^2=(dx/dt)^2+(dy/dt)^2+(dz/dt)^2=|P'(t)|^2\\ T=\frac{dP}{ds}=\frac{dP}{dt}·\frac{dt}{ds}=\frac{P'(t)}{|P'(t)|}\ \ \ 即T是单位切矢量 (ds/dt)2=(dx/dt)2+(dy/dt)2+(dz/dt)2=P(t)2T=dsdP=dtdPdsdt=P(t)P(t)   T
在这里插入图片描述

3.曲率

切向量求导,求导以后还是一个向量,称为曲率,其几何意义是曲线的单位切向量对弧长的转动率,即刻画这一点的曲线的弯曲程度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Exwz0lee-1633408620655)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002132737689.png)]

k = ∣ T ′ ∣ = lim ⁡ Δ s → 0 ∣ Δ T Δ s ∣ = lim ⁡ Δ s → 0 ∣ T ( s + Δ s ) − T ( s ) Δ s ∣ = lim ⁡ Δ s → 0 ∣ Δ θ Δ s ∣ k=|T'|=\lim_{\Delta s\to0}|\frac{\Delta T}{\Delta s}|=\lim_{\Delta s\to0}|\frac{T(s+\Delta s)-T(s)}{\Delta s}|=\lim_{\Delta s\to 0}|\frac{\Delta \theta}{\Delta s}| k=T=Δs0limΔsΔT=Δs0limΔsT(s+Δs)T(s)=Δs0limΔsΔθ
曲率越大,表示曲线的弯曲程度越大

曲率k的倒数 ρ = 1 k \rho=\frac{1}{k} ρ=k1称为曲率半径

曲率半径越大,圆弧越平缓,弯曲程度越平滑

曲率半径越小,圆弧越陡,弯曲程度越陡

4.法矢量

法矢量是与切矢量垂直的向量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BD6P0gqH-1633408620658)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002140617449.png)]

N、B构成的平面称为法平面,N、T构成的平面称为密切平面,B、T构成的平面称为从切平面

T(切矢)、N(主法矢)和B(副法矢)构成了曲线上的活动坐标架,其中,B=T×N(叉乘)

5、挠率

空间曲线不但要弯曲,而且还要扭曲,即要离开它的密切平面。为了能刻画这一扭曲程度,等价于去研究密切平面的法矢量(即曲线的副法矢量)关于弧长的变化率

挠率* τ \tau τ* 的绝对值等于副法线方向(或密切平面法矢量)对于弧长的转动率:
∣ τ ∣ = lim ⁡ Δ s ∣ Δ θ Δ s ∣ |\tau|=\lim_{\Delta s}|\frac{\Delta \theta}{\Delta s}| τ=ΔslimΔsΔθ

6、插值

自由曲线和自由曲面一般通过少数分散的点生成,这些点叫做“型值点”、“样本点”或“控制点”

给定一组有序的数据点 P i ( i = 0 , 1 , 2 , . . . , n ) P_i(i=0,1,2,...,n) Pi(i=0,1,2,...,n),要求构造一条曲线顺序通过这些数据点,称为对这些数据点进行插值(interpolation),所构造的曲线称为插值曲线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hoz3h1B8-1633408620661)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002201729492.png)]

把曲线插值推广到曲面,类似地就有插值曲面

构造插值曲线曲面所采用的的数学方法称为曲线曲面插值法

(1)线性插值

​ 假设给定函数 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,近似代替,称为线性插值函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NG0CEocx-1633408620664)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002203727170.png)]

(2)抛物线插值

​ 已知三个点的坐标,要求构造一个抛物线函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KqfB0vW-1633408620666)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002204007163.png)]

φ ( x ) = a x 2 + b x + c \varphi(x)=ax^2+bx+c φ(x)=ax2+bx+c,但是该函数必须通过这些型值点或者样本点

7、拟合

构造一条曲线使之在某种意义下最接近给定的数据点(但未必通过这些点),所构造的曲线为拟合曲线

在计算数学中,逼近通常指用一些性质比较好的函数近似表示一些性质不好的函数。在计算机图形学中,逼近继承了这方面的含义,因此插值和拟合都可以视为逼近

对于逼近样条,连接控制点序列的折线通常被显示出来,以提醒设计者控制点的次序

一般将连接有一定次序控制点的直线序列称为控制多边形特征多边形

控制多边形的第一个顶点和最后一个顶点位于曲线上,多边形的第一条边和最后一条边表示了曲线在起点和终点的切矢量方向,其它顶点则用于定义曲线的导数、阶次和形状。曲线的形状趋近于控制多边形并位于多边形所构成的凸包内,改变控制多边形的顶点位置就会改变曲线的形状。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVVsSKwh-1633408620668)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002204939813.png)]

拟合曲线

Bezier曲线的直观交互性使得对设计对象的逼近达到了直接的几何化程度,使用起来非常方便,如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKRcC3Ze-1633408620670)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211003154950316.png)]

8、光顺

指曲线的拐点不能太多(有一、二阶导数等)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9A2Xn6OO-1633408620673)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211002205333100.png)]

在数学领域是指:凸曲线与凹曲线的连接点

对平面曲线而言,相对光顺的条件是:

​ a. 具有二阶几何连续性( G 2 G^2 G2)

​ b. 不存在多余拐点和奇异点(奇点)

​ c. 曲率变化较小

奇点:是一未定义的点,或当它在特别地情况下无法完序,以至于此点出现于异常的集合中。比如 f ( x ) = 1 x f(x)=\frac{1}{x} f(x)=x1中 有一奇点(0,0),因为在此处 x = 0 x=0 x=0无意义

6、Bezier曲线的定义

给定 n + 1 n+1 n+1个控制点 P i ( i = 0 , 1 , 2 , . . . . . n ) P_i(i=0,1,2,.....n) Pi(i=0,1,2,.....n),则 n n n B e z i e r Bezier Bezier曲线定义为:
p ( t ) = ∑ i = 0 n P i B i , n ( t ) , t ∈ [ 0 , 1 ]                                 ( 1 ) p(t)=\sum_{i=0}^nP_iB_{i,n}(t),t\in[0,1] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1) p(t)=i=0nPiBi,n(t),t[0,1]                               (1)
式中, P i ( i = 0 , 1 , 2 , . . . , n ) P_i(i=0,1,2,...,n) Pi(i=0,1,2,...,n)是控制多边形的 n + 1 n+1 n+1个控制点

B i , n ( t ) B_{i,n}(t) Bi,n(t) B e r n s t e i n Bernstein Bernstein基函数,其表达式为 B i , n ( t ) = n ! i ! ( n − i ) ! t i ( 1 − t ) n − i = C n i t i ( 1 − t ) n − i , ( i = 0 , 1 , 2 , . . . , n )      ( 2 ) B_{i,n}(t)=\frac{n!}{i!(n-i)!}t^i(1-t)^{n-i}=C_n^it^i(1-t)^{n-i},(i=0,1,2,...,n) \ \ \ \ (2) Bi,n(t)=i!(ni)!n!ti(1t)ni=Cniti(1t)ni,(i=0,1,2,...,n)    (2)

从式 ( 1 ) (1) (1)可以看出, B e z i e r Bezier Bezier函数是控制点关于 B e r n s t e i n Bernstein Bernstein基函数的加权和。 B e z i e r Bezier Bezier曲线的次数为 n n n,需要 n + 1 n+1 n+1个顶点来定义。

在工程项目中,最常用的三次 B e z i e r Bezier Bezier曲线,其次是二次 B e z i e r Bezier Bezier曲线,高次 B e z i e r Bezier Bezier曲线一般很少使用。

一次 B e z i e r Bezier Bezier曲线

n = 1 n=1 n=1时, B e z i e r Bezier Bezier曲线的控制多边形有两个控制点 P 0 和 P 1 P_0和P_1 P0P1 B e z i e r Bezier Bezier曲线是一次多项式,称为一次 B e z i e r Bezier Bezier曲线( l i n e a r    b e z i e r    c u r v e linear\ \ bezier\ \ curve linear  bezier  curve)。
p ( t ) = ∑ i = 0 1 P i B i , 1 ( t ) = ( 1 − t ) P 0 + t P 1 p(t)=\sum_{i=0}^1P_iB_{i,1}(t)=(1-t)P_0+tP_1 p(t)=i=01PiBi,1(t)=(1t)P0+tP1

二次 B e z i e r Bezier Bezier曲线

n = 2 n=2 n=2时, B e z i e r Bezier Bezier曲线的控制多边形有三个控制点 P 0 、 P 1 P_0、P_1 P0P1 P 2 P_2 P2 B e z i e r Bezier Bezier曲线是二次多项式,称为二次 B e z i e r Bezier Bezier曲线( q u a d r a t i c    b e z i e r    c u r v e quadratic\ \ bezier\ \ curve quadratic  bezier  curve)。
p ( t ) = ∑ i = 0 2 P i B i , 2 ( t ) = ( 1 − t ) 2 P 0 + 2 t ( 1 − t ) P 1 + t 2 P 2 p(t)=\sum_{i=0}^2P_iB_{i,2}(t)=(1-t)^2P_0+2t(1-t)P_1+t^2P_2 p(t)=i=02PiBi,2(t)=(1t)2P0+2t(1t)P1+t2P2

三次 B e z i e r Bezier Bezier曲线

在这里插入图片描述

Bernstein基函数和Bezier曲线的性质
Bernstein基函数的性质:
  • 对称性: B i n ( t ) = B n − i n ( 1 − t ) B_i^n(t)=B_{n-i}^n(1-t) Bin(t)=Bnin(1t)
  • B i ( n ) ( t ) B_i^{(n)}(t) Bi(n)(t) t = i n t=\frac{i}{n} t=ni达到最大值 注:当 i = 0 i=0 i=0时,最大值在 t = 0 t=0 t=0处,当 i = n i=n i=n时,最大值在 t = 1 t=1 t=1处。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrj0InAA-1633596803102)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211007115321959.png)]
Bezier曲线的性质:

性质1.正权性

  • 正性(非负性)+权性

    • B i ( n ) ≥ 0 B_i^{(n)}≥0 Bi(n)0 ∀ t ∈ [ 0 , 1 ] \forall t\in[0,1] t[0,1]
    • ∑ i = 1 n B i ( n ) ( t ) = 1 , ∀ t ∈ [ 0 , 1 ] \sum_{i=1}^nB_i^{(n)}(t)=1,\forall t\in[0,1] i=1nBi(n)(t)=1,t[0,1] t t t时刻所有基函数的值相加为1

    由正性+权性(凸组合)可以推出Bezier曲线的凸包性
    样条曲线的凸包性是指其混合函数的凸包性。混合函数的凸包性定义如下: 若将混合函数解释为权重,对于参变量 t 的任意取值,所有权重的和始终为 1, 则曲线的混合函数具有凸包性。若样条曲线的混合函数具有凸包性,相对于不具备此特性的样条曲线,其局部控制更灵敏。

性质2.基性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GfXuv7vv-1633596803109)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211007120907509.png)]

性质3.递推公式

  • 基函数的递推公式

    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) Bin(t)=(1t)Bi(n1)(t)+tBi1(n1)(t),其中 B 0 0 ( t ) = 1 , B i n ( t ) = 0 若 i ∉ { 0 , . . . , n } B_0^0(t)=1,B_i^n(t)=0若i\notin\{0,...,n\} B00(t)=1,Bin(t)=0i/{0,...,n}

    由递推公式 C n m = C n − 1 m + C n − 1 m − 1 C_n^m=C^m_{n−1}+C^{m−1}_{n−1} Cnm=Cn1m+Cn1m1求得。公式推导详见组合数的性质

  • 高阶的基函数由2个低阶的基函数"升阶"得到

    • 利于保持一些良好的性质

性质4.端点插值

  • B 0 n ( 0 ) = 1 , B 1 n ( 0 ) = ⋯ = B n n ( 0 ) = 0 B_0^n(0)=1,B_1^n(0)=\dots=B_n^n(0)=0 B0n(0)=1,B1n(0)==Bnn(0)=0
  • B 0 n ( 1 ) = ⋯ = B n − 1 n ( 1 ) = 0 , B n n ( 1 ) = 1 B_0^n(1)=\dots=B_{n-1}^n(1)=0,B_n^n(1)=1 B0n(1)==Bn1n(1)=0,Bnn(1)=1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sil7tb5U-1633596803113)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211007150620213.png)]

  • B e z i e r Bezier Bezier曲线经过首末两个控制顶点 p 0 , p n p_0,p_n p0,pn

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0UhHIlxw-1633596803116)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211007150715270.png)]

性质5.导数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DCRxpqJH-1633596803118)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211007150825938.png)]

B e z i e r 曲 线 的 端 点 性 质 Bezier曲线的端点性质 Bezier线

  • 端点插值: f ( 0 ) = p 0 , f ( 1 ) = p 3 f(0)=p_0,f(1)=p_3 f(0)=p0,f(1)=p3

  • 端点的切线方向与边相同: f ′ ( 0 ) = n [ p 1 − p 0 ] , f ′ ( 1 ) = n [ p n − p n − 1 ] f'(0)=n[p_1-p_0],f'(1)=n[p_n-p_{n-1}] f(0)=n[p1p0],f(1)=n[pnpn1],其中n为曲线阶数

  • 端点的2阶(k)切线与3点(k+1)相关:

    f ′ ′ ( 0 ) = n ( n − 1 ) [ p 2 − 2 p 1 + p 0 ] = 2 n ( n − 1 ) [ p 2 + p 0 2 − p 1 ] f''(0)=n(n-1)[p_2-2p_1+p_0]=2n(n-1)[\frac{p_2+p_0}{2}-p_1] f(0)=n(n1)[p22p1+p0]=2n(n1)[2p2+p0p1]

    f ′ ′ ( 1 ) = n ( n − 1 ) [ p n − 2 p n − 1 + p n − 2 ] = 2 n ( n − 1 ) [ p n + p n − 2 2 − p n − 1 ] f''(1)=n(n-1)[p_n-2p_{n-1}+p_{n-2}]=2n(n-1)[\frac{p_{n}+p_{n-2}}{2}-p_{n-1}] f(1)=n(n1)[pn2pn1+pn2]=2n(n1)[2pn+pn2pn1]

性质6.升阶

升阶:控制顶点变多,但是 B e z i e r Bezier Bezier曲线不变

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KjvOdqYk-1633596803121)(C:\Users\MyPC\AppData\Roaming\Typora\typora-user-images\image-20211007163052477.png)]

7、德卡斯特里奥递推算法

在这里插入图片描述
三次 B e z i e r Bezier Bezier曲线有:
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/117237?site
推荐阅读
相关标签
  

闽ICP备14008679号