- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精选33曲线cadcam
P0 P1 P2 P7 P6 P5 P4 P3 P9 P8 P10 ①P0P1P2P3 ②P1P2P3P4 ③P2P3P4P5 ④P3P4P5P6 ⑤P4P5P6P7 ⑥P5P6P7P8 ⑦P6P7P8P9 ⑧P7P8P9P10 B-样条曲线示例: B特征多边形: ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 三次B-样条曲线几何特征 F0,3 (u)= ∑ (-1)j C (u+3-0-j)3 = [ (u+3)3 - (u+2)3 + (u+1)3 - u3] = [(u+3)3-4 (u+2)3 + 6 (u+1)3 – 4u3] = ( -u3 + 3u2 – 3u +1) 4! 0!4! F 0,3(u)推导过程: 由:F k , n (u)= ∑(-1) j C n+1(u+n-k-j) n 0≤u≤1,k=0,1,……,n 1 3! 3 j=0 j 4 1 6 4! 1!3! 4! 2!2! 4! 3!1! 1 6 (a+b)3=a3+3a2b+3ab2+b3 1 6 n-k j=0 1 n! j 习题:给定控制点,画出B样条曲线 ? ? ? ? ? 、7 8 (1) (2) 参数表示法的优点: 如果通过一系列型值点拟合一条曲线或由一系列控制点(或特征点)定义一条曲线,曲线的形状仅取决于这些点本身之间的关系,而与这些点与其所在坐标系的关系无关。 x2 y2 y1 x1 o1 o2 #include stdio.h #include conio.h #include stdlib.h #include math.h #include graphics.h #define smoveto(x,y) moveto(50+x,50+y) #define slineto(x,y) lineto(50+x,50+y) #define MAX 100 main() { int xs[MAX],ys[MAX],ii,points,k,ixx,iyy,yss; int gdriver=DETECT,gmode,errorcode,i,j,jj; float x[4],y[4],deltat,t,n1,n2,n3,n4; char ms[20],stri[4],msg[]=B-spline,infname[10]; FILE *fp; if((fp=fopen(c:\\tc\\bin\\boat1.dat,r))==NULL) { printf(Error data file name! %s\n,infname); exit(1); } 三次B-样条曲线源程序: initgraph(gdriver, gmode, c:\\tc\\bgi); errorcode = graphresult(); if(errorcode != grOk) /* an error occurred */ { printf(Graphics error: %s\n, grapherrormsg(errorcode)); printf(Press any key to halt:); getch(); exit(1); /* return with error code */ } //printf(max X,Y is %d,%d,getmaxx(),getmaxy()); //getch(); cleardevice(); settextstyle(0,0,1); settextjustify(LEFT_TEXT,CENTER_TEXT); moveto(300,300); outtext(msg); fscanf(fp,%d;\n,points); for(j=0;jpoints;j++) { fscanf(fp,%d %d %d;,jj,xs[j],ys[j]); } for(j=0;jpoints-3;j++) { for(jj=0;jj4;jj++) { x[jj]=xs[j+jj]; y[jj]=ys[j+jj]; } for (i=0;i=10;i++) { t=float(i)/10.0; n1=(1-t)*(1-t)*(1-t)/
文档评论(0)