计算机图形学实验报告.docx
(10页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
7.9 积分
计算机图形学实验报告 学校: 合肥工业大学 姓名: 学号: 班级: 实验二:直线的生成实验目的和要求理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力;编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。实验环境和工具• 开发环境:Visual C++ 6.0• 实验平台:Experiment_Frame_One(自制平台)实验结果程序代码:void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1){//----------实现DDA算法------------// int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=X1-X0; dy=Y1-Y0; x = X0; y = Y0; if(abs(dx)>abs(dy)) //max分两种情况,|1/espl|=1 epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { DrawPixel(int (x+0.5),(int)(y+0.5)); //光栅化+0.5后四舍五入 x+=xIncre; y+=yIncre; }}void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1){ //-------请实现Mid_Bresenham算法-------///* int x,y,dx,dy,e; dx=X1-X0; dy=Y1-Y0; e=-dx; x=X0; y=Y0; while(x0){ y++; e-=2*dx; } }*/ int dx,dy,d,UpIncre,DownIncre,x,y; //只考虑0yscan) ++tmp; if(Vertices[(i+2)%VertexNum][1]>yscan) ++tmp; if(tmp%2==0) continue; } cross.push_back(x); } sort(cross.begin(),cross.end()); for(i=0;iyi+1,则计0个交点(不填色)。扫描线与多边形边界重合 (当要区分边界和边界内区域时需特殊处理),则计1个交点。 具体实现时,只需检查顶点的两条边的另外两个端点的y值。按这两个y值中大于交点y值的个数是0,1,2来决定实验总结: 计算机图形学是关于图形图像在计算机中存储,表达和显示的科学,设计了软硬件的许多方面。通过了8周的学习,大概了解了计算机图形学最基础的东西,知道了图形图像怎样在计算机中存储,有关的数据结构和怎样通过显示器显示出来。觉得很有意思,虽然只有两次上机实验,而且有现成的平台,但是通过了实验也了解了实验的算法表示的原理,只是简单的线和多边形的显示,但也很有意思,深刻形象的感受了计算机图形学的魅力。 关 键 词: 实验 报告 图形 计算机
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。