计算机图形学实验报告-直线中点bresenham算法的实现资料.doc

(10页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

29.90 积分

计算机图形学实验报告实验内容实验内容 直线中点直线中点 BresenhamBresenham 算法的实现算法的实现 专专 业业 计算机科学与技术计算机科学与技术 班班 级级 学学 号号 姓姓 名名 指导教师指导教师 刘长松刘长松 年月年月 日日1一、实验题目一、实验题目直线中点直线中点 Bresenham 算法的实现二、实验要求二、实验要求学习 Visual C++ 6.0 集成编程环境的使用、图形设备接口和常用图形程序设计、鼠标编程以及菜单设计等基础知识,从而掌握利用 Visual C++进行图形程序设计的方法以及简单的图形画法,并编程实现 Bresenham 直线扫描转换程序,得出相应的输出图形。三、实验内容三、实验内容1. 学习 Visual C++ 6.0 集成编成环境的使用; 2. 掌握 Visual C++ 6.0 图形设备接口和常用图形程序设计、菜单设计等方法;3. 编程实现 Bresenham 直线扫描转换程序,得出相应的输出图形;2四、实验过程四、实验过程1、实验原理Bresenham 算法 思想:0≤d≤1 当 d0 时,下一像素取 (xi+1,yi+1);e = e + k -1 ; e=0 时,可任取上、下光栅点显示。当斜率|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)所指定的点,3但不包括(x,y)。 本案例通过定义 Cline 类来模拟 CDC 类绘制任意斜的直线段,采用直线中点 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 的符号。若 dP1.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));5}}else{double k,d;k=(P1.y-P0.y)/(P1.x-P0.x);if(k>1.0)//绘制 k>1{if(P0.y>P1.y){t=P0;P0=P1;P1=t;}d=1-0.5*k;for(p=P0;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.0P1.x){t=P0;P0=P1;P1=t;6}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 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>0){p.y--;d-=1+k;}else 7d-=k;}}if(kP1.y;p.y--){pDC->SetPixelV(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; }}}P0=p1;}void CLine::LineTo(CDC *pDC,double x1,double y1)//重载函数{LineTo(pDC,CP2(x1,y1));}4 4、、实验结果实验结果8程序运行时如所示图 5-1 结果图 5-1点击绘图按钮是会出现如图 5-2 所示结果图 5-2按左键绘图结果如图 5-3图 5-35 5、、实验收获实验收获9计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学,研究的是应用计算机产生图像的所有工作,不管图像是静态的还是动态的,可交互的还是固定的通过本次试验的设计,让我对计算机图形图像处理有了更加深刻的理解,学会了这种绘制直线的算法Bresenham。Brensenham算法也是较为常用的算法。 关 键 词: 计算机 图形学 实验 试验 报告 讲演 呈文 直线 中点 bresenham 算法 实现 资料

 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:计算机图形学实验报告-直线中点bresenham算法的实现资料.doc

链接地址: https://www.wenku365.com/p-11365324.html

计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...相关推荐

  1. 计算机图形学真实绘图实验报告,计算机图形学实验报告.doc

    文档介绍: 中南大学信息科学与工程学院 实验报告 实 验 名 称 实 验 地 点 科技楼四楼 实 验 日 期 2014年6月 指 导 教 师 学 生 班 级 学 生 姓 名 学 生 学 号 提 交 日 ...

  2. 计算机图形剪裁程序说明,计算机图形学实验报告实验2裁剪算法实验

    裁剪算法实验 一. 实验目的: 直线段的裁剪:编码裁剪算法,中点分割裁剪算法. 二.实验内容: //BasicGraph.cpp //请将下列裁剪程序补充完整,并用注释说明是何种裁剪算法 void E ...

  3. 计算机图形学学习报告,计算机图形学学习报告.doc

    计算机图形学学习报告 篇一:计算机图形学学习心得体会 计算机图形学学习心得体会 计算机科学与技术与技术 班 学号: 1.计算机图形学 计算机图形学(Computer Graphics,简称CG),狭义 ...

  4. 吉林大学计算机图形学实验_计算机图形学学习笔记(一):图形学概论

    第一章 计算机图形学概论 1.1 全书概述 图形学基本知识 光栅图形学 扫描转换.区域填充.裁减.反走样.消隐 二维.三维图形变换及观察 几何造型 参数曲线曲面基本概念.Bezier曲线曲面.B样条曲 ...

  5. 计算机图形学实验教程,计算机图形学实验

    时间:2019-05-12 06:42:24 作者:admin 实验三 MFC画直线 最近自己在学习如何在VC 6.0 开发环境下的使用MFC AppWizard(exe)来绘画一条直线,虽然比较简单 ...

  6. 计算机图形学学习报告,计算机图形学学习报告.pdf

    精选公文范文 计算机图形学学习 报告 篇一:计算机图形学学习心得体会 计算机图形学学习心得体会 计算机科学与技术与技术 班 学号: 1.计算机图形学 计算机图形学(Computer Graphics, ...

  7. 计算机图形学直线算法论文,《计算机图形学》中直线生成算法的教学心得

    摘要:<计算机图形学>是计算机科学与技术专业一门重要的专业课,其中直线生成算法是教学重点之一.该文通过分析几种直线生成算法的特点,阐述了理论教学和实践教学的重点和难点,总结了教学的体会和心 ...

  8. 计算机技术结题报告,计算机图形学课程结题-报告选题:

    计算机图形学课程结题-报告选题: (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.9 积分 -计算机图形学课程结题报告选题:1. 物体建模(非上机 ...

  9. 计算机图形学画直线程序豆丁网,计算机图形学DDA生成直线画法程序.doc

    计算机图形学DDA生成直线画法程序 实验一.直线的生成 一.实验目的 掌握DDA直线画法.中点画线法和Bresenham画线法 掌握VC++简单程序设计方法 二.实验内容 根据提供的程序框架,修改部分 ...

最新文章

  1. struct 与 class区别
  2. 教你如何在面试中用「10分钟快速分析」一款产品
  3. Win32ASM-进程学习【1】
  4. cigarettes(香烟)
  5. NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)
  6. 实现excel导入_PhpOffice实现Excel表格导入的解耦方法
  7. Python+tkinter实现简单的登录界面
  8. 【转载】【凯子哥带你学Framework】Activity界面显示全解析(下)
  9. 控制Tello无人机扫描条形码
  10. Rust高并发编程总结
  11. Android更改开机画面
  12. 多变量微积分笔记(2)——多元函数及其微分
  13. IDEA重置配置设定
  14. 存储和虚拟化服务器的对接,储存虚拟化
  15. python回归取残差_R/python-回归分析
  16. iOS设置icon图标和启动页的详细设置
  17. Stata:边际效应分析\交乘项的系数含义和图示
  18. Ubuntu 桌面系统升级
  19. 利用python处理dna序列_详解基于python的全局与局部序列比对的实现(DNA)
  20. 用友:从PLM走向All-in-one

热门文章

  1. 2014年校园招聘新签约工资待遇
  2. 古巴比伦理财五大金科定律
  3. idea 如何导入和导出自己设置好的主题背景
  4. “晴耕 · 白话”栏目上线
  5. 微信服务号的六大价值有哪些
  6. 【特写】中国卡通形象设计师——初心不改,画作一方天地
  7. 频域串联滞后校正matlab,基于MATLAB的串联超前校正、滞后校正和串联滞后-超前校正设计.pdf...
  8. 第10周---信息熵与压缩编码基础
  9. 【算法套路】-【递归篇】【递归三要素】
  10. 旅游商城会员中心HTML,旅游特产商城功能_旅游特产商城系统-思途旅游CMS