计算机图形学03:改进的中点BH算法

这篇具有很好参考价值的文章主要介绍了计算机图形学03:改进的中点BH算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

作者:非妃是公主
专栏:《计算机图形学》
博客地址:https://blog.csdn.net/myf_666
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

专栏推荐

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

专栏系列文章

文章名称 文章地址
直线生成算法(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)是研究计算机在硬件和软件的帮助下创建计算机图形的科学学科,是计算机科学的一个分支领域,主要关注数字合成与操作视觉的图形内容。虽然这个词通常被认为是指三维图形,事实上同时包括了二维图形以及影像处理。


一、改进缘由

为什么需要改进中点BH算法呢?因为上一篇(计算机图形学02:中点BH算法绘制直线)已经提到,中点BH算法会带来浮点数的问题,而浮点数对于硬件的运算不仅实现复杂,而且运行起来效率低下。因此,我们需要对其进行改进,也就诞生了改进的中点BH算法


二、算法原理

d的含义发生了改变,不再是中点了

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

改进点1将右半部分的0.5去掉了

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++

这样通过改进的BH算法,去掉了小数,这是一种改进方法。上一篇中也存在着去整改进,为什么有两种改进方法呢?(上一篇文章地址:计算机图形学02:中点BH算法绘制直线)

我并不清楚,也没有进一步检索,知道的小伙伴可以把答案放在评论区!我会补上。

但我猜测,最初的BH算法应该是没有进行化整的,后面在实际硬件运算中发现了问题,因而出现了2种改进方法,一种是上文提到的(叫做中点BH算法的化整改进),另一种就是本文提到的,叫做改进的中点BH算法= =。(不过这只是一种猜测……)


三、OpenGL代码实现

// 改进的Bresenham算法绘制直线段(0≤k≤1)
void  Bhline(int  x0, int  y0, int  x1, int  y1) {
	int  x, y, dx, dy, e;
	if (x0 > x1) {				// x0为起始点,x1为终止点
		x = x1; x1 = x0; x0 = x; y = y1; y1 = y0; y0 = y;
	}
	dx = x1 - x0;  dy = y1 - y0;  x = x0;  y = y0;
	e = -dx;
	glBegin(GL_POINTS);
	while (x <= x1) {
		glVertex2i(x, y);
		x++;
		e = e + 2 * dy;			// e = e + 2dx * k
		if (e > 0) {
			y++;
			e = e - 2 * dx;		// e = e - 1
		}
	}
	glEnd();
}

四、实现效果图

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

计算机图形学03:改进的中点BH算法,计算机图形学,算法,OpenGL,图形渲染,c++


the end……

改进的中点BH算法到这里就要结束啦~~到此既是缘分,欢迎您的点赞评论收藏关注我,不迷路,我们下期再见!!

😘😘😘 我是Cherries,一位计算机科班在校大学生,写博客用来记录自己平时的所思所想!
💞💞💞 内容繁杂,又才疏学浅,难免存在错误,欢迎各位大佬的批评指正!
👋👋👋 我们相互交流,共同进步!

:本文由非妃是公主发布于https://blog.csdn.net/myf_666,转载请务必标明原文链接:https://blog.csdn.net/myf_666/article/details/128164331文章来源地址https://www.toymoban.com/news/detail-797955.html

