- 1、本文档共96页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章曲线和曲面资料
第k+1段曲线,由Pk+1,Pk+2,Pk+3,Pk+4确定,该曲线的起点坐标和起点处一阶导数、二阶导数分别为: 综上有:Pk,3(1)=Pk+1,3(0); Pk,3’(1)=Pk+1,3’(0); Pk,3’’(1)=Pk+1,3’’(0); 因此:三次B样条曲线具有二阶参数连续性。 4.5.4 三次B样条曲线的算法 为了使三次B样条曲线以特征多边形的P0点为始点,且与P0P1相切;以Pn为终点,且与Pn-1Pn相切,则构造该曲线的方法为: (1)增加点P-1,且P-1=2P0-P1 (2)增加点Pn+1,且Pn+1=2Pn-Pn-1 在具体实现时,采用数组存放特征多边形的顶点坐标,数组下标从0开始,因此将P-1存放在下标为0的数组元素内,将Pi存放在下标为i+1的数组元素内。增加两个点后,n个顶点确定的三次B样条曲线一共有n-1段。 三次B样条曲线算法 * * * * * 4.4.5 Bezier曲线几何作图法 上节我们给出了直接利用Bezier曲线的定义实现曲线的拟合。但多项式计算的快慢会直接影响绘制相应曲线的速度,为此,我们给出采用贝齐尔曲线的几何作图法,以避免多项式的计算。下面先将Bezier多项式作一些变换: 若记Pk,l(t)表示由Pk, Pk+1,...,Pl作为控制点的Bezier曲线,那么上式可写为: P0,n(t)=(1-t)P0,n-1(t)+tP1,n(t) 上式表明,要计算由P0, P1,...,Pn这n+1个点为控制点的Bezier曲线在t时的值,可以先计算由P0, P1,...,Pn-1为控制点的Bezier曲线在t时的值P0,n-1(t)及由P1, P2,...,Pn为控制点的Bezier曲线在t时的值P1,n(t),然后在这两个值所代表的点之间连一条直线段。在直线段上取一点,使它和P0,n-1(t)这一点的距离与该直线段长度之比为t,该点对应的就是P(t)。 geometry(int m, p, pt, dt) /*P存放m+1个给定控制点的坐标,pt存放结果,dt是t的增量*/ { int i,j,k,l,n; float *r,*q,t; l=0; for(t=0;t=1;t=t+dt) { for(i=0;i=m;i++) r[i]=p[i]; n=m; while(n0) { for(k=0;kn;k++) q[k]=r[k]+t*(r[k+1]-r[k]); n=n-1; for(j=0;j=n; j++) r[j]=q[j]; } pt[l]=r[0]; l=l+1; } } Bezier曲线几何作图法的C语言描述: 已知Bezier 曲线上给定参数处的位置矢量和参数阶次,利用Bezier 曲线定义和端点特性,可列出一组方程,求解方程组,就可得到相应的控制顶点。 例如,已知三次Bezier 曲线上的4 个点分别为Q0(120, 0), Q1(45, 0), Q2(0, 45), Q3(0, 120), 它们对应的参数分别为0, 1/3, 2/3, 1, 反求三次Bezier 曲线的控制顶点。 由已知条件可得方程组: Q0 = P0 (t=0) Q1 = (8/27)P0 + (4/9)P1 + (2/9)P2 + (1/27)P3 (t=1/3) Q2 = (1/27)P0 + (2/9)P1 + (4/9)P2 + (8/27)P3 (t=2/3) Q3 = P3 (t=1) 4.4.6 Bezier曲线的顶点反求 分别将Q0、Q1、Q2、Q3的x、y坐标代入方程组求解,可得 P0(120, 0) P1(35, -27.5) P2(-27.5, 35) P3(0, 120) 4.4.7 Bezier曲线的拼接 设有两条Bezier曲线P(u)和Q(w),其控制顶点分别为:P0, P1, P2,.., Pm和Q0, Q1, Q2,…,Qn: 4.4.7 Bezier曲线的拼接 现考虑两条曲线的拼接,一阶几何连续的条件如下: 根据端矢量条件: P?(1)=m(Pm-Pm-1) Q?(0)=n(Q1-Q0) 其一阶几何连续的条件为: P?(1)=?Q?(0) 即 Q1=Q0+m/(?n)*(Pm-Pm-1) 4.4.8 Bezier曲面 设Pij(i=0,1,…,m; j=0,1,…n)为(m+1)*(n+1)个空间点列,则m*n次Bezier曲面定义为: 其中,
文档评论(0)