电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

计算机图形学实验报告-直线中点Bresenham算法的实现

10页
  • 卖家[上传人]:ni****g
  • 文档编号:489492766
  • 上传时间:2022-11-16
  • 文档格式:DOC
  • 文档大小:521KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、计算机图形学实验报告实验内容 直线中点Bresenham算法的实现 专 业 计算机科学与技术 班 级 学 号 姓 名 指导教师 刘长松 年月 日一、实验题目 直线中点Bresenham算法的实现二、实验要求学习Visual C+ 6.0集成编程环境的使用、图形设备接口和常用图形程序设计、鼠标编程以及菜单设计等基础知识,从而掌握利用Visual C+进行图形程序设计的方法以及简单的图形画法,并编程实现Bresenham直线扫描转换程序,得出相应的输出图形。三、实验内容1 学习Visual C+ 6.0集成编成环境的使用; 2 掌握Visual C+ 6.0图形设备接口和常用图形程序设计、菜单设计等方法;3 编程实现Bresenham直线扫描转换程序,得出相应的输出图形;四、实验过程1、实验原理Bresenham算法思想:0d1当d0.5:下一个象素应取右光栅点(xi+1,yi)当d0.5:下一个象素应取右上光栅点(xi+1,yi+1)e=d-0.5假定直线斜率|k|1。e0=-0.5,x每次加1,e=e+k;e0时,下一像素取(xi+1,yi+1);e=e+k-1;e=0时,可任取上、下

      2、光栅点显示。当斜率|k|1时,同理,只是y每次加1,x是否变化取决于增量e。中点算法d=2F(M)=2F(Xp+1,Yp+0.5)=2(a(Xp+1)+b(Yp+0.5)+c)其中a=y0-y1,b=x1-x0,c=x0y1-x1y0当d0,M在L(Q点)上方,取右方B为下一个象素;此时下一个象素的判别式为:d=2F(Xp+2,Yp+1.5)=2(a(Xp+2)+b(Yp+1.5)+c)=2(a(Xp+1)+b(Yp+0.5)+c)+2(a+b)=d+2(a+b);当d=0,选T或B均可,约定取B为下一个象素;d0=2F(X0+1,Y0+0.5)=2(a(X0+1)+b(Y0+0.5)+c)=2(F(X0,Y0)+a+0.5b)2、案例分析MFC提供的CDC类的成员函数MoveTo()和LineTo()函数用于绘制傻任意斜率的直线段,直线段的颜色由所选用的画笔指定。MoveTo()函数移动当前点到参数(x,y)所指定的点,不画线;LineTo()函数从当前点画一直线段到参数(x,y)所指定的点,但不包括(x,y)。本案例通过定义Cline类来模拟CDC类绘制任意斜的直线段,采用直线中点

      3、Bresenham算法。3、算法设计对于0𝑘1的直线段,中点Bresenham算法如下:(1)使用鼠标选择起点坐标p0(x0,y0)和终点坐标p1(x1,y1)。要求起点的的坐标小于等于终点的x坐标。(2)定义直线段当前点坐标x,y,定义中点误差项d,定义直线斜k,定义像素点颜色clr。(3)x=x0,y=y0,计算d=0.5-k,k=(y1-y0)/(x1-x0),clr=CRGB(0,0,1)(4)绘制点(x,y),判断d的符号。若d0,则(x,y)更新为(x+1,y+1),d更新为d+1-k;否则(x,y)更新为(x+1,y),d更新为d-k。(5)如果当前点xx1,重复步骤(4),否则结束。4、主要代码/ Line.cpp: implementation of the CLine class.#include stdafx.h#include Line.h#include math.h#define Round(d) int(floor(d+0.5)/四舍五入宏定义#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FIL

      4、E=_FILE_;#define new DEBUG_NEW#endifCLine:CLine() CLine:CLine()void CLine:MoveTo(CDC *pDC,CP2 p0)/绘制直线起点函数P0=p0;void CLine:MoveTo(CDC *pDC,double x0,double y0)/重载函数P0=CP2(x0,y0);void CLine:LineTo(CDC *pDC,CP2 p1)P1=p1;CP2 p,t;CRGB clr=CRGB(0.0,0.0,0.0);/黑色像素点if(fabs(P0.x-P1.x)P1.y)/交换顶点,使得起始点低于终点t=P0;P0=P1;P1=t;for(p=P0;p.ySetPixelV(Round(p.x),Round(p.y),RGB(clr.red*255,clr.green*255,clr.blue*255);elsedouble k,d;k=(P1.y-P0.y)/(P1.x-P0.x);if(k1.0)/绘制k1if(P0.yP1.y)t=P0;P0=P1;P1=t;d=1-0.5*k;for(p=P

      5、0;p.ySetPixelV(Round(p.x),Round(p.y),RGB(clr.red*255,clr.green*255,clr.blue*255); if(d=0)p.x+;d+=1-k;else d+=1; if(0.0=k & k=1.0)/绘制0=kP1.x)t=P0;P0=P1;P1=t;d=0.5-k; for(p=P0;p.xSetPixelV(Round(p.x),Round(p.y),RGB(clr.red*255,clr.green*255,clr.blue*255); if(d=-1.0 & k0.0)/绘制-1=kP1.x)t=P0;P0=P1;P1=t;d=-0.5-k; for(p=P0;p.xSetPixelV(Round(p.x),Round(p.y),RGB(clr.red*255,clr.green*255,clr.blue*255); if(d0)p.y-;d-=1+k;else d-=k;if(k-1.0)/绘制k-1 if(P0.yP1.y;p.y-)pDC-SetPixelV(Round(p.x),Round(p.y),RGB(clr.red*255,clr.green*255,clr.blue*255); if(d0)p.x+;d-=1+k;else d-=1; P0=p1;void CLine:LineTo(CDC *pDC,double x1,double y1)/重载函数LineTo(pDC,CP2(x1,y1);四、 实验结果程序运行时如所示图5-1结果图5-1点击绘图按钮是会出现如图5-2所示结果图5-2按左键绘图结果如图5-3图5-3五、 实验收获计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学,研究的是应用计算机产生图像的所有工作,不管图像是静态的还是动态的,可交互的还是固定的通过本次试验的设计,让我对计算机图形图像处理有了更加深刻的理解,学会了这种绘制直线的算法Bresenham。Brensenham算法也是较为常用的算法。 9

      《计算机图形学实验报告-直线中点Bresenham算法的实现》由会员ni****g分享,可在线阅读,更多相关《计算机图形学实验报告-直线中点Bresenham算法的实现》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.