辽工大自考实践矿业信息与计算机应用_第1页
辽工大自考实践矿业信息与计算机应用_第2页
辽工大自考实践矿业信息与计算机应用_第3页
辽工大自考实践矿业信息与计算机应用_第4页
辽工大自考实践矿业信息与计算机应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验题目二维基本图形生成的算法实现实验日期 指导教师 成绩 一、实验目的1、 通过实验,进一步理解和掌握DDA和中点算法,Bresenham算法;2、 掌握DDA和中点算法,中点算法,Bresenham算法算法生成直线段的基本过程。掌握中点画圆的算法。3、 通过编程,会在VC+环境下完成用DDA、中点算法实现直线段的绘制和中点算法实现圆的绘制。二、实验内容1、 用DDA算法或中点(Besenham)算法实现直线段的绘制。2、 用中点(Besenham)算法实现椭圆或圆的绘制。三、实验步骤1、 算法、原理清晰,有详细的设计步骤; 2、 依据算法、步骤或程序流程图,用VC+语言编写源程序;3、 编

2、辑源程序并进行调试;4、 进行运行测试,并结合情况进行调整;5、 对运行结果进行保存与分析;6、 打印源程序或把源程序以文件的形式提交;7、 按格式书写实验报告。四、实验数据1、用DDA算法实现直线段的绘制实验源代码void CDDAView:LineDDA(int x0, int y0, int x1, int y1, int color)CDC* pDC=GetDC( );int x;float dy,dx,y,m;dx=x1-x0;dy=y1-y0;m=dy/dx;y=y0;for(x=x0;x<=x1;x+)pDC->SetPixel(x,(int)(y+0.5),colo

3、r);y+=m;ReleaseDC(pDC);ondraw调用:void CDDAView:OnDraw(CDC* pDC)CDDADoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereLineDDA(50,55,500,120,123);试验结果:2、用中点(Besenham)算法实现椭圆或圆的绘制。源代码:void CBesenhamView:BresenhmaCircle(int xc, int yc, int r, int color)CDC *pDC=GetDC()

4、;int x=0,y=r,p=3-2*r;while(x<y)pDC->SetPixel(xc+x,yc+y,color);pDC->SetPixel(xc-x,yc+y,color);pDC->SetPixel(xc+x,yc-y,color);pDC->SetPixel(xc-x,yc-y,color);pDC->SetPixel(xc+y,yc+x,color);pDC->SetPixel(xc-y,yc+x,color);pDC->SetPixel(xc+y,yc-x,color);pDC->SetPixel(xc-y,yc-x,c

5、olor);if(p<0) p+=4*x+6;elsep+=4*(x-y)+10;y-;x+;if(x=y)pDC->SetPixel(xc+x,yc+y,color);pDC->SetPixel(xc-x,yc+y,color);pDC->SetPixel(xc+x,yc-y,color);pDC->SetPixel(xc-x,yc-y,color);pDC->SetPixel(xc+y,yc+x,color);pDC->SetPixel(xc-y,yc+x,color);pDC->SetPixel(xc+y,yc-x,color);pDC-&

6、gt;SetPixel(xc-y,yc-x,color);ReleaseDC(pDC);ondraw函数调用:void CBesenhamView:OnDraw(CDC* pDC)CBesenhamDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);BresenhmaCircle(200,200,100,120);/ TODO: add draw code for native data here试验结果:实验题目图形的裁剪实验日期 指导教师 成绩 一、实验目的1、 通过实验,进一步理解和掌握Cohen_Sutherland 裁剪算法;2、 掌握用Cohe

7、n_Sutherland 裁剪算法裁减多边形的基本过程3、 通过编程,会在VC+环境下用Sutherland_Hogman 算法编程实现用矩形窗口对的裁剪。二、实验内容用Cohen_Sutherland 算法编程实现用矩形窗口对直线的裁剪。三、实验步骤1、 算法、原理清晰,有详细的设计步骤; 2、 依据算法、步骤或程序流程图,用VC+语言编写源程序;3、 编辑源程序并进行调试;4、 进行运行测试,并结合情况进行调整;5、 对运行结果进行保存与分析;6、 打印源程序或把源程序以文件的形式提交;7、 按格式书写实验报告。四、实验数据实验源代码void CClipView:OnLButtonDown

8、(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCDC* pDC=CWnd:GetDC();/CView:OnLButtonDown(nFlags, point);Rect rect;int x,y;x=point.x;y=point.y;rect.xmin=x-100;rect.xmax=x+100;rect.ymin=y-100;rect.ymax=y+100; float x0=0,y0=0,x1=400,y1=400; /DrawLine(x0,y0,x1

9、,y1,pDC); Clip(x0,y0,x1,y1,&rect,pDC); ReleaseDC(pDC);void Clip(float x0,float y0,float x1,float y1,Rect *rect,CDC *pDC)bool accept,done;accept=FALSE;done=FALSE;OutCode code0,code1;OutCode *outCode;float x,y;CompOutCode(x0,y0,rect,&code0);CompOutCode(x1,y1,rect,&code1);doif(code0.all=0&a

10、mp;&code1.all=0) accept=TRUE;done=TRUE;else if(code0.all&code1.all)!=0)done=TRUE;elseif(code0.all!=0)outCode=&code0;elseoutCode=&code1;if(outCode->left)y=y0+(y1-y0)*(rect->xmin-x0)/(x1-x0);x=(float)rect->xmin;else if(outCode->top)x=x0+(x1-x0)*(rect->ymax-y0)/(y1-y0);y=

