实验67Bezier曲线填充.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6 一辆老爷车 填色-古董车(会跑?) 实验7 改装的小轿车 折线变曲线,旧式老爷车变新式小轿车 可添加高级功能:轮子会转动 Alternative (实验7):用Bezier曲线绘制一个“大”字 Tips Obtaining the coordinates of the Control points Approach 1 :get the position by the program Approach 2: by using photoshop Notice that: 两种方式所获坐标系统不同 update车盖 2组4个控制点: 用DeCasteljian算法绘制一条3次Bezier曲线 or 用Bezier曲线定义算法绘制一条3次曲线 绘制一条3次Bezier曲线1 用DeCasteljian算法(参见随后的ppt) void bezcurve(CPoint *control_p,float step) { float x,y; CPoint cp; moveto(control_p[0].x,control_p[0].y); while(step1.001) { step+=0.01; cp=DeCas(control_p,step); lineto(cp.x,cp.y); } } CPoint DeCas(CPoint *contol_p,float u) { CPoint Q[Degree+1]; int i,k; for(i=0;iDegree;i++) { Q[i].x=contol_p[i].x; Q[i].y=contol_p[i].y; } 。。。。 。。。。 return Q[0]; } 绘制一条3次Bezier曲线2 借助Bezier曲线定义 n次Bezier曲线数学表达式 n次Bezier曲线数学表达式为: 三次Bezier曲线的数学表达式为: x(t)=(1-t)3x0 + 3t(1-t)2x1+3t2(1-t)x2 +t3x3 y(t)=(1-t)3y0 + 3t(1-t)2y1+3t2(1-t)y2 +t3y3 (0≤t≤1) 以下为供参考的程序设计部分语句: xs = x(0): ys = y(0): t = 0.01 While (t = 1.0000001) { xe=(1-t)*(1-t)*(1-t)*x[0]+3*t*(1-t)*(1-t)*x[1])+3*t*t*(1-t)*x[2]+t*t*t*x[3] ye=(1-t)*(1-t)*(1-t)*y[0]+3*t*(1-t)*(1-t)*y[1]+3*t*t*(1-t)*y[2]+t*t*t*y[3] line(xs, ys,xe, ye) xs = xe; ys = ye: t = t + 0.01 } 附加题 绘制一个3×3阶Bezier曲面 要求 输入9个控制点位置 P[3][3]={….} While(u1.001) { ….. whie(v1.001) {} } 输出:Bezier曲面 区域填充算法 要求: (1) 车身涂上色彩,不调用填色函数,譬如floodfill();即用种子填充算法或扫描线填充 (2) 轮胎可画成填充圆,用fillellipse(dotx,doty,t,t); Bezier 曲线/曲面绘制 说明: (1) 车盖是Bezier曲线 或 (2)小车跑动时, 轮子会转动 完成的工作:实现二维旋转,集成到整车中 要求:能看得出轮子会转动,即轮子修饰下,否则看不出会转动 h+b h h+b h moveto(x0-h,y0-h); lineto(x0-h-b,y0); lineto(x0-2*h,y0); lineto(x0-2*h-b,y0); lineto(x0-2*h-b,y0+h); lineto(x0+2*h+b,y0+h); lineto(x0+2*h+b,y0); lineto(x0+h+b,y0); lineto(x0+h,y0-h); lineto(x0-h,y0-h); 提示:c=getpixel(x,y) 用flag标记当前遇到的是奇数个交点还是偶数个交点 fillellipse(dotx,doty,t,t); Void main( ) { …//调用画出车形函数 getchar( ); …//调用填色函数 getchar( ); …//调用汽车开动函数 } 输入:4个控制顶点,譬如CPoint control_p[4

文档评论(0)

iris + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档