计算机图形学实验指导(一、二)_第1页
计算机图形学实验指导(一、二)_第2页
计算机图形学实验指导(一、二)_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、电脑图形学实验指导实验一、直线的扫描转换算法实验实验目的掌握中点Bresenham直线扫描转换算法的思想实验环境实验内容问题描述:给定两个点的坐标Po(xo,yo),Pi(xi,yi),使用中点Bresenham直线扫描转换算法画出连接两点的直线。中点Bresenham直线扫描转换算法原理见课本。实验根本步骤首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。es PrnjfifrT<?Orhi?r ATI COM A|)|)Wlz»rdCluster Resource lype WisardlCustom AppSiVizariJDatabase P

2、rojectDcvStudiu Addiri WizardL.xteinded Stored Proc V/izardIS API 匚 xtcinsio n WizardMakefileMFC ActiveX ControlWizard(dtl)umiry Prujeul "WinJl! Application其次、使用中点Bresenham直线扫描转换算法实现自己的画线函数,函数原型可表示如下:void DrawLine(CDC *pDC, int p0x, int p0y, int p1x, int p1y);在函数中,可通过调用 CDC成员函数SetPixel来画出扫描转换过程

3、中的每个点。COLORREF SetPixel(i nt x, i nt y, COLORREF crColor);再次、找到文档视图程序框架视图类的OnDraw成员函数,调用DrawLine函数画出不同斜率情况的直线,如以下图:void CDravLlneUieu:DnDrau(CDC* pQC)CTestcoodtr arisDoc* pDoc = GetDocunent ();ASSERT_UALID(pDoc);n TODO: add drau code for native data herpjDraiJLine(pDC, 10,1D, 2S0, 100);DrauLine(pDC,

4、 10,200, 2D0 160);DrLin&(pDCp 10D, 200):DrLinfpDC, 10,200, 1D0, 200);最后、调试程序直至正确画出直线实验要求1写出中点Bresenham直线扫描转换算法的程序并在 vc6下编译和调试通过,画出具 有各种斜率范围的直线仅使用GDI函数SetPixel函数。2按规定的实验格式写出实验报告,包含实验代码自己写的画线函数,结果截图实验二、多边形填充算法实验实验目的掌握边标志算 法或有效边表算法进行 多边形填充的根本设计思想。实验环境实验内容问题描述:给定多边形的顶点的坐标 Po(xo,yo), Pi(xi,yi), P2(X2

5、,y2), P3(X3,y3), P4(X4,y4) 使用边标志算法或有效边表算法进行多边形填充。边标志算法或有效边表算法原理见课本。实验根本步骤首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。其次、 实现边标志算法或有效边表算法函数,如下:void FillPolygon(CDC *pDC, int px, int py, int ptnumb);px:该数组用来表示每个顶点的X坐标py :该数组用来表示每个顶点的 y 坐标ptnumb:表示顶点个数注意实现函数 FillPolygon 可以直接通过窗口的 DC 设备描述符来进行多边形填充, 不需要使用帧缓冲存储

6、。边标志算法首先用画线函数勾画出多边形 ,再针对每条扫描线 , 从左至右依次判断当前像素的颜色是否勾画的边界色 , 是就开始填充后面的像素直至再碰 到边界像素。注意对顶点要做特殊处理。通过调用GDI画点函数SetPixel来画出填充过程中的每个点。需要画线可以使用CDC 的画线函数MoveTo和LineTo进行绘制,也可以使用实验一实现的画直线函数。CPoint MoveTo(int x, int y );BOOL LineTo(int x, int y );实现边标志算法算法需要获取某个点的当前颜色值,可以使用CDC勺成员函数COLORREF GetPixel(int x, int y );

7、再次、 找到文档视图程序框架视图类的 OnDraw 成员函数,调用 FillPolygon 函数画出 填充的多边形,如下:void CTestView:OnDraw(CDC* pDC)CTestcoodtransDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here/ 绘制之前先把整个窗口涂上背景色 ( 白色) 以便于下面的填充RECT Rt;GetClientRect(&Rt);pDC->FillSolidRect(&Rt, RGB(255,255,255);int ptx = 10, 100, 200, 150, 80;int pty = 10, 50, 80, 120, 70; FillPol

温馨提示

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

评论

0/150

提交评论