文档详情

ch曲线曲面绘制方法.ppt

发布:2016-10-31约2.32万字共186页下载文档
文本预览下载声明
* 角点位置 1.4.2 Bézier曲面 (1)双线性Bezier曲面:当m=n=1时, (2)双二次Bezier曲面:当m=n=2时, 其边界曲线及参数坐标曲线均为抛物线。 1.4.2 Bézier曲面 3.重要的Bézier曲面 * (3)双三次 Bézier曲面:当m=n=3时,    该曲面的4条边界线都是三次Bezier曲线,可通过控制内部的4个控制顶点P11, P12, P21, P22来控制曲面内部的形态。 1.4.2 Bézier曲面 * 4. Bézier曲面的拼接 已知两张双三次Bézier曲面片P1(u,w)=[U][M][Pz1][M]’[w]’ P2(u,w)=[U][M][Pz2][M]’[w]’,由控制顶点Pij和Qij定义。 拼接时满足条件如下: C0连续要求公共边重叠,即 P1(1,w)=P2(0,w) C1连续要求P1在u=1和P2在u=0处的 切矢必须相同,即为两曲面在公共 边界处的法矢必须连续,表达式为: 1.4.2 Bézier曲面 * 5.绘制Bezier曲面 Casteljau算法是一种运用递归方法求得Bezier曲线上点的算法,可以求出任意次Bezier曲线上的点。根据曲面理论,曲面是由曲线构成的,因而可以把Casteljau算法运用来绘制Bezier曲面。 让参数w从0到1变化,可绘出u向的一组m次Bezier曲线,让参数u从0到1变化,可绘出w向的一组n次Bezier曲线,由这些m次Bezier曲线和n次Bezier曲线纵横交错可构成m×n次Bezier曲面 1.4.2 Bézier曲面 * 绘制Bezier曲面 voidBezierSurface(m,n,nCurves,pX,pY,pZ) /*Input:m,n:degreeofsurface. nCurves:numberofpointstobegenerated. pX:xcoordinatesofcontrolpolygon. pY:ycoordinatesofcontrolpolygon. pZ:zcoordinatesofcontrolpolygon.*/ Int m,n,nCurves; floatpX[m+1][n+1],pY[m+1][n+1],pZ[m+1][n+1]; { float tpX1[m+1],tpX2[n+1],tpY1[m+1],tpY2[n+1],tpZ1[m+1],tpZ2[n+1];                              * 绘制Bezier曲面 int k;  floatu,w,delu,delw;  /*draw bezier curve at the direction of u */   delw=1.0/(float)nCurves;  w=0.0;  for(k=0;k=nCurves;k++)  {     对于给定的w,利用Casteljau算法求出u向m次Bezier曲线的控制顶点x分量,存于数组tpX1;    对于给定的w,利用Casteljau算法求出u向m次Bezier曲线的控制顶点y分量,存于数组tpY1;     对于给定的w,利用Casteljau算法求出u向m次Bezier曲线的控制顶点z分量,存于数组tpZ1;     利用Casteljau算法绘制u向m次Bezier曲线;    w=w+delw;  }     * delu=1.0/(float)nCurves;  u=0.0;   for(k=0;k=nCurves;k++)  {  /*draw bezier curve at the direction of w*/   对于给定的u,利用Casteljau算法求出w向n次Bezier曲线的控制顶点x分量,存于数组tpX2;    对于给定的u,利用Casteljau算法求出w向n次Bezier曲线的控制顶点y分量,存于数组tpY2;          对于给定的u,利用Casteljau算法求出w向n次Bezier曲线的控制顶点z分量,存于数组tpZ2;     利用Casteljau算法绘制w向n次Bezier曲线;    u=u+delu;  } }       * Bezier曲面形成过程: 1.4.2 Bézier曲面 * 1.4.2 Bézier曲面 * 1.4.2 Bézier曲面 * 1.4.2 Bézier曲面 * 1.4.1 参数曲面知识 1.4.2 Bézier曲面 1.4.3 B样条曲面 1.4.4 NURBS曲面 1.4.5 孔斯(Coons)曲面 1.4 常用的参数曲面 * 1.B样条曲面定义: B样条曲面
显示全部
相似文档