作者:非妃是公主
专栏:《计算机图形学》
博客地址:https://blog.csdn.net/myf_666
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩

文章目录

  • 专栏推荐
  • 专栏系列文章
  • 算法
  • OpenGL代码
  • 缺点
  • 效果图
  • the end……

专栏推荐

专栏名称 专栏地址
软件工程 专栏——软件工程
计算机图形学 专栏——计算机图形学
操作系统 专栏——操作系统
软件测试 专栏——软件测试
机器学习 专栏——机器学习
数据库 专栏——数据库
算法 专栏——算法

专栏系列文章

文章名称 文章地址
直线生成算法(DDA算法) 计算机图形学01——DDA算法
中点BH算法绘制直线 计算机图形学02——中点BH算法
改进的中点BH算法 计算机图形学03——改进的中点BH算法
中点Bresenham画椭圆 计算机图形学04——中点BH绘制椭圆
中点BH算法绘制任意斜率直线 计算机图形学05——中点BH算法绘制任意斜率的直线
中点Bresenham画圆 计算机图形学06——中点BH算法画圆
有效边表法的多边形扫描转换 计算机图形学07——有效边表法绘制填充多边形
中点BH算法绘制抛物线 100 x = y 2 100x = y^2 100x=y2 计算机图形学08——中点BH绘制抛物线
二维观察之点的裁剪 计算机图形学09——二维观察之点裁剪
二维观察之线的裁剪 计算机图形学10——二维观察之线裁剪
二维观察之多边形的裁剪 计算机图形学11——二维观察之多边形裁剪
二维图形的几何变换 计算机图形学12——二维图形几何变换
三维图形的几何变换 计算机图形学13——三维图形几何变换
三维图形的投影变换 计算机图形学14——三维图形投影变换

计算机图形学(英语:computer graphics,缩写为CG)是研究计算机在硬件和软件的帮助下创建计算机图形的科学学科,是计算机科学的一个分支领域,主要关注数字合成与操作视觉的图形内容。虽然这个词通常被认为是指三维图形,事实上同时包括了二维图形以及影像处理。


算法

找到一个增长最快的方向,每次增加1,另一个方向增加对应的长度,然后根据DDA算法:

对于x增长快的情况:

对于y增长快的情况:


OpenGL代码

// 数值微分方法绘制直线段
void  DDAline(int  x0, int  y0, int  x1, int  y1) {int  dx = x1 - x0, dy = y1 - y0, epsl, k;   // 横向和纵向上的距离float  x = x0, y = y0, xIncre, yIncre;if (abs(dx) > abs(dy)) epsl = abs(dx);else  epsl = abs(dy);xIncre = (float)(dx) / epsl;yIncre = (float)(dy) / epsl;glBegin(GL_POINTS);for (k = 0; k <= epsl; k++) {glVertex2i((int)(x + 0.5), (int)(y + 0.5)); // 舍入取整x += xIncre;   y += yIncre; // 每次叠加一个增量}glEnd();
}

缺点

涉及到大量的浮点数运算,效率较低,不利于硬件实现。

效果图

运行代码后,调用函数,效果如下:


the end……

直线生成算法(DDA算法)到这里就要结束啦~~到此既是缘分,欢迎您的点赞评论收藏关注我,不迷路,我们下期再见!!

