posts - 0,  comments - 0,  trackbacks - 0
Bezier曲线和曲面

1、试述Bernstein多项式的定义与Bezier曲线的定义。

解:

是n+1个空间的点,以n次Bernstein多项式

i = 0, i,...n
为调配基函数的曲线段。

           (4.2.1)
叫做以 为控制点的n次Bezier曲线。控制点bi也叫Bezier点,控制多边形也叫Bezier多边形。

2、写出Bernstein多项式的主要性质。

解:Bernstein多项式有如下性质:
(i)单位分解:
(ii)非负性: , 对
(iii) 对称性:
(iv) 递推关系:
(v)导函数: (i = 0,...,n)
(vi) 最大值: 处达到最大值

3、证明Bernstein多项式的最大值性质。

证明:

利用求导的结果,令


即nt=i,解得t=i/n.
因为 在[0,1]中连续,一定达到最大值, , ,从而
在i/n处达到最大值。

4、叙述并证明Bezier曲线的递推关系

答:Bezier曲线有递推关系
    


     m =1,2,...,n-1
证:因为:
    

根据Bernstein多项式递推关系
    
得到
   

注意 ,有
    
    

得证前式

5、仿照计算多项式的简单算法给出Bezier曲线的简单算法程序。

解:float hornbez(degree,coeff,t)
int degree;
float coff[];
float t;
{int i,n;
float fact,t1,aux;
t1=1.0-t;fact=1.0;n=1;
aux=coeff[0]*t1;
for(i=1;i<degree;i++)
{
face=fact*t;
n=n*(degree-i+1)/i;
aux=(aux+fact*n*coeff[i])*t1;
}
aux=aux+fact*t*codff[degree];
return aux;
}

6、给出B样条曲线算法程序。

解:float deboor(degree,coeff,knot,u,i)
float coeff[],knot[];
float u;
int degree,i;
{
int k,j;
float t1,t2;
float coeffa[30];
for(j=i-degree+1;j<=i+1;j++)
coeffa[j]=coeff[j-i+degree-1];
for(k=1;i<=degree;k++)
forj=i+1;j>=i-degree+k+1;j--)
{
t1=(knot[j+degree-k]-u)/(knot[j+degree-k]-knot[j-1]);
t2=1.0-t1;
coeffa[j]=t1*coeffa[j-1]+t2*coeffa[j];
}
return (coeffa[i+1]);
}

7、写出Bezier曲线的Casteljau算法程序。

解:float decas(degree,codff,t)
float coeff[];
float t;
int degree;
{
int r,i;
float t1;
float codffa[10];
t1=1.0-t;
for(i=0;i<=degree;i++)
coeffa[i]=coeff[i];
for(r=1;r<degree;r++)
for(i=0;i<=degree-r;i++)
{
coeffa[i]=t1*coeffa[i]+t*coeffa[i+1];
}
return (coeffa[0]);
}

8、为什么要引进NURBS 曲线,它有什么优点?

答:B样条曲线(面)包括其特例的Bezier曲线(面)都不能精确表示除抛物线(面)以外的二次曲线(面),而只能给出其近似表示。近似表示将带来处理上的麻烦,使本来简单的问题复杂化,还带来原来不存在的设计误差问题。解决这个问题的途径就是改造现有的B样条方法,在保留它描述自由型曲线曲面强大能力的同时,扩充其统一表示二次曲线与曲面的能力,这个方法就是有理样条方法。人们习惯称之为非均匀有理B样条(Nonuniform Rational B-Spline)方法,简称NURBS方法。有理参数多项式还有一个优点就是它具有几何和透视投影变换不变性。

9、试述NURBS 曲线的定义。

答:

NURBS曲线是一分段的有理参数多项式函数,表达式为
     (4.27)
其中,Pk为控制顶点。参数 是控制点的权因子, 值越大, 曲线越靠近控制点Pk。

10、试述Bezier曲面的定义

Bezier曲面的数学描述由 Bezier基函数作笛卡儿积而得:
     (4-17)
其中, (i = 0,1,...,m;j = 0,1,...m)是(m+1)×(n+1)个控制顶点的位置矢量。所有的控制顶点构成的空间的一张网格称为控制网格或Bezier网格。

是Bernstein基函数,其定义如下:

11、完成曲线生成演示的软件包。

答:参见课件演示。

12、完成曲面生成演示的软件包。

答:参见课件演示。


posted on 2007-02-05 20:57 亮子 阅读(2188) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理


<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(1)

文章档案

搜索

  •  

最新评论