B样条曲线曲面
1.B样条曲线
B样条曲线(B-spline curve)是一种在计算机图形学和计算几何中广泛使用的参数曲线。它是贝塞尔曲线(Bezier curve)的一种推广,提供了更好的局部控制能力。B样条曲线由一组控制点(也称为控制顶点)和一组基函数(称为B样条基函数)定义。
1.1.B样条曲线的定义
给定一组 ( n + 1 ) 个控制点 ( P i ) 和一组节点( k n o t s ) ( U = { u 0 , u 1 , . . . , u m } ) , 其中 ( m = n + k + 1 ) , ( k ) 是 B 样条的次数, B 样条曲线 ( C ( u ) ) 可以定义为: 给定一组 (n+1) 个控制点 (P_i) 和一组节点(knots) (U = \{u_0, u_1, ..., u_m\}) ,\\ 其中 (m = n + k + 1) , (k) 是B样条的次数,B样条曲线 (C(u)) 可以定义为: 给定一组(n+1)个控制点(Pi)和一组节点(knots)(U={u0,u1,...,um}),其中(m=n+k+1),(k)是B样条的次数,B样条曲线(C(u))可以定义为:
C ( u ) = ∑ i = 0 n N i , k ( u ) P i C(u) = \sum_{i=0}^{n} N_{i,k}(u) P_i C(u)=i=0∑nNi,k(u)Pi
其中 ( N i , k ( u ) ) 是第 ( i ) 个 ( k ) 次 B 样条基函数,定义如下: 其中 (N_{i,k}(u)) 是第 (i) 个 (k) 次B样条基函数,定义如下: 其中(Ni,k(u))是第(i)个(k)次B样条基函数,定义如下:
N i , 0 ( u ) = { 1 if u i ≤ u < u i + 1 0 otherwise N_{i,0}(u) = \begin{cases} 1 & \text{if } u_i \leq u < u_{i+1} \\ 0 & \text{otherwise} \end{cases} Ni,0(u)={10if ui≤u<ui+1otherwise
N i , k ( u ) = u − u i u i + k − u i N i , k − 1 ( u ) + u i + k + 1 − u u i + k + 1 − u i + 1 N i + 1 , k − 1 ( u ) 约定 0 / 0 = 0 ; N_{i,k}(u) = \frac{u - u_i}{u_{i+k} - u_i} N_{i,k-1}(u) + \frac{u_{i+k+1} - u}{u_{i+k+1} - u_{i+1}} N_{i+1,k-1}(u)\\ 约定0/0=0; Ni,k(u)=ui+k−uiu−uiNi,k−1(u)+ui+k+1−ui+1ui+k+1−uNi+1,k−1(u)约定0/0=0;
其中 N i , k ( u ) 具备如下性质: 只在区间 [ t i , t i + k + 1 ] 上存在非 0 值。在其他区间必然为 0 。 在划分 T = [ t 0 , t 1 , . . . ] 时,若允许相邻 t 值相同,则可能出现递推计算分子,分母皆为 0 情况,此时认为 0 / 0 = 0 。 其中N_{i,k}(u)具备如下性质:\\ 只在区间[t_{i}, t_{i+k+1}]上存在非0值。在其他区间必然为0。\\ 在划分T=[t_0,t_{1},...]时,若允许相邻t值相同,则可能出现递推计算分子,分母皆为0情况,此时认为0/0=0。 其中Ni,k(u)具备如下性质:只在区间[ti,ti+k+1]上存在非0值。在其他区间必然为0。在划分T=[t0,t1,...]时,若允许相邻t值相同,则可能出现递推计算分子,分母皆为0情况,此时认为0/0=0。
1.1.1.基函数性质
B样条基函数(B-spline basis functions)是计算机图形学和数值分析中用以构造样条曲线和曲面的一种重要工具。它们具有以下性质:
-
非负性 :
所有的 B 样条基函数在其定义域内都是非负的,即对于所有的 t 和所有的 i , B i , n ( t ) ≥ 0 。 所有的B样条基函数在其定义域内都是非负的,即对于所有的 t 和所有的 i,B_{i,n}(t) \geq 0。 所有的B样条基函数在其定义域内都是非负的,即对于所有的t和所有的i,Bi,n(t)≥0。 -
局部支集性 :
一个第 k 阶( k 次)的 B 样条基函数 B i , k ( t ) 只在区间 [ t i , t i + k + 1 ) 上有非零值, 推伸一下,给定一个 t 所在的区间,至多只有 k + 1 个基函数在此区间不为 0 , 这样,此区间内曲线至多只会受到 k + 1 个控制点的影响。 剔除前 k 个区间,后 k 个区间,剩余的每个区间内必然存在 k + 1 个基函数不为 0 , 相应的,这样区间内曲线由 k + 1 个对应的控制点所决定。 B 样条曲线一般只考虑这样的区间范围。 一个第 k 阶(k 次)的B样条基函数 B_{i,k}(t) 只在区间 [t_{i}, t_{i+k+1}) 上有非零值,\\ 推伸一下,给定一个t所在的区间,至多只有k+1个基函数在此区间不为0,\\ 这样,此区间内曲线至多只会受到k+1个控制点的影响。\\ 剔除前k个区间,后k个区间,剩余的每个区间内必然存在k+1个基函数不为0,\\ 相应的,这样区间内曲线由k+1个对应的控制点所决定。\\ B样条曲线一般只考虑这样的区间范围。 一个第k阶(k次)的B样条基函数Bi,k(t)只在区间[ti,ti+k+1)上有非零值,推伸一下,给定一个t所在的区间,至多只有k+1个基函数在此区间不为0,这样,此区间内曲线至多只会受到k+1个控制点的影响。剔除前k个区间,后k个区间,剩余的每个区间内必然存在k+1个基函数不为0,相应的,这样区间内曲线由k+1个对应的控制点所决定。B样条曲线一般只考虑这样的区间范围。 -
规范性 :
在任何一个区间 [ t i , t i + 1 ) 上,所有的非零 B 样条基函数的和为 1 , 即 ∑ j = i − n i B j , n ( t ) = 1 。这个性质保证了曲线或曲面的平滑过渡。 在任何一个区间 [t_{i}, t_{i+1}) 上,所有的非零B样条基函数的和为1,\\ 即 \sum_{j=i-n}^{i} B_{j,n}(t) = 1。这个性质保证了曲线或曲面的平滑过渡。 在任何一个区间[ti,ti+1)上,所有的非零B样条基函数的和为1,即j=i−n∑iBj,n(t)=1。这个性质保证了曲线或曲面的平滑过渡。 -
递推关系 :B样条基函数可以通过De Boor-Cox递推公式来定义,即:
B i , 0 ( t ) = { 1 if t i ≤ t < t i + 1 0 otherwise B_{i,0}(t) = \begin{cases} 1 & \text{if } t_i \leq t < t_{i+1} \\ 0 & \text{otherwise} \end{cases} Bi,0(t)={10if ti≤t<ti+1otherwise和
B i , n ( t ) = t − t i t i + n − t i B i , n − 1 ( t ) + t i + n + 1 − t t i + n + 1 − t i + 1 B i + 1 , n − 1 ( t ) B_{i,n}(t) = \frac{t - t_i}{t_{i+n} - t_i} B_{i,n-1}(t) + \frac{t_{i+n+1} - t}{t_{i+n+1} - t_{i+1}} B_{i+1,n-1}(t) Bi,n(t)=ti+n−tit−tiBi,n−1(t)+ti+n+1−ti+1ti+n+1−tBi+1,n−1(t)
其中 n ≥ 1 。这个递推关系是构造 B 样条曲线和曲面的基础。 其中 n \geq 1。这个递推关系是构造B样条曲线和曲面的基础。 其中n≥1。这个递推关系是构造B样条曲线和曲面的基础。 -
连续性:B样条基函数的连续性取决于它的阶数和节点向量。通过选择合适的节点向量,可以控制曲线的光滑程度。
-
凸包性:B样条曲线或曲面总是位于其控制点的凸包内。这是由于规范性和非负性导致的。
-
变差缩减性:B样条曲线在任意直线上的交点数量不超过其控制点的交点数量,这保证了曲线的平滑性。
这些性质使得B样条基函数在设计和构造光滑曲线和曲面时非常有用,尤其是在计算机辅助设计(CAD)和计算机辅助制造(CAM)领域。B样条曲线和曲面的构造可以通过控制点、节点向量和基函数的组合来完成,从而实现对曲线和曲面形状的精确控制。
1.1.2.B样条曲线的特性
1.局部控制:改变一个控制点只会影响曲线的局部,不会影响整个曲线。
2.平滑性:B样条曲线具有很好的平滑性,尤其是当节点的分布均匀时。
3.灵活性:通过改变节点的分布和控制点的位置,可以灵活地调整曲线的形状。
4.闭合性:通过适当的节点设置,可以使曲线闭合。
1.1.2.节点的类型
-
均匀B样条:节点值均匀分布,如 (u_i = i) 。
-
非均匀B样条(NURBS):节点值非均匀分布,提供了更大的灵活性和精确的控制。
B样条曲线是计算机辅助设计(CAD)和计算机图形学中的重要工具,广泛应用于曲线和曲面的建模。
1.2.二次B样条曲线
二次B样条曲线(Quadratic B-spline Curve)是计算机图形学和计算机辅助设计(CAD)中常用的一种曲线,它可以通过控制点来生成平滑的曲线。二次B样条曲线由一组二次多项式片段组成,每个片段都依赖于三个控制点。
定义
二次B样条曲线可以通过以下方式定义:
给定一组控制点 ( P 0 , P 1 , ... , P n − 1 ) ,二次 B 样条曲线由以下参数方程表示: 给定一组控制点 ( P_0, P_1, \ldots, P_{n-1} ),二次B样条曲线由以下参数方程表示: 给定一组控制点(P0,P1,...,Pn−1),二次B样条曲线由以下参数方程表示:
C ( t ) = ∑ i = 0 n − 1 N i 2 ( t ) P i C(t) = \sum_{i=0}^{n-1} N_i^2(t) P_i C(t)=i=0∑n−1Ni2(t)Pi
其中, ( N i 2 ( t ) ) 是二次 B 样条基函数,通常定义为: 其中,( N_i^2(t) ) 是二次B样条基函数,通常定义为: 其中,(Ni2(t))是二次B样条基函数,通常定义为:
N i 2 ( t ) = 1 2 ( 1 − t ) 2 δ i , 0 + t ( 1 − t ) δ i , 1 + 1 2 t 2 δ i , 2 N_i^2(t) = \frac{1}{2} (1 - t)^2 \delta_{i,0} + t(1 - t) \delta_{i,1} + \frac{1}{2} t^2 \delta_{i,2} Ni2(t)=21(1−t)2δi,0+t(1−t)δi,1+21t2δi,2
这里, ( δ i , j ) 是 K r o n e c k e r d e l t a 函数,当 ( i = j ) 时为 1 ,否则为 0 。 ( t ) 是参数,其范围通常为 ( [ 0 , 1 ] ) 。 这里,( \delta_{i,j} ) 是Kronecker delta函数,当 ( i = j ) 时为1,否则为0。( t ) 是参数,其范围通常为 ( [0, 1] )。 这里,(δi,j)是Kroneckerdelta函数,当(i=j)时为1,否则为0。(t)是参数,其范围通常为([0,1])。
特性
- 局部控制:改变一个控制点只会影响该点相邻的曲线段,不会影响整个曲线。
- 平滑性:二次B样条曲线是连续且曲率连续的,除非控制点共线。
- 凸包性质:曲线总是位于其控制点的凸包内。
计算方法
计算二次B样条曲线的控制点位置通常涉及递归定义的B样条基函数。对于二次B样条,基函数可以通过递归公式计算:
N i 0 ( t ) = { 1 if t i ≤ t < t i + 1 0 otherwise N_i^0(t) = \begin{cases} 1 & \text{if } t_i \leq t < t_{i+1} \\ 0 & \text{otherwise} \end{cases} Ni0(t)={10if ti≤t<ti+1otherwise
N i k ( t ) = t − t i t i + k − t i N i k − 1 ( t ) + t i + k + 1 − t t i + k + 1 − t i + 1 N i + 1 k − 1 ( t ) N_i^k(t) = \frac{t - t_i}{t_{i+k} - t_i} N_i^{k-1}(t) + \frac{t_{i+k+1} - t}{t_{i+k+1} - t_{i+1}} N_{i+1}^{k-1}(t) Nik(t)=ti+k−tit−tiNik−1(t)+ti+k+1−ti+1ti+k+1−tNi+1k−1(t)
其中, ( k ) 是 B 样条的次数(对于二次 B 样条, ( k = 2 ) ), ( t i ) 是节点值,通常均匀分布。 其中,( k ) 是B样条的次数(对于二次B样条,( k = 2 )),( t_i ) 是节点值,通常均匀分布。 其中,(k)是B样条的次数(对于二次B样条,(k=2)),(ti)是节点值,通常均匀分布。
实际例子
二次B样条曲线(Quadratic B-spline curve)是一种常用的参数曲线,它通过一系列控制点来定义,并且具有局部控制特性,即改变一个控制点只会影响曲线的一小部分。下面我将给出一个实际的二次B样条曲线的例子,并解释其构造过程。
例子:
假设我们有三个控制点 ( P 0 ( 0 , 0 ) ) , ( P 1 ( 1 , 1 ) ) , ( P 2 ( 2 , 0 ) ) ,我们想要构造一条通过这三个控制点的二次 B 样条曲线。 假设我们有三个控制点 (P_0(0,0)), (P_1(1,1)), (P_2(2,0)),我们想要构造一条通过这三个控制点的二次B样条曲线。 假设我们有三个控制点(P0(0,0)),(P1(1,1)),(P2(2,0)),我们想要构造一条通过这三个控制点的二次B样条曲线。
构造步骤:
-
确定节点向量:对于二次B样条曲线,节点向量的长度通常为 (n + 4),其中 (n) 是控制点的数量。在这个例子中,(n = 2),因此节点向量为 (U = [0, 0, 0, 1, 2, 3, 3, 3])。
-
计算基函数 :
二次 B 样条曲线的基函数 ( N i , 2 ( t ) ) 可以通过递归公式计算: 二次B样条曲线的基函数 (N_{i,2}(t)) 可以通过递归公式计算: 二次B样条曲线的基函数(Ni,2(t))可以通过递归公式计算:- ( N i , 0 ( t ) = 1 ) i f ( t i ≤ t < t i + 1 ) (N_{i,0}(t) = 1) if (t_i \leq t < t_{i+1}) (Ni,0(t)=1)if(ti≤t<ti+1)
- ( N i , k ( t ) = ( t − t i ) N i , k − 1 ( t ) t i + k − 1 − t i + ( t i + k − t ) N i + 1 , k − 1 ( t ) t i + k − t i + 1 ) (N_{i,k}(t) = \frac{(t - t_i)N_{i,k-1}(t)}{t_{i+k-1} - t_i} + \frac{(t_{i+k} - t)N_{i+1,k-1}(t)}{t_{i+k} - t_{i+1}}) (Ni,k(t)=ti+k−1−ti(t−ti)Ni,k−1(t)+ti+k−ti+1(ti+k−t)Ni+1,k−1(t))
对于上述节点向量,计算 ( N 0 , 2 ( t ) ) , ( N 1 , 2 ( t ) ) , ( N 2 , 2 ( t ) ) 的值。 对于上述节点向量,计算 (N_{0,2}(t)), (N_{1,2}(t)), (N_{2,2}(t)) 的值。 对于上述节点向量,计算(N0,2(t)),(N1,2(t)),(N2,2(t))的值。
-
构建曲线方程 :二次B样条曲线方程可以表示为:
C ( t ) = ∑ i = 0 n − 1 N i , 2 ( t ) P i for t ∈ [ t 2 , t n + 1 ) C(t) = \sum_{i=0}^{n-1} N_{i,2}(t) P_i \quad \text{for } t \in [t_2, t_{n+1}) C(t)=i=0∑n−1Ni,2(t)Pifor t∈[t2,tn+1)将控制点和基函数的值代入上述方程中,可以得到具体的曲线方程。
示例计算:
以 (t = 1) 为例,计算相应的 (C(t)) 值:
-
计算基函数:
( N 0 , 2 ( 1 ) ) , ( N 1 , 2 ( 1 ) ) , ( N 2 , 2 ( 1 ) ) (N_{0,2}(1)), (N_{1,2}(1)), (N_{2,2}(1)) (N0,2(1)),(N1,2(1)),(N2,2(1)) -
使用曲线方程计算 (C(1)):
( C ( 1 ) = N 0 , 2 ( 1 ) P 0 + N 1 , 2 ( 1 ) P 1 + N 2 , 2 ( 1 ) P 2 ) (C(1) = N_{0,2}(1) P_0 + N_{1,2}(1) P_1 + N_{2,2}(1) P_2) (C(1)=N0,2(1)P0+N1,2(1)P1+N2,2(1)P2)通过这种方法,可以计算出曲线上任意点的坐标。
结果:
在这个例子中,曲线会平滑地连接这三个控制点,但不会完全通过它们,这是B样条曲线的一个特点。通过调整节点向量的分布或者增加更多的控制点,可以进一步调整曲线的形状和特征。
这个例子展示了如何使用二次B样条曲线来生成平滑的曲线形状,这在计算机图形学和工程设计中非常有用。
1.3.分类
B样条曲线(B-spline Curve)是一种在计算机图形学和计算机辅助设计(CAD)中广泛使用的参数曲线,它比贝塞尔曲线(Bezier Curve)具有更好的局部控制性和更灵活的形状控制。B样条曲线可以根据其控制点的重数、阶数和结点向量来分类。以下是B样条曲线的主要分类方式:
-
根据控制点的重数:
-
均匀B样条曲线(Uniform B-spline Curve):结点向量中的结点是等间隔分布的,即结点向量的差分是常数。这种曲线具有周期性,适用于周期性和对称性较强的形状设计。
一个2次5个控制点均匀B样条的节点矢量例子:
T = ( t 0 , t 1 , . . . , t 7 ) = ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ) ; T=(t_{0}, t_{1}, ..., t_{7})=(0,1,2,3,4,5,6,7); T=(t0,t1,...,t7)=(0,1,2,3,4,5,6,7); -
准均匀B样条曲线(Non-uniform B-spline Curve):
节点矢量的前k+1,后k+1重合。其余均匀分布。
一个2次5个控制点准均匀B样条的节点矢量例子:
T = ( t 0 , t 1 , . . . , t 7 ) = ( 0 , 0 , 0 , 1 , 2 , 3 , 3 , 3 ) ; T=(t_{0}, t_{1}, ..., t_{7})=(0,0,0,1,2,3,3,3); T=(t0,t1,...,t7)=(0,0,0,1,2,3,3,3); -
分段Bezier曲线
节点矢量前k+1,后k+1重合。其余重复度为k。且控制点数减去1需为次数的正整数倍。
一个2次5个控制点分段Bezier的节点矢量例子:
T = ( t 0 , t 1 , . . . , t 7 ) = ( 0 , 0 , 0 , 1 , 1 , 2 , 2 , 2 ) ; T=(t_{0}, t_{1}, ..., t_{7})=(0,0,0,1,1,2,2,2); T=(t0,t1,...,t7)=(0,0,0,1,1,2,2,2); -
非均匀B样条曲线
节点矢量非递减,两端节点重复度<=k+1,内节点重复度<=k,节点个数为:n+k+1。k为次数。n为最后一个控制点索引。
-
-
根据曲线的阶数:
- 线性B样条曲线(Linear B-spline Curve):阶数为1,相当于直线段的连接。
- 二次B样条曲线(Quadratic B-spline Curve):阶数为2,形成的曲线是二次曲线段。
- 三次B样条曲线(Cubic B-spline Curve):阶数为3,通常是最常用的B样条曲线,因为它能够形成平滑且易于控制的曲线。
- 高阶B样条曲线(Higher Order B-spline Curve):阶数大于3,可以形成更复杂和更高阶的曲线段。
-
根据结点向量的性质:
- 开曲线(Open Curve):结点向量在两端没有重复,曲线在端点处不与控制多边形的端点相切。
- 闭曲线(Closed Curve):结点向量在两端有重复,形成闭合的曲线,如环形或周期性曲线。
-
根据曲线的连续性:
- C0连续(C0 Continuity):曲线的连接点处至少是连接的。
- C1连续(C1 Continuity):曲线的连接点处切线连续。
- C2连续(C2 Continuity):曲线的连接点处曲率连续。
- 更高阶连续性(Higher Order Continuity):曲线的连接点处更高阶导数连续。
B样条曲线的这些分类方式使其在实际应用中非常灵活,可以根据设计需求选择合适的曲线类型。在CAD软件中,通常会提供工具来帮助用户根据需要设置B样条曲线的参数,以达到最佳的设计效果。
1.4.其他
1.当端节点的重复度为k+1时,k次B样条曲线有和k次Bezier曲线相同的端点几何性质。此时,如B样条曲线的定义域仅有一个非零节点区间,则所定义的该k次B样条曲线就是k次Bezier曲线。
2.高次B样条曲线更光滑,k次B样条可保证k-1阶的连续性,但曲线与特征多边形的逼近程度变差。次数越高,局部性越弱,曲线偏离控制多边形程度越大。工程中二次,三次B样条曲线已经能满足需求。
3.对指定控制点,指定节点矢量的B样条曲线,当向节点矢量中插入新的元素时,可以通过调整并新增一个控制点。来使得新控制点,新节点矢量下的曲线的几何性质和之前曲线维持一致。
2.B样条曲面
B样条曲面(B-spline Surface)是一种在计算机图形学和计算机辅助设计(CAD)中常用的曲面表示方法,它基于B样条曲线理论扩展而来。B样条曲面由一系列控制点(control points)和基函数(basis functions)定义,这些控制点通常排列在一个矩形的网格上,而基函数则决定了曲面如何由这些控制点生成。
基本概念
-
控制点(Control Points):控制点是一个矩阵,其中每一行对应一个U方向的曲线,每一列对应一个V方向的曲线。这些点决定了曲面的大致形状。
-
节点向量(Knot Vectors):在U和V方向上分别有一个节点向量,它们定义了B样条基函数的支撑区间。
-
基函数(Basis Functions):B样条曲面的基函数是由节点向量定义的,它们是分段多项式函数。基函数的阶数(degree)和节点向量的重复度(multiplicity)决定了曲线的平滑度。
数学表示
一个p×q阶的B样条曲面可以用以下公式表示:
S ( u , v ) = ∑ i = 0 n ∑ j = 0 m N i , p ( u ) N j , q ( v ) P i , j S(u, v) = \sum_{i=0}^{n} \sum_{j=0}^{m} N_{i,p}(u) N_{j,q}(v) P_{i,j} S(u,v)=i=0∑nj=0∑mNi,p(u)Nj,q(v)Pi,j
其中:
-
S ( u , v ) 是曲面上的点,由参数 u 和 v 决定。 S(u, v) 是曲面上的点,由参数u和v决定。 S(u,v)是曲面上的点,由参数u和v决定。
-
N i , p ( u ) 和 N j , q ( v ) 分别是 U 方向和 V 方向的 p 阶和 q 阶 B 样条基函数。 N_{i,p}(u) 和 N_{j,q}(v) 分别是U方向和V方向的p阶和q阶B样条基函数。 Ni,p(u)和Nj,q(v)分别是U方向和V方向的p阶和q阶B样条基函数。
-
P i , j 是控制点。 对 U 来说, T = [ u 0 , . . . , u n + p + 1 ] ; 对 V 来说, T = [ v 0 , . . . , v m + q + 1 ] ; 其中 S ( u , v ) 的 u 取值范围为: [ u p , u n + 1 ] ; 其中 S ( u , v ) 的 v 取值范围为 : [ v q , v m + 1 ] ; P_{i,j} 是控制点。\\ 对U来说,T=[u_{0},...,u_{n+p+1}];\\ 对V来说,T=[v_{0},...,v_{m+q+1}];\\ 其中S(u,v)的u取值范围为:[u_{p},u_{n+1}];\\ 其中S(u,v)的v取值范围为:[v_{q},v_{m+1}]; Pi,j是控制点。对U来说,T=[u0,...,un+p+1];对V来说,T=[v0,...,vm+q+1];其中S(u,v)的u取值范围为:[up,un+1];其中S(u,v)的v取值范围为:[vq,vm+1];
特点
- 局部控制:改变一个控制点通常只影响曲面的一小部分,这是由于B样条基函数的局部支撑性。
- 平滑性:B样条曲面通常比贝塞尔曲面更平滑,因为它们可以更容易地控制曲面的连续性。
- 灵活性:可以通过调整控制点和节点向量来改变曲面的形状。
应用
B样条曲面广泛应用于各种需要精确曲面表示的领域,如汽车设计、飞机设计、动画制作等。它们提供了一种灵活且精确的方式来设计和操作复杂的曲面形状。