




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
附录一:绘制Bezier曲线#includegraphics.h#includeconio.h#includestdio.htypedef struct double x,y;DPOINT; /定义结构体class Bezier /定义Bezier类 private: DPOINT* bP; int m_maxIndex; void drawFrame(); void drawCurve(); void drawCurve(int p0,int p1,int p2,int p3); public: Bezier(DPOINT* p,int len); /定义构造函数 void draw();Bezier:Bezier(DPOINT* p,int len) /构造函数的实现 this -bP=p;m_maxIndex=len-1;void Bezier:draw() /通过公有函数调用私有函数 drawFrame();drawCurve();void Bezier:drawFrame() /其功能是绘制出多边形和各个端点setcolor(12);for(int i=0;im_maxIndex;i+)line( bPi.x, bPi.y, bPi+1.x, bPi+1.y ); /绘制多边形circle(bPi.x, bPi.y,5); /绘制各个端点circle(bPm_maxIndex.x,bPm_maxIndex.y,5);void Bezier:drawCurve() /实现多段Bezier曲线绘制的功能 for(int i=0;i=m_maxIndex-3;i+=3)drawCurve(i,i+1,i+2,i+3);void Bezier:drawCurve(int p0,int p1,int p2,int p3) /绘制某一段Bezier曲线的功能 double tmpx=0.0;double tmpy=0.0;double t=0.0;for(;t=1.0;t+=0.001)tmpx=(-bPp0.x+3*bPp1.x-3*bPp2.x+bPp3.x)*t*t*t+(3*bPp0.x-6*bPp1.x+3*bPp2.x)*t*t+(-3*bPp0.x+3*bPp1.x)*t+bPp0.x;tmpy=(-bPp0.y+3*bPp1.y-3*bPp2.y+bPp3.y)*t*t*t+(3*bPp0.y-6*bPp1.y+3*bPp2.y)*t*t+(-3*bPp0.y+3*bPp1.y)*t+bPp0.y;putpixel(tmpx,tmpy,3);void main() /主函数的实现int graphdriver=DETECT,graphmode;initgraph(&graphdriver,&graphmode,E:tc3bgi);setbkcolor(15);DPOINT* p;p=new DPOINT10; p0.x=50.0; p0.y=100.0; p1.x=80.0; p1.y=230.0;p2.x=100.0; p2.y=270.0; p3.x=140.0; p3.y=160.0;p4.x=180.0; p4.y=50.0; p5.x=240.0; p5.y=65.0;p6.x=270.0; p6.y=120.0; p7.x=330.0; p7.y=230.0;p8.x=380.0; p8.y=230.0; p9.x=430.0; p9.y=150.0;Bezier bzr(p,10);bzr.draw();delete p;getch();closegraph();运行结果为附录二:子程序affine.cdouble sin(),cos();double xmax=639.0,ymax=399.0;double f33,xx,yy;scx(double xj) int x; x=(int)(xj+xmax/2); return(x);scy(double yi) int y; y=(int)ymax-(int)(yi+(ymax/2); return(y);parallel(double dx,double dy) f00=1.0;f01=0.0;f02=0.0; f10=0.0;f11=1.0;f12=0.0; f20=dx;f21=dy;f22=1.0; return(0);rotate(double theta) double th; th=theta/180*3.1415927; f00=cos(th);f01=sin(th);f02=0.0; f10=-sin(th);f11=cos(th); f20=0.0;f21=0.0;f22=1.0; return(0);scale(double ss) f00=ss;f01=0.0;f02=0.0; f10=0.0;f11=ss;f12=0.0; f20=0.0;f21=0.0;f22=1.0; return(0);taishao_x() f00=1.0;f01=1.0;f02=0.0; f10=0.0;f11=-1.0;f12=0.0; f20=0.0;f21=0.0;f22=1.0; return(0);taishao_y() f00=-1.0;f01=1.0;f02=0.0; f10=0.0;f11=-1.0;f12=0.0; f20=0.0;f21=0.0;f22=1.0; return(0);taishao_o() f00=-1.0;f01=1.0;f02=0.0; f10=0.0;f11=-1.0;f12=0.0; f20=0.0;f21=0.0;f22=1.0; return(0);taishao_xy() f00=0.0;f01=1.0;f02=0.0; f10=1.0;f11=0.0;f12=0.0; f20=0.0;f21=0.0;f22=1.0; return(0);taishl(double aa,double bb,double cc) double y,p; y=bb*bb-aa*aa; p=aa*aa+bb*bb; f00=-y/p; f21=-2*aa*bb/p;f22=0.0; f10=-2*aa*bb/p;f11=-y/p; f12=0.0; f20=-2*aa*cc/p;f21=-2*bb*cc/p;f22=1.0; return(0);axis() line(scx(0),scy(-ymax/2),scx(0),scy(ymax/2); line(scx(-xmax/2),scy(0.0),scx(xmax/2),scy(0.0); return(0);tuoq(double a,double b) f00=1.0;f01=b;f02=0.0; f10=a;f11=1.0;f12=0.0; f20=0.0;f21=0.0;f22=1.0; return(0);affinex(double x,double y,double d) xx=x*f00+y*f10+d*f20; return(xx) ;affiney(double x,double y,double d) yy=x*f01+y*f11+d*f21; return(yy);附录三:四边形的旋转#include affine.c#includemain()int graphdriver=DETECT, graphmode;static double x1=0.0,10.0,100.0,110.0,0.0;static double y1=0.0,50.0,50.0,0.0,0.0; static double x25;static double y25;int i;double r,xx,yy;initgraph(&graphdriver,&graphmode,);for(r=0;r=360;r=r+10)rotate(r);for(i=0;i=4;i+)x2i=affinex(x1i,y1i,1.0);y2i=affiney(x1i,y1i,1.0)/2;for(i=0;i=3;i+)line(scx(x2i),scy(y2i),scx(x2i+1),scy(y2i+1);getch();closegraph();附录四:四边形的平移#includeaffine.c#include#define PI 3.1415926void main()int driver=DETECT,mode; static double x1=-20.0,0.0,30.0,10.0,-20.0; static double y1=0.0,17.0,-10.0,-20.0,0.0; static double x25;static double y25; int i; double r; initgraph(&driver,&mode, ); axis();for(r=0;r360;r=r+10) rotate(r); for(i=0;i=4;i+) x2i=affinex (x1i,y1i,1.0); y2i=affiney (x1i,y1i,1.0); parallel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏省退役军人事务厅直属优抚医院招聘12人考前自测高频考点模拟试题附答案详解
- 安全培训教学壁纸课件
- 2025年闭式塔项目合作计划书
- 2025湖南新宁县事业单位和县属国有企业人才引进降低开考比例岗位考前自测高频考点模拟试题及答案详解(易错题)
- 2025福建泉州发展集团有限公司(第一批)人才引进招聘25人模拟试卷及一套完整答案详解
- 客户信息采集及管理工具
- 小区农业设施共享管理协议
- 2025年安徽交控集团所属安徽交控石油有限公司招聘16人模拟试卷及答案详解(名师系列)
- 2025广东韶关市翁源县人民法院招聘劳动合同制书记员1人模拟试卷及答案详解(新)
- 医学研究成果安全保障承诺书(3篇)
- GB/T 34875-2017离心泵和转子泵用轴封系统
- GB/T 21063.4-2007政务信息资源目录体系第4部分:政务信息资源分类
- GA/T 1081-2020安全防范系统维护保养规范
- 02药物不良反应adr课件
- 施工项目成本管理课件
- 文物建筑保护修缮专项方案
- 营销与2008欧锦赛ktv渠道方案
- 故障录波器课件
- DB32-T 2665-2014机动车维修费用结算规范-(高清现行)
- 《区域经济学》讲义(1)课件
- 《现代分析测试》17 电子光学基础
评论
0/150
提交评论