优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

.NET505 基于B/S结构的题库管理系统C++

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

点。此外,由于NURBS方法增加了与控制顶点想对应的附加造型因子即权因子,使得在对曲线进行较小的修改时,不必改变其控制顶点,只需增大或减小权因子即可。如果要对曲线进行较大的修改,可同时对控制顶点和权因子进行修改,这就大大增强了曲线的造型能力。
NURBS能够比传统的网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的〖本文来自:计算机毕业网  〗行3D建模而专门建立的。在3D建模的内部空间用曲线和曲面来表现轮廓和外形。它们是用数学表达式构建的,NURBS数学表达式是一种复合体。NURBS继承了BEZIER方法的一切优点,克服了BEZIER方法存在的缺点,较成功的解决了造型曲面局部控制问题,又在参数连续性基础上解决了链接问题,从而使自由型曲线曲面形状的描述问题得到了较好解决。NURBS造型方式与网格、面片等方法相比,在复杂曲线曲面造型方面有较大的优越性,造型效率高、曲线曲面修改更容易。这使得NURBS建模方法能更好地控制物体表面曲线度, think58

[资料来源:http://think58.com]

Castelijau)也独立地研究出与Bezier类似的方法。1972年,德布尔(de Boor)给出了B样条的标准计算方法。1974年,美国通用汽车公司的戈登(Gorden)和里森费尔德(Riesenfeld)将B样条理论用于形状描述,提出了B样条曲线和曲面。1975年,美国锡拉丘兹(Syracuse)大学的佛斯普里尔(Versprill)提出了有理B样条方法。80年代后期皮格尔(Piegl)和蒂勒(Tiller)将有理B样条发展成非均匀有理B样条方法,并已成为当前自由曲线和曲面描述的最广为流行的技术。
曲线、曲面可以用显式、隐式和参数表示,由于参数表示的曲线、曲面具有几何不变性等优点,计算机图形学中通常用参数形式描述曲线、曲面.
显示、隐式和参数表示
曲线和曲面的表示方程有参数表示和非参数表示之分,非参数表示又分为显式表示和隐式表示。

think58

