- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学课程设计实验报告
《计算机图形学》 实验报告 班级 计算机科学与技术 姓名 学号 2014 年 6 月 2 日 实验一 基本图形生成算法 一、实验目的: 1、掌握中点Bresenham绘制直线的原理; 2、设计中点Bresenham算法; 3、掌握八分法中点Bresenham算法绘制圆的原理; 4、设计八分法绘制圆的中点Bresenham算法; 5、掌握绘制1/4椭圆弧的上半部分和下半部分的中点Bresenham算法原理; 6、掌握下半部分椭圆偏差判别式的初始值计算方法; 7、设计顺时针四分法绘制椭圆的中点Bresenham算法。 二、实验过程: 实验描述 实验1:使用中点Bresenham算法绘制斜率为0=k=1的直线。 实验2:使用中点Bresenham算法绘制圆心位于屏幕客户区中心的圆。 实验3:使用中点Bresenham算法绘制圆心位于屏幕客户区中心的椭圆。 2、实验过程 1)用MFC(exe)建立一个单文档工程; 2)编写对话框,生成相应对象,设置相应变量; 3)在类CLineView中声明相应函数,并在相关的cpp文件中实现; 4)在OnDraw()函数里调用函数实现绘制直线、圆、椭圆; 5)运行程序,输入相应值,绘制出图形。 源代码 实验1:直线中点Bresenham算法 1.// cline.cpp : implementation file // cline dialog cline::cline(CWnd* pParent /*=NULL*/) : CDialog(cline::IDD, pParent) { //{{AFX_DATA_INIT(cline) m_x0 = 0; m_y0 = 0; m_x1 = 0; m_y1 = 0; //}}AFX_DATA_INIT } void cline::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(cline) DDX_Text(pDX, IDC_x0, m_x0); DDX_Text(pDX, IDC_y0, m_y0); DDX_Text(pDX, IDC_x1, m_x1); DDX_Text(pDX, IDC_y1, m_y1); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(cline, CDialog) //{{AFX_MSG_MAP(cline) //}}AFX_MSG_MAP END_MESSAGE_MAP() // LineView.h class CLineView : public CView { public: CLineDoc* GetDocument(); .......... void Mbline(double,double,double,double); //直线中点Bresenham函数 ....... } 3、// Line.cpp //*******************直线中点Bresenham函数*********************/ void CLineView::Mbline(double x0, double y0, double x1, double y1) { CClientDC dc(this); COLORREF rgb=RGB(0,0,255); //定义直线颜色为蓝色 double x,y,d,k; x=x0; y=y0; k=(y1-y0)/(x1-x0); d=0.5-k; for(x=x0;x=x1;x++) { dc.SetPixel((int)x,(int)y,rgb); if(d0) { y++; d+=1-k; } else d-=k; } } 4、//LineView.cpp void CLineView::OnDraw(CDC* pDC) { CLineDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here cline a; a.DoModal();//初始化 CLineView::Mbline(a.m_x0,a.m_y0,a.m_x1,a.m_y1); } 实验2:圆中点Bresenham算法
文档评论(0)