到了这里,关于计算机图形学03:改进的中点BH算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机图形学|直线生成算法】Bresenham画法详解

    Bresenham画法是一种用于计算计算机图形中线条的算法,其原理是沿着所需绘制的线段中的像素点进行递增或递减,来进行准确的点阵绘制。 实现该算法的关键在于确定像素在基准线上的位置,以及在每次迭代时进行相应的调整。该算法比传统的直线算法更快且更准确,在低速

    2024年02月07日
    浏览(37)
  • 【计算机图形学|直线生成算法】中点画线法

    中点画线法(Midpoint Line Algorithm)是一种画线(Line Drawing)算法,用来在计算机屏幕上绘制线条。 它的基本思想是从线段的起点和终点出发,按照一定的规则向终点逐步逼近,并在途中以控制变量的方式得出每个像素点的坐标,从而绘制出所需的线条。 具体实现中,中点画线

    2024年02月04日
    浏览(35)
  • 【Weiler-Atherton算法】 计算机图形学多边形裁剪算法

    源代码: https://github.com/ricar0/Weiler-Atherton-Alogrithm/tree/master 通常来说就是利用多边形来裁剪多边形的一种方法,一般情况下是利用矩形来裁剪凹凸多边形 凸多边形 凹多边形 上面红色划线部分就是裁剪出的部分 OPENGL基础语法 基本上就是一些画线和画多边形的操作,难度较低

    2023年04月09日
    浏览(38)
  • 计算机图形学:直线段裁剪,Cohen-Sutherland算法

    在二维观察中,需要对窗口进行裁剪,即只保留窗口内的图形,去掉窗口外的图形。直线段裁剪即判断直线在窗口内的部分,去除在窗口外的部分(红圈处)。 其基本思想为编码,即对于直线上任一点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0。 编码规则如

    2024年02月07日
    浏览(32)
  • 【计算机图形学】扫面转换算法(DDA算法 & 中点画线算法 & Bresenham画线算法)

    模块1 扫描转换算法 一 实验目的 编写直线、弧线的光栅扫描转换算法,并对线宽与线形的算法加以探讨 用DDA算法、中点画线算法、Bresenham画线算法绘制直线(如果键盘输入数据,给出数据值;如果绘制图案,图案中应包含各种斜率;如果鼠标确定任意两点,给出操作说明)

    2024年04月12日
    浏览(26)
  • 计算机图形学:三次Bezier曲线的绘制(算法原理及代码实现)

    一、实现方案        贝塞尔曲线原理:贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一。它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形。其中起重要作用的是位于曲线中央的控制线。这条

    2024年02月11日
    浏览(37)
  • 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互

    传送门 实现多边形扫描线填充算法,并和鼠标进行交互。 具体原理略过,会贴上完整代码,可直接运行。 环境: vs2019,OpenGL的库(可以搜索如何用vs使用OpenGL的库,可以使用vs自带的插件或者其他方法,很方便) 要点: 1.NET和AET的创建,改动 2.改变鼠标点击和鼠标拖拽的响应

    2023年04月08日
    浏览(39)
  • 【计算机图形学】裁剪算法(Cohen-Sutherland算法 & 中值分割算法 & Liang-Barsky算法)

    一 实验目的 编写直线段、多边形裁剪算法 熟悉Cohen-Sutherland算法、中值分割算法和Liang-Barsky算法的裁剪 二 实验算法理论分析 Cohen-Sutherland 算法:     中值分割算法: 与CS算法一样,首先对直线段端点进行编码,并把线段与窗口的关系一样分为3种情况:全在、完全不在、线

    2024年02月03日
    浏览(30)
  • 【计算机图形学算法工具技巧】用Blender查看三维点云ply文件的点的序号和坐标

    因为用最近在学拉普拉斯曲面编辑的算法,需要查看三维点云ply文件的点的序号和坐标,然后固定或移动这些点的坐标。 这里介绍使用Blender 3.2软件查看三维点云ply文件的点的序号和坐标。 导入ply文件 隐藏不必要的物体(如cube),并将物体模式变成编辑模型!! 选择 gemo

    2024年02月13日
    浏览(53)
  • 计算机图形学实验——利用MFC对话框实现多边形绘制与填充(扫描线填充算法)附源码

    内容概括: 利用基于对话框的MFC项目 实现鼠标点击绘制多边形 实现扫描线算法填充多边形 源码见Yushan-Ji/ComputerGraphics: ECNU2023秋 计算机图形学课程实验代码 (github.com) 通过鼠标交互输入多边形 对各种多边形进行填充,包括边界自交的情况 利用 OnLButtonDown 和 OnRButtonDown 函数,

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包