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

news2024/11/22 11:05:57

在这里插入图片描述

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


一、实现思路

其实曲线微分来看,就是一小段一小段的直线构成的。因此,绘制曲线,其实就是绘制多个直线段,进而实现曲线的绘制(关于对直线的绘制算法原理及代码实现,要查看这篇文章:计算机图形学03:改进的中点BH算法)。

圆也是一样,我们主要采用把他分为四个部分来绘制(按照4个象限去分,每个象限中的部分都相当于一个曲线)。这样,绘制完一个象限,其它部分,就可以简单的通过对称就可以得到了。下面,来看一下详细的步骤。

采用4分法绘制椭圆:
在这里插入图片描述
分为两部分绘制:

  • 上半部分斜率小于1,x总是+1
  • 下半部分斜率大于1,y总是+1
    在这里插入图片描述
    在这里插入图片描述

二、算法原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、OpenGL代码实现代码

// 中点Bh算法绘制椭圆
void   MidBhellipse(int  a, int  b) {
	int   x, y;
	float  d1, d2;
	x = 0;  y = b;
	d1 = b * b + a * a * (-b + 0.25);
	glBegin(GL_POINTS);
	glVertex2i(x, y);     glVertex2i(-x, -y);
	glVertex2i(-x, y);    glVertex2i(x, -y);
	while (b * b * (x + 1) < a * a * (y - 0.5)) {
		if (d1 <= 0) {
			d1 += b * b * (2 * x + 3);
			x++;
		}
		else {
			d1 += b * b * (2 * x + 3) + a * a * (-2 * y + 2);
			x++;
			y--;
		}
		glVertex2i(x, y);     glVertex2i(-x, -y);
		glVertex2i(-x, y);    glVertex2i(x, -y);
	}   /* 上半部*/
	d2 = b * b * (x + 0.5) * (x + 0.5) + a * a * (y - 1) * (y - 1) - a * a * b * b;
	while (y > 0) {
		if (d2 <= 0) {
			d2 += b * b * (2 * x + 2) + a * a * (-2 * y + 3);
			x++;  y--;
		}
		else {
			d2 += a * a * (-2 * y + 3);   y--;
		}
		glVertex2i(x, y);     glVertex2i(-x, -y);
		glVertex2i(-x, y);    glVertex2i(x, -y);
	}
	glEnd();
}

四、实现效果图

利用中点BH算法绘制椭圆后,效果如下所示:

在这里插入图片描述


the end……

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

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

:本文由非妃是公主发布于https://blog.csdn.net/myf_666,转载请务必标明原文链接:https://blog.csdn.net/myf_666/article/details/128164331

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式-分布式事务和分布式锁

分布式事务有哪些解决方案 分布式事务 指事务的参与者、支持事务操作的服务器、存储等资源分别位于分布式系统的不同节点之上。 分布式事务就是一个业务操作&#xff0c;是由多个细分操作完成的&#xff0c;而这些细分操作又分布在不同的服务器上&#xff1b;事务&#xff0c…

数据库(第一天)

文档信息 文档类别正式文档文档编号数据库基础课 1.2-001版本1.2-001文档名称数据库基础课编写负责人/编写时间梁昭东/2023 年 1 月 30 日审核负责人/审核时间年 月 日批准人/批准时间年 月 日 变更记录 日期版本号变更内容修订者2023.01.30v1.2版根据实际情况增删了部分内容…

LINUX【线程概念】

线程线程概念线程的优点线程的缺点线程异常线程用途linux进程和线程线程控制pthread 库创建线程线程等待线程退出线程分离线程互斥线程互斥相关概念线程互斥互斥量互斥量接口初始化互斥量销毁互斥量互斥量的加锁和解锁互斥量实现原理线程概念 线程是进程中的一个执行流 一个进程…

ShonyDanza:如何利用Shodan实现自定义的安全研究与网络防护

关于ShonyDanza ShonyDanza是一款支持自定义且易于使用的安全工具&#xff0c;该工具基于Shodan实现其功能&#xff0c;并且可以利用Shodan的强大能力帮助研究人员实现安全研究、安全测试和安全防护等任务。 ShonyDanza的功能包括&#xff1a; 1、根据搜索条件获取IP 2、根据…

LabWindows CVI 2017开发笔记--串口调试软件实例

一、新建工程 打开LabWindows CVI软件&#xff0c;在桌面新建SerialDebug文件夹用来保存工程文件&#xff0c;在欢迎页点击New–>Project 或者在软件首页点击File–>New–>Project 将Project创建在新的Workspace中&#xff0c;设置完成后点击OK 新建一个用户GUI界…

内存溢出、内存泄露的概述及常见情形

