Bresenham 生成直线
2019独角兽企业重金招聘Python工程师标准>>>
void BresenhamLine(const QPointF& pt0,const QPointF& pt1,std::vector<QPointF> &line)
{double x=0.0,y=0.0,e=0.0;double x0=pt0.x();double y0=pt0.y();double x1=pt1.x();double y1=pt1.y();double dx=x1-x0;double dy=y1-y0;if(fabs(dy)<=fabs(dx)){if(x1<x0){qSwap(x0,x1);qSwap(y0,y1);}dx=x1-x0;dy=y1-y0;if(y0<=y1){e=-dx;x=x0;y=y0;for(int i=0;i<=dx;i++){line.push_back(QPointF(x,y));x++;e+=2*dy;if(e>=0){y++;e-=2*dx;}}}else{e=dx;x=x0;y=y0;for(int i=0;i<=dx;i++){line.push_back(QPointF(x,y));x++;e+=2*dy;if (e<=0){--y;e+=2*dx;}}}}else{if(y1<y0){qSwap(x0,x1);qSwap(y0,y1);}dx=x1-x0;dy=y1-y0;if(x0<=x1){e=-dy;x=x0;y=y0;for(int i=0;i<=dy;i++){line.push_back(QPointF(x,y));y++;e+=2*dx;if(e>=0){x++;e-=2*dy;}}}else{e=dy;x=x0;y=y0;for(int i=0;i<=dy;i++){line.push_back(QPointF(x,y));y++;e+=2*dx;if(e<=0){--x;e+=2*dy;}}}}
}
转载于:https://my.oschina.net/u/221120/blog/3017971
Bresenham 生成直线相关推荐
- 计算机图形学画直线程序豆丁网,计算机图形学DDA生成直线画法程序.doc
计算机图形学DDA生成直线画法程序 实验一.直线的生成 一.实验目的 掌握DDA直线画法.中点画线法和Bresenham画线法 掌握VC++简单程序设计方法 二.实验内容 根据提供的程序框架,修改部分 ...
- 计算机图形学——生成直线的DDA算法
本博客计算机图形学系列文章索引: 地址:<计算机图形学系列相关文章索引(持续更新)> 数值微分法即DDA法(Digital Differential Analyzer),是一种基于直线的微 ...
- java bresenham画直线_OpenGL中点Bresenham绘制直线算法
本文实例为大家分享了OpenGL中点Bresenham绘制直线算法,供大家参考,具体内容如下 环境 macos xcode编译器 代码 #include #include #include #incl ...
- 计算机图形学之生成直线的DDA算法(C#)
计算机图形学DDA直线算法(C#) 一.直线的生成算法 实质上是一个发现最佳逼近直线的象素系列,并填入彩色数据的过程. 二.DDA算法 一种基于直线的微分方程来生成直线的一种方法. 三.DDA代码程序 ...
- java bresenham画直线_图形学笔记: Bresenham画线算法
图形学课本, 按规矩介绍完矩阵行列式, 第一个算法肯定就是Bresenham画线算法了. 來我们來看看算法 Bresenham是用来画一些不反走样的线段的. 都说了线段肯定有起点和终点, 假设我们: ...
- android 动态生成直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...
- android 动态生成直线,Android SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理 这是一个有点神奇的技术:一副线条构成的画能自动画出自己,非常的酷.SVG 意为可缩放矢量图形(Scalable Vector Graphics),是使用 XML 来描 ...
- 计算机图形学应用基础考试,计算机图形学基础期末考试试题.docx
计算机图形学基础期末考试试 题 一. 填空 1.将多 形外部一点 A 与某一点 B 用 段 接,若此 段与多 形 界相交的次数 ??????????, 点 B在多 形外部.若此 段与多 形 界相交的次 ...
- 计算机图形学实习教程之基本图形的生成(直线DDA算法,直线中点算法,Bresenham画圆算法),利用C#实现,附源码
环境:Win10+Visual Studio 2022 Community 在本次实验中需要用到上一篇文章实验内容的代码及环境,详情请见:传送门 目录 一.实验目的 二.实验过程 1.生成直线的DDA ...
最新文章
- 第6章 I/O复用 select 和 poll 函数
- centos7安装配置ELK(Elasticsearch+Logstash+Kibana)
- Ajax请求SSM后台时提示:Invalid character found in the request target. The valid characters are defined in RF
- 差分放大电路单端输出和双端输出区别以及应用(转载)
- models.ForeignKey( ,on_delete=models.CASCADE) # 关联外键
- need to focus
- Java抽奖抢购算法
- 年度最火的AOA蓝牙室内定位原理
- C# excel转换PDF 包括所有sheet
- 远程springmvc ajax请求乱码,网络编程springMVC解决ajax请求乱码的三种方法
- windows media player 服务器运行失败
- html+css制作静态小米商城页面(含css手动轮播图)
- C++ 仓库管理系统 控制台
- java 操作Zip文件(压缩、解压、加密)
- avenue css,CSS构建的平面建筑布局图
- 【MySql 数据库综合练习01 】
- 0x80073712_win10更新 错误代码: (0x80073712)
- 区块链软件开发公司 区块链的基本原理
- 关于数加服装ERP软件/系统的功能模块与应用的介绍
- 3.JavaWeb基础知识总结
热门文章
- C#中使用MoveTo和Path.ChangeExtension方法实现文件更改后缀名
- Winform中使用代码编写Button按钮的点击事件
- C#中实现视频播放器窗体程序(附源码下载)
- Java中获取Date的昨天代码实现
- SpringBoot+Echarts实现请求后台数据显示饼状图
- mysql的show profile使用总结
- springbatch的reader,如何使用mybatis?使用MyBatisCursorItemReader可以完美解决
- 吐血整理《计算机网络五层协议之物理层(中)》
- 冲刺 (sprint) 评审会议
- 免费下载 |《数字广告投放中虚假流量的排查与判定》白皮书重磅发布