图形学基本算法:Bresenham算法

Bresenham直线算法 阅读详情

直接上代码VS2015 C#编写

#include"stdafx.h"
#include <GL/glut.h>
#include <iostream>
#include <cmath>
//LML SPQ写于2021
void init()
{
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}
void midbr(int x0,int y0,int x1,int y1)
//算法条件:x1>x0,y1>y0,x1-x0>y1-y0,,斜率大于0小于1
//算法缺点:只能绘制斜率为正的直线
{
 int a = y0 - y1, b = x1 - x0;
 int d = 2 * a + b;
 int x = x0, y = y0;

 
 
 glVertex2i(x, y);
 while (x <= x1) {
  glVertex2i(x, y);
  if (d < 0) {
   d = d + 2 * (a + b);
   y++;
  }
  else {
   d += 2 * a;
  }
  x++;
 }


 
}
void display()
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(0.0, 0.0, 0.0);
 glBegin(GL_POINTS);

 midbr(90, 100, 100, 110);
 midbr(90, 110, 100, 110);
 midbr(80, 100, 90, 100);
 midbr(80, 100, 90, 110);
 glEnd();

 glFlush();

}

int main(int argc, char** argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
 glutInitWindowPosition(50, 100);
 glutInitWindowSize(640, 480);
 glutCreateWindow("Bresenham Draw Line");
 init();
 glutDisplayFunc(display);
 glutMainLoop();
 return 0;
}

Bresenham算法结果图:
在这里插入图片描述

直接用Opengl函数画直线:

//以下为函数画直线

#include"stdafx.h"
#include <GL/glut.h>
#include <iostream>
#include <cmath>
//测绘1803,李明路631801110312
void init()
{
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluOrtho2D(0.0, 200.0, 0.0, 150.0);

}
void display()
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(1.0, 0.0, 0.0);
 glBegin(GL_LINES);
 glVertex2i(100, 40);
 glVertex2i(100, 90);
 glVertex2i(100, 90);
 glVertex2i(60, 90);
 glVertex2i(60, 90);
 glVertex2i(60, 40);

 
 glVertex2i(60, 40);
 glVertex2i(100, 40);
 glEnd();

 glFlush();

}

int main(int argc, char** argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
 glutInitWindowPosition(50, 100);
 glutInitWindowSize(640, 480);
 glutCreateWindow("LINE DARW");
 init();
 glutDisplayFunc(display);
 glutMainLoop();
 return 0;
}


Bresenham直线生成算法详解 Bresenham算法详细推导过程 阅读详情

相关推荐

图形学 (一): 画线算法DDA和Bresenham

