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

注:startp, 和endp 是线段的两个端点(包含x轴坐标和y轴坐标),fillOnePixel() 函数用来绘制一个像素。实现直线生成算法的绘直线函数:

void  drawLine(CPoint startp, CPoint endp){}


数值微分法:

void drawLine(CPoint startp, CPoint endp)
{double increx, increy, x, y, length;if (abs(endp.x - startp.x) > abs(endp.y - startp.y)){length = abs(endp.x - startp.x);}else{length = abs(endp.y - startp.y);}increx = (endp.x - startp.x) / length;increy = (endp.y - startp.y) / length;x = startp.x;y = startp.y;for (int i = 1; i <= length; i++){fillOnePixel(x, y);x += increx;y += increy;}
}

中点Bresenham算法:

void drawLine(CPoint startp, CPoint endp)
{int dx = endp.x - startp.x;int dy = endp.y - startp.y;int ux = ((dx > 0) << 1) - 1;int uy = ((dy > 0) << 1) - 1;int x = startp.x, y = startp.y, eps = 0;dx = abs(dx);dy = abs(dy);if (dx > dy){for (x = startp.x; x != endp.x; x += ux){fillOnePixel(x,y);eps += dy;if ((2 * eps) >= dx){y += uy;eps -= dx;}}}else{for (y = startp.y; y != endp.y; y += uy){fillOnePixel(x, y);eps += dx;if ((2 * eps) >= dy){x += ux;eps -= dy;}}}
}

运行效果:

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

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

    计算机图形学直线段的生成算法C++实现,包括:DDA,中点画线,改进的Bresenham画线 文章目录 1.实验目的和内容 1.1实验目的 1.2实验内容 2.算法原理 2.1 DDA(数值微分算法) ...

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

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

  3. 计算机图形学直线算法程序,计算机图形学直线生成算法实现.doc

    计算机图形学直线生成算法实现.doc (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 实验二直线生成算法实现班级08信计学号80姓名 ...

  4. 【计算机图形学】基于OpenGL的中点Bresenham算法画直线

    学习过三种画直线的方法(DDA.中点Bresenham算法.改进的中点Bresenham算法)后,想着实际操作一下如何能够实现,OpenGL无疑是很好的选择,在老师的推荐下,我尝试着用OpenGL来实 ...

  5. 计算机图形学04:中点Bresenham算法画椭圆

    作者:非妃是公主 专栏:<计算机图形学> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文章目录 专栏推 ...

  6. 计算机图形画圆弧的方法,计算机图形学_圆弧的生成

    <计算机图形学_圆弧的生成>由会员分享,可在线阅读,更多相关<计算机图形学_圆弧的生成(19页珍藏版)>请在人人文库网上搜索. 1.计算机图形学,ComputerGraphic ...

  7. 计算机图形学曲线生成原理,计算机图形学_曲线及生成.ppt

    计算机图形学_曲线及生成 华中理工大学计算机学院 陆枫 99-7 1999年7月 7.2.1 曲线的表示要求 1)唯一性 2)几何不变性 3)易于定界 4)统一性 5)易于实现光滑连接 6)几何直观 ...

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

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

  9. 计算机图形学-抛物线的中点Bresenham算法

    抛物线 f ( x ) = a x 2 f(x)=ax^2 f(x)=ax2的中点Bresenham算法 语言:matlab 画图:plot 1 抛物线的特征 通常定义抛物线为到一条直线(准线)和直线 ...

最新文章

  1. [UWP小白日记-3]记账项目-1
  2. 这个需求很简单,明天上线没问题吧?要不要怼回去?
  3. STM32的时钟系统RCC详细整理
  4. 轻芒阅读距离今日头条还差一个即刻
  5. oracle事物的传播属性,spring事务的隔离级别和传播属性
  6. Nacos-Nacos和Eureka的对比
  7. 高版本(3.9版本)python在anaconda安装opencv库及skimage库(scikit_image库)诸多问题解决办法
  8. 突然发现被点名(理想恋人游戏)
  9. java中byte,String,InputStream之间的转换
  10. ROS小白——软件安装(1)
  11. 安装 Android Studio 2.3 详细过程及错误解决
  12. 标题在图表上_图与表,让你的图表更简单清晰易读,告诉你怎么设置图表
  13. Java-Android 之Hello World
  14. Atitit 企业6大职能 attilax总结
  15. 三菱modbusRTU通讯实例_编程实例 | 台达PLC控制伺服项目接线及程序案例
  16. 中国的北斗,世界的北斗|hightopo卫星发射demo
  17. 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT
  18. css3实现缺角四边形_利用CSS3实现折角效果实例源码
  19. 华为的海外员工生活写实
  20. 注水、占坑、瞎掰:起底机器学习学术圈的那些“伪科学”(附链接)

热门文章

  1. SQL基础-子查询EXISTSUNION
  2. 金融市场源码超市app消费超市团队招募推广佣金源码
  3. 简单说说对QT中moveToThread实现多线程操作的理解
  4. 在TikTok上做品牌营销,看37Games游戏出海之道
  5. 【已解决】SQL PLUS出现协议适配器错误
  6. 上海老大杜月笙——教你看穿一个人...
  7. JS中的栈内存和堆内存
  8. 【小林课堂】【光学】平面镜成像
  9. win7下如何进入linux,win7系统怎么进入安全模式
  10. 《Python编程:从入门到实践》学习笔记——第11章 测试代码