计算机图形学DDA生成直线画法程序

实验一、直线的生成

一、实验目的

掌握DDA直线画法、中点画线法和Bresenham画线法

掌握VC++简单程序设计方法

二、实验内容

根据提供的程序框架,修改部分代码,完成画一条直线的功能(中点画线法或者Bresenham画线法任选一),只要求实现在第一象限内的直线。

三、算法原理介绍

双击直线生成.dsw打开给定的程序,或者先启动VC++,文件(file)→打开工作空间(open workspace)。打开 直线生成view.cpp,按注释改写下列函数:

void CMyView::OnDdaline() (此为DDA生成直线)

void CMyView::OnBresenhamline()(此为Bresenham画直线)

void CMYView::OnMidPointLine()(此为中点画线法)

四、程序文档说明与程序源代码

DDA生成直线画法程序:

float x,y,dx,dy,k;

dx=(float)(xb-xa);

dy=(float)(yb-ya);

k=dy/dx;

x=xa;

y=ya;

if(abs(k)<1)

{

for (x=xa;x<=xb;x++)

{

pdc->SetPixel(x, int(y+0.5),COLOR);

y=y+k;

}

}

if(abs(k)>=1)

{

for(y=ya;y<=yb;y++)

{

pdc->SetPixel(int(x+0.5),y,COLOR);

x=x+1/k;

}

}

//DDA画直线结束

}

Bresenham画直线源程序:

float b,d,xi,yi;

int i;

float k;

k=(yb-ya)/(xb-xa);

b=(ya*xb-yb*xa)/(xb-xa);

if(k>0&&k<=1)

for(i=0;i

{ d=ya+0.5-k*(xa+1)-b;

if(d>=0)

{ xi=xa+1;

yi=ya;

xa++;

ya=ya+0.5;

}

if(d<0)

{ xi=xa+1;

yi=ya+1;

xa++;

ya=ya+1.5;

}

pdc->SetPixel(xi,yi,COLOR);

}

//BresenHam画直线结束

}

中点画线法源程序:

float b,d,xi,yi;

int i;

float k;

k=(yb-ya)/(xb-xa);

b=(ya*xb-yb*xa)/(xb-xa);

if(k>0&&k<=1)

for(i=0;i

{ d=ya+0.5-k*(xa+1)-b;

if(d>=0)

{ xi=xa+1;

yi=ya;

xa++;

ya=ya+0.5;

}

if(d<0)

{ xi=xa+1;

yi=ya+1;

xa++;

ya=ya+1.5;

}

pdc->SetPixel(xi,yi,COLOR);

}

//BresenHam画直线结束

}

五、实验结果抓图与分析

一、DDA生成直线

二、Bresenham画直线

三、中点画线法

实验二、bresenham画圆

一、实验目的

掌握bresenham画圆的算法。

掌握VC++简单程序设计方法

二、实验内容

根据提供的程序框架,修改部分代码,用Bresenham画法画一段圆弧或者画圆。

三、算法原理介绍

双击experiment.dsw打开,或者先启动VC++,文件(file)→打开工作空间(open workspace)。打开 直线生成view.cpp,按注释改写下列函数:

void CMyView::OnBresenhamCircle()

四、程序文档说明与程序源代码

bresenham画圆源程序

void Bresenhan_circle()

;int x,y=180,color=1,xcenter,ycenter;x=0;

int d=3-2*180;