画线算法前言API介绍DDA代码效果图Bresenham代码效果图中点画线算法代码注意事项效果图总结Bresenham 循环体内指令DDA 循环体内指令 前言 我们老师竟然还在用MFC,一开始我是震惊的,后来参考了很多国内的教材发现都是MFC。。(QB对不起! 该图形学系列博客的环境是VC++6.0 &amp;amp;amp;amp; MFC &amp;amp;amp;amp; OpenGL,Mac上装一个Windows XP虚拟机,适应一段时...

王成昊的博客 3278

[计算机图形学]Bresenham画线算法的C语言代码

C语言实现Bresenham画线算法

m0_63018959的博客 847

图形学算法实战:从Bresenham到扫描线的光栅化优化

本文深入探讨图形学中的光栅化算法优化,从经典的Bresenham算法到高效的扫描线填充技术。通过实战案例展示如何利用整数运算、SIMD指令集等技巧提升渲染性能,并解析现代GPU的光栅化硬件加速原理,为图形开发者提供实用的优化策略。

weixin_30919429的博客 600

直线绘制算法-Bresenham算法

该算法相较于其他直线绘制算法摆脱了直线方程式的使用,通过换元的思想实现整数加法的迭代。 一.Bresenham算法

SX2101111的博客 2万+

计算机图形学实验一:直线的Bresenham算法和DDA算法实现

计算机图形学实验一:直线的Bresenham算法和DDA算法实现 解救众多被计算机图形学实验所困扰的学生党们,本博客仅粘贴代码,直线的Bresenham算法和DDA算法的原理请自行百度或Google,网上从来不缺原理。 ps :本代码属于硬核坐标放大,改进版坐标放大的方法请看博主另一篇博客计算机图形学实验三:多边形填充算法之活性边表方法实现中的坐标放大方法,比这里面的放大方法好了不下100倍!只是...

weixin_42752761的博客 3723

掌握计算机图形学:DDA与Bresenham算法实战

优化Bresenham算法的目标主要是减少算法的计算复杂度,提升绘图速度,并且尽可能地减少资源消耗。在Bresenham算法中,点的选取是基于决策变量的判断,这涉及到递增的整数比较和递增值的选择。优化方法集中在决策变量的计算、递增步长的选择以及算法的迭代次数减少。Bresenham算法优化通常考虑以下几个方面:1. 减少除法运算,尤其是在比较操作中避免除法。2. 简化递增值的计算,减少因乘法或除法带来的计算负担。

weixin_35750747的博客 1182

Bresenham 算法

一种快速画直线算法

大家好~我是SP_FA~ 3516

图形学实验:实现DDA和Bresenham直线绘制算法

DDA(Digital Differential Analyzer,数字微分分析器)算法是一种在栅格系统中用于计算直线路径点的图形学算法。其核心思想是利用直线的参数方程,通过递增的方式来逐点计算直线上的像素坐标。与Bresenham算法相比,DDA算法更易于理解和实现,尽管它的性能可能不如Bresenham算法高效。硬件加速是指使用专门的硬件组件来加速计算过程,从而减少CPU的负载并提高性能。在图形处理中,GPU(图形处理单元)是最常见的硬件加速工具。

weixin_35019679的博客 1096

【图形学】探秘图形学奥秘:DDA与Bresenham算法的解密与实战

博文“探秘图形学奥秘:DDA与Bresenham算法的解密与实战”深入剖析了图形学中的两种重要算法:DDA(数字差分分析)和Bresenham算法。文章首先介绍了这两种算法的基本原理,阐述了它们在图形学中的关键作用。DDA算法以简洁的数学方式描述直线的绘制,而Bresenham算法则以更为高效的方式处理直线绘制过程。

朝花夕拾 9132

计算机图形学基础算法实验:DDA、Bresenham、中点画圆

本文还有配套的精品资源,点击获取 简介:计算机图形学实验课程将引导学生通过实践掌握三种基础的二维图形绘制算法:DDA直线算法、Bresenham直线和圆绘制算法以及中点画圆算法。这些算法作为图形学领域的基石,在图像处理、游戏开发、CAD等多个领域有着广泛应用。学生将通过实验和代码执行深入理解这些算法,并为深入学习计算机图形学打下良好基础。 1. 计算机图形学定义与...

weixin_32306683的博客 1925

Mac 环境配置jdk、Maven

3、终端打开配置jdk时候建好的脚本文件: open -e .bash_profile。4、查看maven是否安装成功和系统能不能识别maven/mvn命令:⬇️。输入⬇️并保存: 其中第一行JAVA_HOME替换为自己下的jdk路径。,安装编译好的二进制版本,具体安装zip还是tar.gz我看的。5、查看jdk是否安装成功和系统能不能识别java命令:⬇️。至此,我的Mac系统的环境配置jdk、Maven完成!然后就发现我的maven命令还是没作用,不识别,下载后直接安装即可,很快,点几下就OK了。

weixin_42416791的博客 4408

图形学算法(一):Bresenham线段绘制算法

Bresenham线段绘制算法是计算机图形学中高效绘制直线的经典算法。该算法通过整数运算避免了浮点计算,提高了绘制效率,特别适用于硬件实现。文章详细介绍了算法原理、实现步骤(包括初始化与决策变量计算),并提供了Java代码示例。算法优点包括高效性、高精度和简洁性,但仅适用于直线绘制。与其他算法(如DDA)相比,Bresenham算法在性能上更具优势。本文旨在帮助读者深入理解这一经典图形学算法并提升应用能力。

一碗黄焖鸡三碗米饭的博客 1424

Windows平台高效BLE调试工具开发指南

本文为开发者提供了一份在Windows平台上开发高效BLE调试工具的详细指南。文章深入探讨了使用32feet.NET库进行蓝牙低功耗设备扫描、连接、数据通信及进阶功能开发的实战经验,旨在帮助开发者打造功能自定义、性能优化的专属调试利器,显著提升物联网和嵌入式设备的调试效率。

weixin_29201933的博客 256

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

计算机图形学之中点BH算法绘制椭圆——附原理及详细代码

你的问题在于,读书太少而想得太多。 9205

安卓逆向实战:利用Frida-RPC自动化获取大麦演唱会数据

本文详细介绍了如何利用Frida-RPC技术实现安卓逆向自动化,以获取大麦演唱会数据。通过实战演示,从环境搭建、使用Frida动态分析定位核心签名算法,到封装为可复用的Python脚本,完整解析了自动化数据获取的技术路径与工程化思考。

cheese的博客 977

05-SA8155 QNX Display框架及代码分析(1)

显示是非常重要的一个模块,人机交互的桥梁。那么SA8155 Hypervisor显示是如何处理的呢。对处理流程非常的好奇O(∩_∩)O哈哈~。TODO。

静虚待令,有物混成 1万+

Kubernetes AppArmor Profile Loader:通过 DaemonSet 将 AppArmor 配置注入集群节点

AppArmor Profile Loader 是 Kubernetes 仓库 `test/images/apparmor-loader` 目录下的一个概念验证(proof-of-concept)守护进程,它演示了如何把宿主机上的 AppArmor profile 自动加载到 Kubernetes 集群的各个节点上,从而让 Pod 能借助 `container.apparmor.security.

gitblog_00502的博客 530

[ 虚拟专用网 ] IPsce 虚拟局域网(安全的IP协议的虚拟专用网)详解(二) --- 安全联盟SA

???? 博主介绍 ????‍???? 博主介绍:大家好,我是_PowerShell,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 ????点赞➕评论➕收藏 == 养成习惯(一键三连)???? ????欢迎关注????一起学习????一起讨论⭐️一起进步????文末有彩蛋 ????作者水平有限,欢迎各位大佬指点,相互学习进步! 目录 ???? 博主介绍 一、什么是安全联盟 二、协商参数两种方式:(手动、IKE) 1. 手动 2.

qq_51577576的博客 2802

图形学实验一:bresenham算法 画线和画圆

我编程环境用的是codeblock,所以我就在此基础上,做关于此实验的讲解。 首先,先要在codeblocks上配置opencv: http://blog.youkuaiyun.com/dupei/article/details/6428283 配置好后,接着就开始画线和画图了。 一:画线。 先给出介绍一个bresenham画直线算法的博客,讲得很详细了。 http://www.jhmc

sunny_xsc1994的专栏 1万+

2024年12月数据月报

2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例

SmartSi 2654

科研牛马千万不要错过!手把手教你用AI精准匹配真实参考文献,仅需一个专业应用+两个提示词指令

当然也可以借助生成式AI,如GPT-5.2、Gemini 3 Pro粘贴段落,输入设计好的提示词,让模型根据段落内容匹配参考文献,并正确引用到段落合适位置,再按规范格式输出参考文献列表。阅读我提供的【正文文本】,为其中的关键论点寻找真实的、权威的参考文献(优先来源于Nature, Science, IEEE, ACM, PubMed等),并插入引用。若在段落中已经引用好了参考文献,也有参考文献列表,担心引用位置不当或论点、论述逻辑与文献不够契合,则可以用以下结构化提示词,让AI辅助审查。

智能AI让学术科研更容易 1032

图形学实验一:Bresenham 画直线算法

Bresenham's画线算法作图如下: 给定两个点起点P1(x1, y1), P2(x2, y2),如何画它们直连的直线呢,即是如何得到上图所示的蓝色的点。假设直线的斜率0<k>0,直线在第一象限,Bresenham算法的过程如下: 1.画起点(x1, y1). 2.准备画下一个点,X坐标加1,判断如果达到终点,则完成。否则找下一个点,由图可知要画的点要么为当前点的右邻接点,...

black_hole6的博客 2900

SAP物料主数据归档详解(物理删除)

顾问们的回答肯定的统一的不能,只能打上删除标记。物料设置好需要删除的物料号这里我们需要删除的物料是AG88,其中,若不选“考虑无删除标记的物料”,需要将需要归档的物料MM06打删除标记。平时在操作系统过程中经常会不小心创建出很多无用的物料主数据,但是系统只能通过MM06打上删除标记,但是物料最终在系统中还是可以查询到的。6、执行已设置变式的归档程序,执行完毕,点下图中的“Job”,每次执行完归档程序会产生两条作业。然后设置好开始的参数和假脱机的参数,三个都是绿灯就可以执行归档的操作,物理上删除物料主数据。

我小时候很黑的博客 5525

DEV C++图形学实践:从Bresenham算法到三维动画的期末作业指南

计算机图形学是研究如何在计算机中生成、处理和显示图形的学科,其核心在于将数学描述的几何图元转换为屏幕上的像素。经典的光栅化算法,如Bresenham直线算法和中点圆算法,通过高效的整数运算实现了图元的精确绘制,奠定了实时图形渲染的基础。这些算法的技术价值在于其高效性与广泛适用性,是理解更复杂渲染管线的起点。在工程实践中,它们常被应用于二维绘图、CAD软件和游戏开发等场景。本文聚焦于使用DEV C++和graphics.h/EasyX库,通过实现Bresenham算法、扫描线填充、二维/三维变换等核心模块,手

weixin_34293246的博客 328

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java bresenham画直线_图形学笔记: Bresenham画线算法

图形学课本, 按规矩介绍完矩阵行列式, 第一个算法肯定就是Bresenham画线算法了.來我们來看看算法Bresenham是用来画一些不反走样的线段的. 都说了线段肯定有起点和终点, 假设我们:(xf, yf) ==[LINETO]==> (xt, yt)按照一些初中(好像是初中吧忘了)的几何, 这条直线的方程是:yt - yfy - yf = --------- (x - xf)xt - ...

weixin_32515577的博客 794

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

太酷啦 1758

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 数据结构算法总结(c++)
下一篇: 图形学曲面算法:基于Bezier曲线的Bezier曲面绘制
lml spq
博客等级 码龄8年 12粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值