计算机图形学课程设计实习报告范本

合集下载

计算机图形学课程设计报告——范文

计算机图形学课程设计报告——范文

《计算机图形学》课程设计报告题目名称:专业班级学号姓名指导教师年月日Solar System(太阳系)软件工程专业学生王洋指导老师李征[摘要]太阳系(Solar System)是以太阳为中心,和所有受到太阳重力约束的天体的集合体,主要包括太阳,八大行星,以及卫星.此课题模拟太阳系围绕太阳运转的模型,以太阳,八大行星和月球形成大致的体系结构,以VC6.0为平台用OpenGL基础知识实现从不同角度观测太阳系.关键词:OpenGL VC6.0 太阳系运转角度一、实验名称:Solar System(太阳系)二、实验的目的和要求:1.熟悉OpenGL基础函数2.通过程序模拟太阳系运行3.实现改变视角观测太阳系三、实验的环境:1.硬件环境:CPU Intel Pentium D ,1G内存2.软件环境:操作系统:Windows xp SP2编译软件及版本:vc6.0 OpenGL环境四、系统描述1.太阳太阳是恒星,能够自转,体积是太阳系中最大的,能够发光,处于太阳系中心位置.2.八大行星八大行星按与太阳距离从近到远分别为:水星,金星,地球,火星,木星,土星,天王星,海王星,各有各的大小,其中以木星最大,以各自不同的公转速度绕太阳运行,并自转.3.月球月球是围绕地球旋转的卫星.体积是系统中最小的,旋转周期比较快。

五. 理论基础:用windows api创建窗口,使用OpenGL绘制函数绘制球体,实现位图文件读取,并转换为纹理,使用系统时间控制球体转动,设置视点视角,通过改变视角从不同角度观测.所使用的计算机图形学理论基础:1.3D管道中的几何变换旋转矩阵行向量为该矩阵坐标系在原坐标系上的坐标,列向量为原坐标系的向量在本旋转矩阵坐标系上的坐标。

旋转是欧氏变换;旋转、放缩是线性变换;旋转、放缩、平移是仿射变换;旋转、放缩、平移、透视投影是射影变换。

线性变换在四维空间,仿射变换在三维空间,射影必须采用摄像坐标系,仿射变换是到自身的一类变换.齐次坐标系就是将一个原本是n维的向量用一个n+1维向量来表示。

计算机图形学课程设计综合实验报告

计算机图形学课程设计综合实验报告

西南交通大学信息科学与技术学院计算机图形学实验(2014~2015学年第II学期)实验报告学号:20122712 姓名:魏仁斌专业:软件工程班级: 4课程名称计算机图形学班级软件4班学号___20122712 姓名___魏仁斌 _试验日期2015.3.16实验成绩____ _ 实验名称实验 1 集成开发环境的认识和简单窗口程序移植与创建1. 实验目的熟悉windows编程和VC++编程环境2. 实验设备与环境硬件设备:软件设计工具: Microsoft Visual C++ 6.03. 实验设计说明基本工作原理: windows提供了一系列的API函数实验内容:用VC++创建工程,并且创建一个简单的窗口实验设计步骤、设计过程或执行顺序①可单击Windows桌面上的“开始”按钮,弹出开始菜单,点击→所有程序→MicrosoftVisual Studio 6.0→Microsoft Visual C++ 6.0,单击后进入开发环境。

②用鼠标单击 File 菜单中的 New 菜单项,在系统弹出的对话框中,有四大工作类型供操作选择:Files、Projects、Workspaces、Other Documents,每种类型又包含许多具体的文件类型。

③选择 Projects 标签,在 Project name 下的编辑框中输入应用工程的名称为实验1。

在 Location 标签下的编辑框中,输入保存文件的位置,也可以用鼠标点击旁边的“…”按钮来选择保存文件的目录。

④选择 Projects 标签下的 Win32 Application,点击OK按钮后,自动创建新的工作空间。

⑤本例选择创建空白应用工程(An empty project),单击 Finsh按钮。

⑥点击“OK”按钮,建立空白的Win32应用工程。

⑦用鼠标单击File菜单中New菜单项,在系统弹出的对话框中,在Files标签下,选择C++Source File,在右方的File编辑框中输入源程序文件的名称后单击“OK”。

计算机图形学实验报告模板

计算机图形学实验报告模板