[资料来源:http://www.THINK58.com]

[资料来源:http://think58.com]


1. 与坐标轴相关;
2. 会出现斜率为无穷大的情形(如垂线);
3. 对于非平面曲线、曲面,难以用常系数的非参数化函数表示;
4. 不便于计算机编程。
    在几何造型系统中,曲线曲面方程通常表示成参数的形式,即曲线上任一点的坐标均表示成给定参数的函数。假定用t表示参数,平面曲线上任一点P可表示为:
P(t)=[x(t), y(t)];
    空间曲线上任一三维点P可表示为:
P(t)=[x(t), y(t), z(t)];
    最简单的参数曲线是直线段,端点为P1、P2的直线段参数方程可表示为:
P(t)=P1+(P2-P1)t t∈[0, 1];
    圆在计算机图形学中应用十分广泛,其在第一象限内的单位圆弧的非参数
其参数形式可表示为:

内容来自think58

[版权所有:http://think58.com]

[来源:http://www.think58.com]

   构造一条曲线使之在某种意义下最接近给定的数据点,称为对这些数据点进行逼近,所构造的曲线为逼近曲线。插值和逼近则统称为拟合。
2. 光顺(Firing)
    光顺通俗的含义是指曲线的拐点不能太多,曲线拐来拐去,就会不顺眼,对平面曲线而言,相对光顺的条件是:
    a. 具有二阶几何连续性(G2);
    b. 不存在多余拐点和奇异点;
    c. 曲率变化较小。
参数化
    过三点P0、P1和P2构造参数多项式插值抛物线可以有无数条,其原因是:参数在[0,1]区间的分割可以有无数种。因为P0、P1和P2可对应: [资料来源:www.THINK58.com]


续性
    设计一条复杂曲线时,常常通过多段曲线组合而成,这需要解决曲线段之间如何实现光滑连接的问题。
    曲线间连接的光滑度的度量有两种:一种是函数的可微性,把组合参数曲线构造成在连接处具有直到n阶连续导矢,即n阶连续可微,这类光滑度称之为Cn或n阶参数连续性。另一种称为几何连续性,组合曲线在连接处满足不同于Cn的某一组约束条件,称为具有n阶几何连续性,简记为Gn。曲线光滑度的两种度量方法并不矛盾,Cn连续包含在Gn连续之中。下面我们来讨论两条曲线的
   若要求在结合处达到G0连续或C0连续,即两曲线在结合处位置连续:
P(1)=Q(0)            (3.1.6)
   若要求在结合处达到G1连续,就是说两条曲线在结合处在满足G0连续的条件下,并有公共的切矢:

本文来自think58 [资料来源:http://www.THINK58.com]

[资料来源:http://think58.com]

(4)在t的有效区间中Ni,k≧0,且任一Ni,k均仅有唯一极大值,除k=1,2外Ni,k均为连续平滑曲线。

本文来自think58 [版权所有:http://think58.com]

[版权所有:http://think58.com]

B-spline曲面的性质是完全和B-spline曲线相同,除了曲面u方向的正规化基底函数Ni,k(u)及节点向量[X〖本文来自:计算机毕业网  〗]外,再加上v方向的基底数Mi,j( v)及节点向量[Y],曲面的控制点分布由一维的(n+1)变为二维的(n+1)×(m+1),而二维的控制点分布则必须满足拓扑上的矩形分布(Topologically
GLfloat   ctrlPoint[12][3]={{0.21,0.5152,-6},{0.225,0.5152,-4},{0.235,0.5152,-2}, {0.235,0.5152,-1},{0.235,0.5152,1},{0,0.5152,1.7},  
  {0.235,0.5152,1},{-0.235,0.5152,-2},{-0.235,0.5152,-4},  
  {0.235,0.5152,-5},{-0.22,0.5152,-7},{-0.21,0.5152,-8}};  think58

[版权所有:http://think58.com]

  GLfloat   color[12][3]={{1.0,0.0,0.0},{1.0,1.0,0.0},{0.0,1.0,0.0},  
  {-1.0,1.0,0.0},{-1.0,0.0,0.0},{-1.0,-1.0,0.0},  
  {0.0,-1.0,0.0},{1.0,-1.0,0.0},{1.0,0.0,0.0},  
  {1.0,1.0,0.0},{0.0,1.0,0.0},{1.0,1.0,0.0}};   copyright think58

[来源:http://www.think58.com]

  GLfloat   knots[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,20};  
  //生成新的NURBS对象 
  GLUnurbsObj*   nurbs = gluNewNurbsRenderer();  
  //设置NURBS对象的属性 
  gluNurbsProperty(nurbs,GLU_SAMPLING_TOLERANCE,15.0);  

think58

[资料来源:http://think58.com]

[资料来源:http://www.THINK58.com]

  glLineWidth(2.0);         //设置线条粗细 
  gluBeginCurve(nurbs);//开始绘制曲线 
  gluNurbsCurve(nurbs,15,knots,3,&ctrlPoint[0][0],5,GL_MAP1_VERTEX_3);  
  gluNurbsCurve(nurbs,15,knots,3,&color[0][0],3,GL_MAP1_VERTEX_4);  
  gluEndCurve(nurbs);     //曲线绘制结束  think58.com [资料来源:www.THINK58.com]

  gluDeleteNurbsRenderer(nurbs);

[资料来源:www.THINK58.com]

曲面的绘制
GLUnurbsObj *theNurb1;
  //GLUnurbsObj *theNurb2;

copyright think58 [资料来源:www.THINK58.com]

[版权所有:http://think58.com]

  GLfloat ctrlpoints[5][5][3] = {{{-3,0.5,0},{-1,1.5,0},{-2,2,0},{1,-1,0},{-5,0,0}},
  {{-3,0.5,-1},{-1,1.5,-1},{-2,2,-1},{1,-1,-1},{-5,0,-1}},
  {{-3,0.5,-2},{-1,1.5,-2},{-2,2,-2},{1,-1,-2},{-5,0,-2}},
  {{-3,0.5,-3},{-1,1.5,-3},{-2,2,-3},{1,-1,-3},{-5,0,-3}},
  {{-3,0.5,-4},{-1,1.5,-4},{-2,2,-4},{1,-1,-4},{-5,0,-4}}};//控制点

think58好,好think58 [来源:http://www.think58.com]

[版权所有:http://think58.com]


  theNurb1 = gluNewNurbsRenderer();//创建NURBS对象theNurb1
  gluNurbsProperty(theNurb1,GLU_SAMPLING_TOLERANCE,25.0);
  gluNurbsProperty(theNurb1,GLU_DISPLAY_MODE,GLU_OUTLINE_POLYGON); 本文来自think58

[资料来源:THINK58.com]

  //theNurb2 = gluNewNurbsRenderer();//创建NURBS对象theNurb2
  //gluNurbsProperty(theNurb2,GLU_SAMPLING_TOLERANCE,25.0);
  //gluNurbsProperty(theNurb2,GLU_DISPLAY_MODE,GLU_FILL);

[资料来源:www.THINK58.com]

  GLfloat knots[10] = {0.0,0.0,0.0,0.0,0.0,1.〖本文来自:计算机毕业网  〗0,1.0,1.0,1.0,1.0}; think58.com

[来源:http://think58.com]

  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  glRotatef(50.0,1.0,1.0,0.0); 本文来自think58

[资料来源:www.THINK58.com]

  /*第一个曲面*/
  glPushMatrix();
  gluBeginSurface(theNurb1);

think58

[来源:http://think58.com]

[资料来源:THINK58.com]

  /*定义曲面形状*/
  gluNurbsSurface(theNurb1,10,knots,10,knots,5*3,3,&ctrlpoints[0][0][0], 本文来自think58 [资料来源:http://www.THINK58.com]