11、(float)rect->ymax;else if(outCode->right)y=y0+(y1-y0)*(rect->xmax-x0)/(x1-x0);x=(float)rect->xmax;else if(outCode->bottom)x=x0+(x1-x0)*(rect->ymin-y0)/(y1-y0);y=(float)rect->ymin;if(outCode->all=code0.all)x0=x;y0=y;CompOutCode(x0,y0,rect,&code0);elsex1=x;y1=y;CompOutCode(

12、x1,y1,rect,&code1);while(!done);if(accept)DrawLine(int)x0,(int)y0,(int)x1,(int)y1,pDC,1);实验结果:实验题目几何图形变换实验实验日期 指导教师 成绩 一、实验目的1、 通过实验,运用计算机图形学的知识、原理和算法;2、 掌握二维和三维图形几何变换;3、 通过使用VC+编程环境实现图形几何变换;二、实验内容1、 在VC+编程环境下建立二维平面图形(长方形)实现其缩放、平移、旋转几何变换;2、 在VC+编程环境下建立三维立方体,实现缩放、平移、旋转等几何变换,。三、实验步骤1、 算法、原理清晰,有详细的

13、设计步骤; 2、 依据算法、步骤或程序流程图,用VC+语言编写源程序;3、 编辑源程序并进行调试;4、 进行特殊模式的运行测试,并结合情况进行调整;5、 对运行结果进行保存与分析;6、 打印源程序或把源程序以文件的形式提交;7、 按格式书写实验报告。四、实验数据1、 实验源代码void CJHBHView:OnDraw(CDC* pDC)CJHBHDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);PY(pDC,x1, y1, x2, y2, Tx, Ty);BBI(pDC, x1, y1, x2, y2, Sx, Sy);XZ(pDC, x1, y1,

14、x2, y2, a);/ TODO: add draw code for native data herevoid CJHBHView:PY(CDC *pDC,int x1, int y1, int x2, int y2, int Tx, int Ty)int x3,y3,x4,y4;x3=x1+Tx;y3=y1+Ty;x4=x2+Tx;y4=y2+Ty;pDC->MoveTo(x1,y1);pDC->LineTo(x2,y2);pDC->MoveTo(x3,y3);pDC->LineTo(x4,y4);void CJHBHView:BBI(CDC *pDC,int x

15、1, int y1, int x2, int y2, float Sx, float Sy)int x3,y3,x4,y4;x3=x1*Sx;y3=y1*Sy;x4=x2*Sx;y4=y2*Sy;pDC->MoveTo(x3,y3);pDC->LineTo(x4,y4);void CJHBHView:XZ(CDC *pDC,int x1, int y1, int x2, int y2,double a)int x3,y3;double rad=0.0174533;double alpha,alpha1,c,s;alpha1=alpha*rad;c=cos(alpha1);s=sin

16、(alpha1);x3=x2*c-y2*s;y3=y2*c+x2*s;pDC->MoveTo(x1,y1);pDC->LineTo(x3,y3);2、 实验结果实验题目BEZIER曲线和B样条曲线的绘制实验日期 指导教师 成绩 一、实验目的1、 通过实验,进一步理解和掌握生成BEZIER曲线的算法;2、 掌握BEZIER曲线的基本生成过程;3、 通过编程,会在VC+环境下编程实现三次BEZIER曲线的绘制;4、 通过实验,进一步理解和掌握生成B样条曲线的算法;5、 掌握B样条曲线的基本生成过程;6、 通过编程,会在VC+环境下编程实现三次B样条曲线的绘制。二、实验内容1、 编程实现

17、三次BEZIER曲线的绘制;2、 编程实现三次B样条曲线的绘制。三、实验步骤1、 算法、原理清晰,有详细的设计步骤; 2、 依据算法、步骤或程序流程图,用VC+语言编写源程序;3、 编辑源程序并进行调试;4、 进行特殊模式的运行测试,并结合情况进行调整;5、 对运行结果进行保存与分析;6、 打印源程序或把源程序以文件的形式提交;7、 按格式书写实验报告。四、实验数据实验源代码1. 绘制BEZIER曲线:void CBezierView:DrawBezier()CClientDC dc(this);double x,y;int rate=800,n;n=CtrlPoint-1;for(doubl

18、e t=0;t<=1;t+=1.0/rate)x=0;y=0;for(int i=0;i<=n;i+)x+=pti.x*Cnk(n,i)*pow(t,i)*pow(1-t,n-i);y+=pti.y*Cnk(n,i)*pow(t,i)*pow(1-t,n-i);dc.SetPixel(ROUND(x),ROUND(y),RGB(0,0,255);2绘制B样条曲线:void CCgView:OnBSpline() CClientDC dc(this);double x,y,Step,t,t2,t3,F03,F13,F23,F33;Step=0.1;for(int i=0;i<a-1;i+)t=0.0;dot2=t*t;t3=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论