计算机图形学实验报告实验1

(9页)

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

9.9 积分

贵州大学实验报告学院:计算机科学与信息专业:计科班级:101姓名 吕杨 学号1008060040实验时间2013-3-31指导教师吴云同组成员成绩实验项目名称实验内容实 验 原 理 及 算 法 设 计直线生成算法通过实验,掌握计算机绘制图形的方法和操作步骤,并且掌握生成直线的三 种算法:1、DDA算法2、中点直线算法3、Bresenham算法的基木思想,并 且比较他们的特点。1、 分析算法原理,编制应用程序,分别使用Brcscnham算法,中点直线算 法以及DDA算法绘制给定端点坐标的直线,并且截图;2、 比较三种算法的特点。?Bresenham算法1. Bresenham算法原理Bresenham算法是计算机图形学领域使用最广泛的直线扫描转换算法。由误差项符号决定下一个像素取右边点还是右上方点。设 直线从起点(x1,y1)到终点(x2, y2)o直线可表示为 方程y= mx+b,其中b=y1-m*x1 ,m= (y2-y1) /(x2-x1)=dy/dx;此处的讨论直线方向限于1a象 限(图1-3),当直线光栅化时,x每次都增加1个 单元,设x像素为(xi, yi)0下一个像素的列坐标为 xi + 1,行坐标为yi,或者递增1为yi + 1,由y与 yi及yi+1的距离d1及d2的大小而定。计算公式 为y=m(xi+1)+ b (1.1)d1 = y - yi (1.2)d2 = yi +1 - y (1.3)如果d1-d2>0,贝ijyi+1=yi+1,否则yi+1=yio 式(1.1)、(1.2). (1.3)代入d1-d2,再用dx乘等式两边,并以Pi=(d1- d2) dx代入上述等式,得 Pi = 2xidy-2yidx+2dy+(2b-1) dx (1.4)d1-d2是用以判断符号的误差。由于在1a象限,dx总大于0,所 以Pi仍旧可以用作判断符号的误差。Pi+1为Pi+1 = Pi+2dy-2(yi+1-yi) dx (1.5)求误差的初值P1,可将x1、y1和b代入式(24)中的xi、yi而得到 P1 = 2dy-dx2. 直线Bresenham算法设计:(1) .输入直线的起点坐标P0 (x0. y0)和终点坐标Pl (xl.y2)。(2) .定义直线当前点坐标x和y,定义中点偏差判别式d,定义直线斜率k,定 义像素点颜色rgb。(3) . x=x0, y=yO,计算d=0. 5~k, k=(yl-yO)/(xl~x0), rgb=RGB(O, 0, 255).(4) ?绘制点(x, y),判断点d的符号。若d<0,则(x, y)更新为(x+1, y+1) , d 更新为cl+l-k;否则(x, y)更新为(x+1, y) , cl更新为d-k。(5) .如果当前点x小于xl,重复步骤(4),否则结束。二.中点直线算法如图所示,在画直线段的过程中,当前像 素点为P,下一个像素点有两种选择,点p1或p2 o M为p1与p2中点,Q为理想直线与x=xp+1垂线的交点。当M在Q的下 方,贝炉2应为下一个像素点;M在Q的上方,应取P1为下一点。中点算法实现令直线段L(pO(xO,yO), p1(x1,y1)),其方程式F(x,y)=ax+by+c=Oo其中,a=yO-y1, b=x1-xO, c=xOy1-x1yO;点与L 的关系:在直线上:F(x,y)=O;在直线上方:F(x, y)>0;在直线下方:F(x, y)<0;把M代入F (x, y)判断F的符号,可知Q点在中点M的上方还是下方。为此构造判别式:d=F(M)=F(xp+1, yp+0.5)=a(xp+1 )+b(yp+0.5)+c当d<0, L(Q点)在M上方,取P2为下一个像素;当d>0, L(Q点)在M下方,取P1为下一个像素;当d=0,选P1或P2均可,取P1为下一个像素;其屮d是xp, yp的线性函数。三.DDA算法如图所示,已知过端点p0 (x0, y0 l),pl (xl, yl)的直线段p Opl ;直线斜率为 Line: PO(O, 0)— Pl (5, 2)k=(yl-yO)/(xl-xO),从x的左端点xO开 始,向x右端点步进画线,步长=1(个像 素),计算相应的y坐标y=kx-^B;取像 素点(x , rounds y))作为当前点的坐标。 计算Xi+i=Xi+Ax=Xi+l ,yi+1=k ? Xi+i+b 当x 每递增1, y递增k(即直线斜率)。直线DDA算法实现:1、 已知直线的两端点坐标:(x1, y1), (x2, y2)2、 已知画线的颜色:color3、 计算两个方向的变化量:dx=x2—x1dy=y2—y14、 求出两个方向最大变化量的绝对值:steps=max(|dx|, |dy|)5、 计算两个方向的增量(考虑了生成方向):xin=dx/stepsyin=dy/steps6、 设置初始象素坐标:x=x1 ,y=y17、 用循环实现直线的绘制:for(i=1 ; iv=steps; i++){ putpixel(x, y, color); /*■在(x, y)处,以 color 色画点*7 x=x+xin; y=y+yin;}实验环境操作系统:Windows XP SP3编程环境:Microsoft Visual C++ 6.0计算机配置:P4 3.0, 1GDDR2 160G硬盘 X1300PRO图形卡一.Bresenham算法代码实验代码void CTestView: : Mb line ()//Bresenham 函数{CClientDC de (this);COLORREF rgb=RGB (0, 0, 255) ; //定义直线颜色为蓝色 double x, y, d, k;x=x0;y=y0;k=(yl-yO)/(xl~x0);d=0. 5~k;for (x=x0;x<=xl;x++)de. SetPixel(ROUND(x), ROUND(y), rgb);if (d<0){y卄;d+=l-k;}else d-=k;}}二. 中点直线算法int xO=l, y0=3, xl=300, yl=200, c=RGB(255, 0, 0) ;//定义直线的两端点,直线颜 色float a, b, dl, d2, d, x, y;a=y0-yl, b二xl-xO, d二2*a+b;dl=2*a, d2=2* (a+b);x=x0, y=yO;pDC->SctPixcl(x, y, c);while (xSetPixel(x, y, c);}ReleaseDC(pDC);}三. DDA算法int x0=100, y0=300, xl=300, yl=200, c=RGB(255, 0, 0);//定义直线的两端点,直 线颜色int x, y;float dx, dy, k;dx=(float)(xl-xO), dy=(float)(yl-yO);k=dy/dx, y=yO;if (abs (k)<1){for (x=x0;x<=xl;x++){pDC->SetPixel (x, int (y+0.5), c);y二y+k; 务.无标题-直线生成算法口回冈DDA算法:实 验 总 结通过本次实验,讣我了解了图形学一些基本知识,并利用编程实现了不同的算法生成一些 直线,加深了对这牝算法的理解和应用,通过实现这牝算法生成直线,自己获得了对这门课 程的兴趣,对以后的后续学习有着很大的帮助。指导教师意见签名: 年 月 日 关 键 词: 计算机 图形学 实验 报告

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

计算机图学实验报告,计算机图形学实验报告实验1相关推荐

  1. 计算机图学概念,计算机图形学(概念).doc

    计算机图形学(概念) 1.计算机图形学(Computer Graphics) 计算机图形学是研究怎样利用计算机来产生存储和处理图形的原理.方法和技术的一门学科. IEEE定义:Computer gra ...

  2. 计算机类创新论文题目,计算机类学论文选题 计算机类论文标题怎样定

    [100道]计算机类学论文选题供您参考,希望能解决毕业生们的计算机类论文标题怎样定相关问题,选好题目那就开始写计算机类论文吧! 一.比较好写的计算机类论文题目: 1.浅谈计算机类图书的分类与主题标引 ...

  3. 计算机专业学电路分析,计算机专业电路系列课程教学改革调查分析

    摘要:文章分析了"桂林电子科技大学计算机相关专业对电路系列课程教学改革情况的调查问卷"结果,包括学生的课程重视程度和对课程内容改革.课程教学效果和学习资源.考核方式等的满意度.分析 ...

  4. 大学计算机课程学什么内容,计算机是学什么内容的 有哪些课程

    计算机专业所学的知识大多数是对计算机的使用,以及掌握互联网操作的工具,与该专业最为相关的几个课程内容就是计算机网络.C语言.计算机的组装和维修维护.局域网的组建等等. 计算机专业课程 计算机专业类包括 ...

  5. 少儿学计算机应该学什么,学习计算机与幼儿专业的关系

    近年来,随着计算机使用的普及化,计算机教育已成为学校课程的一部分,而且逐渐向低龄化发展.那么计算机教育是否可以从幼儿园开始实施?从小接触这一信息媒体,是否有利于他们以后的发展?我们承认,计算机在幼儿园 ...

  6. 安徽省高等计算机研究学,安徽省高等学校计算机教育研究会2021年常务理事会在我校召开...

    3月20日,安徽省高等学校计算机教育研究会2021年常务理事会在我校召开,安徽省高校计算机学院院长等共58人参加会议.我校副校长聂宗瑶及信息技术学院负责人参加会议.研究会理事长.合肥工业大学教授胡学钢 ...

  7. 济南技校计算机专业学什么,技校计算机专业学什么-邹城

    职业教育门槛低主要体现在两个方面,一是对于学 历的要求低,无论是初中生.高中生.生.大专生.无就业的人员都可以参与到职业教育中,学或者提升技能,以期能够更好地获得就业机会.二是零门槛学,学者无需理论或 ...

  8. 计算机都学什么数学,计算机专业的数学应学到什么水平?应该学习数学的那些分支?...

    本人是数学系的, 但其实真正的爱好是计算机. 当年报志愿的时候不知听谁说了句, 学计算机, 想搞软件就去学数学, 想搞硬件就去学物理, 然后就报了数学. 在数学系, 感觉思维确实受到了训练, 但所学的 ...

  9. 计算机高新技术学什么,高新技术计算机教学利弊分析

    [摘要] 随着计算机技术的快速发展,计算机在经济社会中的应用越来越广泛.因此使用计算机的理论和实践操作的能力已成为信息时代个人能力的重要组成部分.所以,在计算机教学中融入对熟练操作计算机的能力培养就显 ...

最新文章

  1. .Net日志之nlog
  2. android资产目录,android – 从非目录设备中的资产文件夹复制数据库
  3. python中静态方法存在的意义
  4. 蚂蚁集团官宣启动上市计划,上交所、港交所表示热烈欢迎...
  5. 【转】ASP.net MVC自定义错误处理页面的方法
  6. Python基础——元组与列表
  7. JMJS系统总结系列----XSLT的语句规则(一)
  8. 1.2 Hadoop快速入门
  9. 【图像处理】H.264开源解码器评测
  10. 大数据项目-4.下载安装谷歌翻译插件
  11. windows或linux下用Virtualbox安装Win 8.1等系统错误0x000000C4解决办法
  12. Ubuntu 16.04 Kalibr安装使用
  13. ASC19 T4 CESM
  14. 计算机论文参考文献范文,计算机文类论文参考文献 计算机文参考文献有哪些...
  15. MySQL按年龄段查询
  16. FGFA训练自己的数据集docker
  17. 如何进行Java学习
  18. STM32——FLASH擦除/写入失败的踩坑笔记。(WRPERR)
  19. 《GEB-EGB》-人工智能
  20. 看图学习VMWare以及常见问题答疑(转)

热门文章

  1. Java手写dubbo框架
  2. Java excel poi 读取已有文件 ,动态插入一列数据
  3. 提高抗打击能力_怎么有效提高自身的抗打击能力?
  4. mac mysql版本_mac mysql安装哪个版本
  5. php.450 pr,pr界面介绍有哪些
  6. VMware安装centOS镜像
  7. 【论文阅读】Multi-Modal Sarcasm Detection 图文反讽识别
  8. 【数据结构与算法基础】AOE网络与关键路径
  9. 如何新建一个oracle数据库,ORACLE怎么新建数据库
  10. 如何设计一个混沌工程实验?