巢湖学院计算机图形学实验报告(模板>本课程实验包括:以下为实验二和实验三模板实验一:基本图元绘制一、实验目的了解OpenGL图形软件包绘制图形的基本过程及其程序框架,并在已有的程序框架中添加代码实现直线和圆的生成算法,演示直线和圆的生成过程,从而加深对直线和圆等基本图形生成算法的理解。

b5E2RGbCAP二、实验内容实验操作和步骤:本次实验主要的目的是为了掌握基本画线和画圆算法,对于书上给出的代码,要求通过本次实验来具体的实现。

由于实验已经给出大体的框架,所以只需要按照书上的算法思想来设计具体实现代码,对于直线DDA算法,中点Bresenham算法及其改进算法,以及Bresenham画圆算法都有进一步的体会。

DDA算法是对每一步都要进行增量处理,然后取整,绘制,而Bresenham通过判断误差函数和求取递推公式来实现。

特别是对于整数的选择取舍,以及代码的流程和循环的控制有一个深入的了解。

同时也熟练运用OpenGL基本的绘图函数。

p1EanqFDPw三、体会通过本次实验,我进一步加深了对于基本画图算法的理解。

特别是对于DDA,Bresenham和画圆算法。

其中,DDA算法由于每一步都要处理浮点数的四舍五入,所以在绘图时要进行取整,效率较低,但是代码直观好懂,符合原理。

而对于Bresenham及其改进算法,都是在理论推导的基础上来实现的,然后经过整数化,形成了一个高效率的画图算法,所以需要适当的理解,特别是对于取整操作判断比较巧妙,实现了避免多次判断计算浮点数的目的,所以比较高效。

而绘制圆形的时候,用到的基本思想还是和Bresenham画图算法一样,只不过需要注意的是八分法画圆,这样只需要绘制其中的八分之一就可以利用对称的关系来绘制出整个图形。

而对于是否走下一步,或者是停留,判断的依据还是误差函数,和前面的思想是类似。

另外,通过实验训练了自己的编程能力,同时熟悉了OpenGL绘图的函数和流程,也进一步巩固了相关的知识。

计算机图形学课程综合实习实习报告

计算机图形学课程综合实习实习报告

计算机图形学课程综合实习实习报告1.实习目的(1)熟练掌握计算机图形学的基本原理和方法。

(2)熟练掌握计算机图形学的算法的程序实现,增强理论联系实际的能力(3)学习和掌握图形系统的设计和开发方法。

(4)学习使用VC++编写计算机图形学基础程序。

2.实习内容2.1程序结构说明2.1.1新建类的说明根据实习要求,对于二维算法的实现主要涉及到的图形有直线、圆形和多边形,因此新建三个类Cline,CCircle和CPolygon,其成员变量分别记录生成图形的参数,包括图形的几何参数(比如直线的端点坐标,圆的圆心坐标和半径)和图形显示效果的一些参数,比如线宽,使用何种方法绘制有一定线宽的直线,线的颜色等,类的成员函数主要作用是用于生成图形(主要是构建函数)、绘制图形(使用图形生成算法而不使用VC++自带的一些图形生成函数)和执行图形编辑操作。

同时由于添加一个对话框资源用于设置线宽和绘制时处理方法的一个对话框,生成对应的对话框处理类CSetWidthDialog,它从CDialog继承来,并添加相应的处理函数用于获得控件中相应的数据。

另外在裁剪时为了使程序的操作性更强,需要有一个临时的裁剪框,而使用MFC的函数或者是我已经写好的程序都没有办法达到理想的效果,因此我又添加一个新的类,叫做CCutRect专门用于处理图形裁剪时的操作。

2.1.2图形信息存储在文档类中添加三个动态文档类数组分别用于存储直线对象,圆对象和多边形对象,同时添加相应的函数,用于向数组中添加新的对象、获得数组长度和获得指定位置的对象,数组声明如下在绘制图形时,每绘制一个图形,就像相应的数组中添加相应的对象,在程序视图刷新时,输出所有图形。

2.1.3图形显示的优化如果在绘制图形及进行图形填充等操作时,直接在屏幕上输出结果,会因为整个I/O 操作拖慢程序的运行效率,具体反映就是图形填充操作时能够明显看出从上到下、逐行输出地过程,而在刷新视图时也可以看到类似的过程,在极端条件下(比如待填充区域很大或是非常复杂)会由于I/O操作不断刷新视图,导致程序永远进行填充,进入死循环。

计算机图形学实习报告

计算机图形学实习报告

实习报告实习名称:计算机图形学实习班级:学号:姓名:实习地点:实习指导教师:实习时间:年月日至月日一、实习目的与意义本次计算机图形学的实习分两部分,一部分是利用AutoCAD进行二维和三维模型的制作,另一部分是利用VC6.0进行编程实现对图形的简单操作。

通过对AutoCAD的实习,熟悉该软件的基本功能及操作特点,掌握二维及三维图形的基本制作过程。

通过对VC6.0的编程实习,理解图形的生成、图形的变换、图形的显示以及二维裁剪的基本思想,熟练掌握计算机图形学的基本原理和方法;熟练掌握计算机图形学算法的实现算法;学习和掌握图形系统的设计;学习用VC++编写计算机图形学程序;建立面向对象编程的基本概念。

二、实习主要内容1、AutoCAD软件操作(1)简单图形绘制(2)图形的基本编辑命令操作(3)标注文字及填充(4)三维图形绘制2.基于VC6.0下的计算机图形学程序编写(1)图形的生成:画直线、画圆、画曲线、画字符(2)图形的变换:平移、旋转、缩放、对称变换(3)图形的显示:扫描线填充、边缘填充、种子填充(4)图形的二维裁剪:CS裁剪、多边形裁剪、梁友栋裁剪、圆裁剪、中点分割法三、实习的主要过程第一部分 AutoCAD软件操作AutoCAD软件可以处理很多问题,在机械制图,土木建筑等方面有着广泛的应用,我们在机房打开AutoCAD软件对其进行系统配置,然后进行具体操作。

通过配置可以实现工具栏之类的快捷运用。

(1)简单图形绘制实习开始的第一天,在老师的讲解以及演示下,我们了解了AutoCAD软件的基本使用方法,与此同时,我们跟着老师的操作也逐渐熟悉了该软件的一些基本操作方法。

从设置基本绘图环境开始,按照指导书上的指示,采用边完成简单图形边学习各种命令的方式,逐渐熟练掌握了AutoCAD的使用,熟练掌握了其基本绘图功能,如掌握了绘图命令POINT、LINE、CIRCLE、ARC、DONUT、RECTANGLE、POLYLINE的功能及操作;掌握了实体绘图命令键盘输入的方法;掌握了缩放命令(ZOOM)的使用方法等。

计算机图形学实验报告模板

计算机图形学实验报告模板
(三)Bresenham算法
算法步骤如下:
.输入直线两端点P0(X0,Y0)和P1(X1,Y1)。
.计算初始值△x, △y,e=-△x,x=X0,y=Y0。
.绘制点(x,y)。
.e更新为e+2△y。判断e的符号,若e>0,则(x,y)更新为(x+1,y+1),同样将e更新为e-2△x;否则(x,y)更新为(x+1,y)。
OpenGL的绘制流程分为两个方面:一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。
// glRectf(50.0f,100.0f,150.0f,50.0f); //绘制一个矩形
glBegin(GL_LINE_LOOP); //五角星
glVertex2i(10,10);
glVertex2i(30,35);
glVertex2i(50,10);
glVertex2i(5,25);
glVertex2i(55,25);
了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。
3.实验代码及结果
3.1点的绘制:
#include<gl/glut.h>
void Initial(void)
{
glClearColor(1.0f,1.0f,1.0f,1.0f); //设置窗口背景颜色为白色
为了进一步熟悉OpenGL编程,了解基本图形生成算法中的直线绘制,学会直线绘制算法中最常用的三种算法:数值微分法、中点画线算法和Bresenham算法。

江苏大学-计算机图形学实验1报告【范本模板】

江苏大学-计算机图形学实验1报告【范本模板】

实验报告的内容提纲实验报告应包括以下内容:(1)实验题目(2)实验内容(3)实验环境:本次上机实验所使用的平台和相关软件。

(4)问题分析:对所要解决的问题进行阐述和分析,提出解决方法,列出解决步骤。

(5)算法设计:用流程图或伪代码描述解决问题的算法。

(6)源代码(7)程序运行结果(8)总结1实验报告的格式规范(1)报告按以下内容次序编排:封面、成绩评定表、报告。

(2)用A4纸,通栏排版,页边距:上2。

2厘米,下2厘米,左2.7厘米,右2.3厘米;(3)行距一律用1.5倍行距;(4)中文一律用宋体,英文和数字一律用Times New Roman;(5)一级标题用四号粗体,段前段后不空行,二级标题用小四号粗体,左端不缩进,段前段后均不留多余空格;(6)正文用小四号,每段文字首行缩进2个字符.(7)关于正文中的“图”和“表”:➢图形下方标示图号与图名(见下面示例),图号与图名字体要求:中文宋体小五号,数字和英文Times New Roman,小五号;图1 学员报名信息管理模块➢表格上方标示表号与表名(见下面示例),表号与表名字体要求:中文宋体小五号, 数字和英文Times New Roman,小五号。

表1 科目表(tb_Subject)计算机科学与通信工程学院实验报告课程计算机图形学实验题目二维图形绘制学生姓名学号专业班级指导教师日期成绩评定表1. 实验内容绘制金刚石图案。

金刚石图案的成图规则是:把一个圆周等分成n份,然后每两点之间连线.当n取奇数时,该图案可一笔连续绘成,即用MoveTo函数确定一个当前点,然后连续用LineTo函数连点成线。

绘制下图所示的魔术三角形图案,采用三种可明显区分的颜色填充.绘制递归圆应用递归的方法绘制如下所示的图案2。

实验环境操作系统:Windows xp编译环境:Vc++6。

03. 问题分析1。

金刚石绘制本实验的核心是在圆的基础上绘制金刚石图案。

金刚石图案是一个二维图案,仅使用二维坐标(x,y)就可以绘制,本实验使用数组实现。

计算机图形学实习报告 2010302590163 陈秋磊

计算机图形学实习报告 2010302590163 陈秋磊

实习报告实习名称:计算机图形学实习班级: 10012班学号:***************: ***实习地点:5栋机房实习指导教师: 付仲良实习时间:2012年6月25日至7月1日遥感信息工程学院目录一、实习目的与意义 (4)二、实习主要内容 (4)1、AutoCAD软件操作 (4)(1)简单图形绘制 (4)(2)图形的基本编辑 (4)(3)文字及填充 (4)(4)三维图形绘制 (4)2、基于VC6.0下的计算机图形学程序编写 (4)(1)画直线、画多边形、画圆、画字符 (4)(2)对多边形进行填充 (4)(3)图形裁剪 (4)(4)图形的几何变换 (4)(5)三维图形的消隐及着色 (4)三、实习的主要过程 (4)第一部分AutoCAD软件操作 (4)(1)简单图形绘制 (5)(2)图形的基本编辑 (7)(3)文字及填充 (9)(4)三维图形绘制 (12)第二部分基于VC6.0下的计算机图形学程序编写 (16)(1)配置 (16)(2)画直线、画多边形、画圆、画字符 (17)(3)对多边形进行填充 (19)(4)图形裁剪 (20)(5)图形的几何变换 (20)(6)三维图形的消隐及着色 (21)四、实习的主要体会 (22)成绩评定 (25)一、实习目的与意义这次计算机图形学实习是在机房实习,我们所采用的是CAD和VC6.0的软件来进行实习,通过CAD 制作二维和三维的模型,通过VC编程实现一些图像的变化。

通过对AutoCAD2004与VC系统的应用实习,熟悉其的基本功能及操作特点,掌握基本的制作过程。

通过本次实习,学生应能熟练使用AutoCAD软件、建立初步面向对象编程的基本概念、以及学会使用VC编程语言。

二、实习主要内容1、AutoCAD软件操作(1)简单图形绘制(2)图形的基本编辑(3)文字及填充(4)三维图形绘制2、基于VC6.0下的计算机图形学程序编写(1)画直线、画多边形、画圆、画字符(2)对多边形进行填充(3)图形裁剪(4)图形的几何变换(5)三维图形的消隐及着色三、实习的主要过程第一部分AutoCAD软件操作AutoCAD软件能处理相当多的图像,广泛应用于土木建筑等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验零 Visual C++ 2005绘图系统地点:土木楼B401机房时间:星期三下午节次:第三大节一、实验目的:1. 了解Visual C++ 2005绘图的基本概念2. 了解Visual C++ 2005绘图环境3. 掌握用Visual C++ 2005设计绘图项目的基本步骤4. 掌握用Visual C++ 2005绘图的基本命令二、实验容:实验容1:创建绘图应用程序主框架实验容2:应用程序编译运行实验容3:设置菜单项并生成消息响应函数实验容4:SetPixel绘图三、实验步骤:实验容1:创建绘图应用程序主框架步骤:1.创建一个工作目录D:\MyProject2.启动 Visual Studio 20053.单击“文件”->“新建”->“项目”,项目类型对话框中选择“其他语言”->“VC++” ->“MFC”,模版选择“MFC应用程序”。

在工作目录D:\MyProject 下创建一个新应用项目: Sample,如下图所示。

4.单击“确定”按钮。

5.单击“下一步”按钮。

6.在“应用程序类型中”,选择“单文档”类型。

7.单击“完成”,创建了一项空的工程-绘图应用程序主框架。

实验容2:应用程序编译运行运行版本有两类:Debug、Release, 生成Debug解决方案步骤如下: 1.生成解决方案点击“生成-〉生成解决方案”, 生成了Debug版的可运行程序。

2.调试运行程序点击菜单“调试——〉开始执行(不调试)”, 执行Debug版的可运行程序。

结果如下:生成Release解决方案步骤如下:1.生成解决方案点击“生成-〉批生成”。

2.勾选“Release”,单击“生成”,生成可以独立于Visual C++ 2005外运行的.exe程序。

3.查看目录,sample.exe是Release版,单击即可以运行。

运行结果:实验容3:设置菜单项并生成消息响应函数1.弹出菜单设计器单击“解决方案管理器”窗口中的资源文件Sample.rc,弹出资源视图,2.插入一项菜单双击“资源视图”中的“Menu”展开文件夹,双击“IDR_MAINFRAME”,弹出菜单设计器。

右健单击菜单设计器的“帮助”,选择“新插入”,插入一项菜单。

在新插入的菜单项的“Caption”中输入“绘图”。

3.输入ID输入“打开”菜单项,输入“直线”菜单项,在“直线”菜单项下输入“DDA”菜单,“DDA”菜单的ID为ID_LINE_DDA。

ID Caption 功能ID_LINE_DDA DDA用DDA发绘制直线4.调出类视图窗口单击菜单“视图-〉类视图”,在“解决方案管理器”窗口中出现“类视图”窗口。

4.生成菜单消息响应函数在类视图窗口,单击Csample0View类,单击事件按钮,5.选择ID_LINE_DDA的COMMAND,添加OnLineDDA事件。

6.进入代码编辑器在void Csample0View::OnLineDda()中的// TODO: 在此添加命令处理程序代码处输入的自己代码:AfxMessageBox("Hello World",MB_OK,NULL);7.修改项目字符集属性选择“项目”菜单->属性->,弹出“属性”对话框,选择“配置属性 ->常规->字符集”,改为“未设置”。

8.运行结果重新生成解决方案,运行结果如下。

实验容4:SetPixel绘图在void Csample0View::OnLineDda()中的// TODO: 在此添加命令处理程序代码处输入的代码:// TODO: Add your command handler code hereCClientDC *pdc=new CClientDC(this);CPen pen;pen.CreatePen(PS_DOT,1,RGB(255,0,0));CPen *oldpen=(CPen*)pdc->SelectObject(&pen);int x,y;y=100;for(x=100;x<=300;x+=3){y++;pdc->SetPixelV(x,y,RGB(255,0,0));}pdc->DeleteDC();}运行结果如下。

四、实验结果:实验容1:创建绘图应用程序主框架结果实验容2:应用程序编译运行结果实验容3:设置菜单项并生成消息响应函数实验容4:SetPixel绘图五、回答如下问题:解释以下每条命令的含义CClientDC *pdc=new CClientDC(this);//定义一个指针类型的CClientDC对象,客户区设备上下文用于客//户区的输出,与特定窗口关联CPen pen;//定义一个画笔对象pen.CreatePen(PS_DOT,1,RGB(255,0,0));//赋予pen对象以风格CPen *oldpen=(CPen*)pdc->SelectObject(&pen);//pdc->SetPixelV(x,y,RGB(255,0,0));//画出像素坐标为(x,y),风格为红色的一点六、其它的实验容:答:工具条按钮的添加七、实验中发现的问题及你解决的方法:答:发现的问题:调试过程中出现如下错误解决的方法:重新生成解决方案,如还出现则多生成几次。

实验一直线的生成算法地点:土木楼B401机房时间:星期三下午节次:第三大节一、实验目的:1.理解DDA算法2.理解中点Bresenham算法3.理解改进的Bresenham算法4.了解DDA和Bresenham算法的区别,以及生成图形的差异原因二、实验容:实验容1:设计DDA算法程序实验容2:设计中点Bresenham算法程序实验容3:改进的Bresenham算法三、实验步骤:实验容1:设计DDA算法程序添加函数:void DDALine(int Xa, int Ya, int Xb, int Yb)//DDA算法void CSampleView::DDALine(int Xa, int Ya, int Xb, int Yb){CClientDC *pdc=new CClientDC(this);CPen pen;pen.CreatePen(PS_DOT,1,RGB(255,0,0));CPen *oldpen=(CPen*)pdc->SelectObject(&pen);float delta_x,delta_y;int x,y;int dx,dy,steps,k;dx=Xb-Xa;dy=Yb-Ya;if(abs(dx)>abs(dy))steps=abs(dx);else steps=abs(dy);delta_x=(float)dx/(float)steps;delta_y=(float)dy/(float)steps;x=Xa;y=Ya;pdc->SetPixelV(x,y,RGB(255,0,0));for(k=1;k<=steps;k++){x+=(int)delta_x;y+=(int)delta_y;pdc->SetPixelV(x,y,RGB(255,0,0));}pdc->DeleteDC();添加事件响应函数:// 消息响应函数DDA算法程序的设计画直线void CSampleView::OnDdaLine(){DDALine(100,100,300,300);}实验容2:设计中点Bresenham算法程序添加函数:void LineBresenhams(int Xa,int Ya,int Xb,int Yb)//Bresenhams算法程序的设计画直线的实现void CSampleView::LineBresenhams(int Xa,int Ya,int Xb,int Yb) { CClientDC *pdc=new CClientDC(this);CPen pen;pen.CreatePen(PS_DOT,1,RGB(255,0,0));CPen *oldpen=(CPen*)pdc->SelectObject(&pen);int dx=abs(Xa-Xb);int dy=abs(Ya-Yb);int p=2*dy-dx;int twody=2*dy;int twodydx = 2*(dy-dx);int x,y,xend;if(Xa>Xb){ x=Xb; y=Yb;xend=Xa;}else{x=Xa;y=Ya;xend=Xb;}pdc->SetPixelV(x,y,RGB(255,0,0));;while(x<xend){ x++;if(p<0)p+=twody;else{y++;p+=twodydx; }pdc->SetPixelV(x,y,RGB(255,0,0));;}}添加事件响应函数:void CSampleView::OnBresenhamline(){// TODO: 在此添加命令处理程序代码LineBresenhams(100,200,300,300);实验容3:改进的Bresenham算法添加函数:void ImproveBresenhams(int Xa, int Ya, int Xb, int Yb)//Bresenham算法改进算法的实现void CSampleView::ImproveBresenhams(int Xa, int Ya, int Xb, int Yb) { CClientDC *pdc=new CClientDC(this);CPen pen;pen.CreatePen(PS_DOT,1,RGB(255,0,0));CPen *oldpen=(CPen*)pdc->SelectObject(&pen);int dx,dy,e,x,y;dx=Xb-Xa;dy=Yb-Ya;e=-dx;x=Xa;y=Ya;while(x<=Xb){pdc->SetPixelV(x,y,RGB(255,0,0));;x++;e+=2*dy;if(e>0){y++;e-=2*dx;}}}添加事件响应函数://菜单响应函数生成直线ImproveBresenhams算法void CSampleView::OnImprove(){// TODO: 在此添加命令处理程序代码ImproveBresenhams(200,100,300,300);}四、实验结果:实验容1:设计DDA算法程序实验容2:设计中点Bresenham算法程序实验容3:改进的Bresenham算法五、回答如下问题:DDA算法的缺点是什么?答:DDA算法的缺点是:它的y和斜率k必须用浮点数表示,而且每一步都必须对y进行舍入取整,这不利于用硬件实现。

相关文档
最新文档