计算机图形学01:直线生成算法(DDA算法)相关推荐

  1. 计算机图形学 Bresenham直线生成算法

    bresenham算法是一种光栅化的直线生成算法,是计算机图形学目前使用广泛的直线扫描转换算法,具体逻辑很简单,就是描点.所以bresenham的算法研究实际上是研究目标点的选择. 实验环境: ope ...

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

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

  3. 计算机图形学-基本图形生成算法

    基本图形生成算法 图元扫描转换 直线段扫描转换 圆弧扫描转换 实区域填充 图形的剪裁 图形反走样 消隐 光栅化算法 线段光栅化算法     DDA算法 中点Bresenham画线算法 Bresenha ...

  4. 计算机图形学实验报告 裁剪,计算机图形学-实验报告三-图形裁剪算法

    <计算机图形学-实验报告三-图形裁剪算法>由会员分享,可在线阅读,更多相关<计算机图形学-实验报告三-图形裁剪算法(9页珍藏版)>请在人人文库网上搜索. 1.图形裁剪算法1. ...

  5. 计算机图形学-扫描转换直线段-直线方程法-DDA算法-中点算法-OPENGL实现-详解

    扫描转换直线段 说明与环境配置 环境配置 扫描转换直线段 方法一: 直线方程法 代码描述: 算法比较简单, 暂无代码. 方法二: 数字差分分析DDA算法 代码描述: 方法三: 中点算法 代码描述: 所 ...

  6. 计算机图形学:直线段的生成算法,VS实现数值微分法和中点Bresenham算法

    实验要求: 实现直线段生成的两种方法: 1) 数值微分法 和 2) 中点Bresenham算法.用户用鼠标点击两个点,两个点都确定后,利用直线段的绘制算法绘制两个点之间的一条直线段.本文章仅涉及算法的 ...

  7. 【计算机图形学】壹 · 光栅图形学之直线段的扫描转换算法

    有两点P0(x0,y0),P1(x1,y1)P_{0}(x_{0},~y_{0}),~P_{1}(x_{1},~y_{1})P0​(x0​, y0​), P1​(x1​, y1​)确定一条线段L(P0 ...

  8. 计算机图形学(1)基本图形算法

    计算机图形学--基本图形算法 光栅图形中点的表示 屏幕坐标系在左上角 地址=(Xmax-Xmin)[每行像素点数]*(Y-Ymin)[行数]+(X-Xmin)[行中位置]+基地址 直线扫描转换算法 假 ...

  9. 计算机图形学(三种画线算法)

    第二章:光栅图形学算法 1.光栅显示器:光栅扫描式图形显示器简称光栅显示器,是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度 2.由来:随着光栅显示器的出现,为了在计算机上处理.显示 ...

最新文章

  1. android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
  2. Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)
  3. 查看linux中的TCP连接数
  4. api 原生hbase_HBase客户端API
  5. 急速JavaScript全栈教程
  6. 鸿蒙2.0操作体验,鸿蒙2.0操作系统正式版-华为鸿蒙2.0操作系统正式版官方预约 v1.0.0-优盘手机站...
  7. java connection 可以有多个statement 吗,JDBC多线程多个statement共享同一个connection
  8. i=1,为什么 (++i)+(++i)=6?
  9. HTML5: 全局属性
  10. Linux中强大的top命令
  11. 计算机基础-计算机系统的安装
  12. JAVA基础语法 - 继承
  13. 不容错过的Multisim14.0语言设置!!
  14. Involution Inverting the Inherence of Convolution for Visual Recognition
  15. 代码设置margintop_如何通过代码设置TextView的Margin参数?
  16. 计算机程序漏洞用英语怎么说,安全漏洞的英文
  17. 带宽与速度的换算(表达式+例子)
  18. php数据结构 链表,php数据结构-单链表
  19. 幻数java题_幻数
  20. Bitmap 贴图加工成 PBR 贴图

热门文章

  1. 有MDF文件和LDF文件之后怎么创建数据库
  2. win10计算机管理没有蓝牙,Win10蓝牙在哪里?Win10蓝牙设置关闭或开启方法图解
  3. 核电站问题 动态规划
  4. 《深渊古纪》古剑奇谭衍生小说 阅读笔记
  5. 云南原乡|坐拥腾冲旅游绝佳位置 是旅居养生度假投资首选
  6. 刚刚,优酷的模版引擎,竟然开源了!
  7. 2014年初款11寸MacBook Air安装Windows 7 64bit操作系统缺少USB3驱动键盘鼠标失效
  8. 缇、像素转厘米的方法
  9. 山西天诚在线教育机构怎么样?靠谱么?
  10. Java SE(5)