内存溢出&#xff08;OutofMemoryError&#xff09; 简述 java doc 中对 Out Of Memory Error 的解释是&#xff0c;没有空闲内存&#xff0c;并且垃圾收集器也无法提供更多内存。 JVM 提供的内存管理机制和自动垃圾回收极大的解放了用户对于内存的管理&#xff0c;由于 GC&…

functional interface

更优雅 案例 要在TodoTaskRepository写find方法找到对应task列表&#xff0c;传入自定义的如何find 要传入两个参数&#xff0c;返回一个bool&#xff0c;在文档里找这样的functional interface java8官方文档-Package java.util.function BiPredicate是这样的 接口函数是t…

Numpy基础——人工智能基础

文章目录一、Numpy概述1.优势2.numpy历史3.Numpy的核心&#xff1a;多维数组4.numpy基础4.1 ndarray数组4.2 内存中的ndarray对象一、Numpy概述 1.优势 Numpy(Nummerical Python),补充了Python语言所欠缺的数值计算能力&#xff1b;Numpy是其它数据分析及机器学习库的底层库&…

GitLab CI/CD实现代码推送后自动maven打包发布

1、GitLab CI/CD介绍 CI(Continuous Intergration)&#xff1a;即持续集成&#xff0c;将代码的合并、部署、自动化测试都在一起&#xff0c;不断地执行这个过程&#xff0c;并对结果反馈。 CD(Continuous Delivery)&#xff1a;即持续交付&#xff0c;持续交付是一种软件工程方…

别具一格的婚礼,VR全景+婚礼的优势展现在哪里?

随着90后、95后逐渐步入结婚的主力军中&#xff0c;如何策划一场别具一格的婚礼是许多年轻人所头疼的&#xff0c;那么今年我们就可以玩点新潮的&#xff0c;VR婚礼或许是个不错的选择。 VR全景婚礼就是通过全景摄像机对婚礼进行记录&#xff0c;不但可以帮助新人捕捉婚礼的精彩…

对S参数的理解II

本篇文章特别感谢粉丝朋友“千年的呢喃”&#xff0c;他给我推荐了一本书&#xff0c;写的非常好 Micro Wave and RF Design&#xff0c;有需要的朋友自行下载。 之前关于S参数也写过几篇文章了&#xff0c;但一直以来都有一个历史遗漏问题没有解决&#xff0c;那就是&#xf…

ElasticSearch-学习笔记05【SpringDataElasticSearch】

Java后端-学习路线-笔记汇总表【黑马程序员】ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】ElasticSearch-学习笔记02【ElasticSearch索引库维护】ElasticSearch-学习笔记03【ElasticSearch集群】ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】Ela…

【IVIF的超分重建】

Multimodal super-resolution reconstruction of infrared and visible images via deep learning &#xff08;基于深度学习的红外和可见光图像多模态超分辨率重建&#xff09; 提出了一种基于编解码器结构的红外-可见光图像融合方法。图像融合任务被重新表述为保持红外-可见…

2023年3月AMA-CDGA/CDGP数据治理认证考试这些城市可以报名

目前2023年3月5日CDGA&CDGP开放报名的城市有&#xff1a;北京、上海、广州、深圳、杭州、重庆&#xff0c;西安&#xff0c;成都&#xff0c;长沙&#xff0c;济南&#xff0c;更多考场正在增加中… DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业…

Echarts 设置折线图线条样式(虚线+粗细+阴影)

第012个点击查看专栏目录Echarts折线图的lineStyle属性可以设置折线的颜色&#xff0c;粗细&#xff0c;类型&#xff0c;线段末端类型&#xff0c;阴影&#xff0c;透明度&#xff0c;偏移等属性。文章目录示例效果示例源代码&#xff08;共128行&#xff09;相关资料参考专栏…

【Java|多线程与高并发】 使用Thread 类创建线程的5种方法如何查看程序中的线程

文章目录前言线程创建1.继承Thread类重写run()方法如何查看程序中的线程?2.实现Runnable接口3.使用匿名内部类,继承Thread4.使用匿名内部类,实现Runnable5.⭐使用Lambda表达式,创建线程(重要)Thread 的常见构造方法总结前言 在这里主要补充说明一些问题,方便更好地理解下面的…

conda安装nodejs版本过低解决方法

conda命令直接安装nodejs时&#xff0c;可能会由于镜像源中nodejs版本过低导致没法安装高本版的nodejs&#xff0c;导致无法jupyterlab使用一些扩展插件。 解决方法如下&#xff1a;&#xff08;windows环境下直接按提示下载版本安装就行&#xff0c;此处只介绍linux环境的解决…

2023上半年软考中级系统集成项目管理工程师2月25日开班

系统集成项目管理工程师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职…

今天面试招了个28K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在20~30k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不…

2023年上半年软考高项信息系统项目管理师2月25日开班

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…