while(x

{

if(d<0){d=d+4*x+6;x=x+1;}

else{d=d+4*(x-y)+10;x=x+1;y=y-1;}

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

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

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

  2. 计算机图形学之生成直线的DDA算法(C#)

    计算机图形学DDA直线算法(C#) 一.直线的生成算法 实质上是一个发现最佳逼近直线的象素系列,并填入彩色数据的过程. 二.DDA算法 一种基于直线的微分方程来生成直线的一种方法. 三.DDA代码程序 ...

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

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

  4. 计算机怎样用计算法绘制圆弧,计算机图形学圆弧生成算法具体程序实现

    数学与软件科学学院实验报告 学期: 2010 至 2011 第一学期 2010年 10月 5日课程名称: 计算机图形学专业:信息与计算科学2007级5班实验编号: 03 实验项目: 圆弧生成算法 指导 ...

  5. 用计算机图形学画字母,OpenGL 绘制字母 计算机图形学

    [注]算法代码如下,其中void CharMap(void)为绘制字符的算法,其中的函数段实现了两种绘制字符的不同方法,其中: glColor 3f(0.0,0.0,0.0); char text[] ...

  6. 计算机图形学---DDA直线画法c#实现

    计算机图形学-DDA直线画法c#实现 DDA直线画法,即数值微分法,是计算机图形学中直线段扫描转换的经典算法之一,本篇文章将简单介绍DDA算法,并给出c#实现的代码. 一.DDA直线画法 设直线的斜截 ...

  7. 图形学画直线c语言,002计算机图形学之直线画线算法

    002计算机图形学之直线画线算法 我们知道直线方程的斜截式是如下的样子: y = kx +b 在显示器上显示直线的话,如果使用如上的方程,每描一个点 需要进行一次浮点乘法,一次浮点加法,和取整操作. ...

  8. 计算机图形及分类的相关知识,“计算机图形学”课程教与学

    摘 要:本文针对作者几年来在"计算机图形学"课程教学过程中实际遇到的问题,从教师如何教授知识和学生如何学习知识两个方面进行深入分析和研究,提出了改进课堂教学.实验教学以及学生学习的 ...

  9. 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...

    PAGE 32 PAGE 7 计算机图形学 实验报告 班级 计算机工硕班 学号 2011220456 姓名 王泽晶 实验一:直线段扫描转换 实验目的 通过本次试验,学生可以掌握直线段的扫描转换算法及其 ...

最新文章

  1. Monkey测试2——Monkey测试策略
  2. 无责任畅想:云原生中间件的下一站
  3. moment获取几小时前_momentjs – 使用时刻在两个日期时间之间获得hh:mm的时差
  4. 【Python3】Tensorflow_Fasterrcnn训练自己数据集,Keras_Yolov3_GPU训练自己数据集
  5. [深度学习] 自然语言处理 --- Bert开发实战 (Transformers)
  6. WPF 基础控件之CheckBox样式
  7. 移动开发框架剖析(二) Hammer专业的手势控制
  8. python xlwings追加数据_大数据分析Python库xlwings提升Excel工作效率教程
  9. 操作系统—内存的动态分区分配算法
  10. pythonjam怎么使用_jam怎么用啊多多举例子啊各种词意的用法
  11. FSL ICA-FIX配置及处理流程
  12. 火遍全网的2000款热门短视频剪辑素材+经典音效包素材来了
  13. 数学归纳法·Fibonacci数列
  14. 当你一个人走过你们曾经走过的大街小巷,你会有何感受?
  15. 使用Arduino和DS12C887芯片制作电子时钟(附Arduino源代码)
  16. 【C++】变量与数据类型
  17. 基于AI的自动化处理
  18. RT_thread STM32通用Bootloader 做OTA升级
  19. opencv项目7---智能识别二维码和条形码
  20. 关于window.scroll系列方法汇总 滚动到指定元素位置

热门文章

  1. 河南省3加2计算机学校,河南省有哪些3+2学校
  2. 论文翻译-语音合成:WaveNet
  3. 58集团2017校招笔试-前端岗
  4. 非域环境修改域用户密码一直提示你的新密码不符合域的长度、复杂性或历史记录要求。请尝试选择其他新密码。
  5. 武汉ISO20000体系认证服务流程为什么如此重要?
  6. filesystem java_java-HDFS 利用 fileSystem API实现对文件的操作
  7. FreeCad的编译注意事项
  8. Java实现 LeetCode 385 迷你语法分析器
  9. 多个git项目库之间的git cherry-pick代码同步
  10. python编译器源码_编译python源码