Bresenham 画圆算法原理

article/2025/3/3 4:45:15

文章目录

    • 前言
    • Bresenham 画圆算法原理
      • 两个近似
      • 构造判别式
      • 圆与网格点的关系
        • 关系由来
        • 关系含义
      • p i p_i pi 递推
      • 画圆
      • 程序伪码
    • 圆与网格点的关系图示

前言

首先简要介绍一下生成圆的方法:

  1. 直接利用圆的方程生成圆
  2. 利用圆的对称性生成圆

方法一由于会涉及到浮点运算等因素,不采取该方案。
ps. 这部分想要知道为什么可以参考 计算机图形学 圆及椭圆的扫描转换_百度文库 前面一点。
方法二的原理如下图,利用圆的对称性,我们只需要对一个八分圆进行扫描转换。
在这里插入图片描述

在这里我们不妨选择第一象限上斜率绝对值小于1的那八分圆进行扫描转换,以及假设圆心为 (0, 0) 。也就是下图。
友情提示:圆在某点的斜率是该点处切线斜率。圆心不在 (0, 0) 处的点可以通过平移得到。
在这里插入图片描述

Bresenham 画圆算法原理

如下图,在 0≤x≤y 的 1/8 圆周上,像素坐标 x 值单调增加,y 值单调减少。
设第 i 步已确定 ( x i , y i ) (x_i, y_i) xi,yi是要画圆上的像素点,看第 i+1 步像素点 ( x i + 1 , y i + 1 ) (x_{i+1}, y_{i+1}) xi+1,yi+1应如何确定。下一个像素点只能是 H ( x i + 1 , y i ) H(x_i+1, y_i) Hxi+1,yi或者 D ( x i + 1 , y i − 1 ) D(x_i+1,y_i-1) Dxi+1,yi1中的一个 。
8分圆的某段

具体选哪个就得看 d H 和 d D d_H 和 d_D dHdD 二者的比较了:

  1. d H d_H dH 更小,下一个像素点就选 H ( x i + 1 , y i ) H(x_i+1, y_i) Hxi+1,yi
  2. d D d_D dD 更小,下一个像素点就选 D ( x i + 1 , y i − 1 ) D(x_i+1,y_i-1) Dxi+1,yi1
  3. 一样大,选哪个都行。

比较方法就是做差: d H − d D d_H - d_D dHdD,然后将结果与0进行比较。

那么问题是 d H 和 d D d_H 和 d_D dHdD 二者的值是怎么求得呢?这里就涉及到一个近似:

两个近似

在这里插入图片描述

在这里插入图片描述

近似方法:
将 CH 近似为 d H d_H dH
将 DB 近似为 d D d_D dD

由大图显而易见可以知道 CH 和 DB 的值:
C H = O H − O C = ( x i + 1 ) 2 + y i 2 − R = d H CH = OH - OC = \sqrt{(x_i+1)^2 + y_i^2} - R = d_H CH=OHOC=(xi+1)2+yi2 R=dH
D H = O B − O D = R − ( x i + 1 ) 2 + ( y i − 1 ) 2 = d D


http://chatgpt.dhexx.cn/article/LHWh13vd.shtml

相关文章

Js中读取、移除属性及隐藏组件方法研究

添加、移除组件属性方法: $(".class名").attr("属性名","属性值");//设置指定属性 $(".class名").attr("属性名");//读取指定属性值 or document.getElementById("id值").getAttribute("属性名…

js获取属性值,自定义属性,修改移除属性值

补充&#xff1a;由于不清楚一些属性是内置属性还是自定义属性 所以h5规定 自定义属性使用date-开头作为属性并赋值 案例1: <body><div date-index"1"></div> </body> <script>var div document.querySelector(div);console.log(div…

获取/移除属性值

1.获取属性值&#xff1a; element.属性 获取属性值 element.getAttribute&#xff08;‘属性’&#xff09;&#xff1b; 2.区别&#xff1a; element.属性 获取内置属性值&#xff08;元素本身自带的属性&#xff09; element.getAttribute&#xff08;‘属性’&#xff09;&…

JavaScript移除对象中不必要的属性

Thinking系列&#xff0c;旨在利用10分钟的时间传达一种可落地的编程思想。 业务开发中&#xff0c;我们经常会遇到&#xff1a;基于后端返回接口数据&#xff0c;前端保存到对象 Object 中&#xff0c;前端开发过程中为了一些场景的便利性&#xff0c;需要在该对象中增加相应的…

js移除属性

一、效果 代码 <style>div{width:100px;height: 100px;background-color: red;}.clsP{background-color: #00FF00;}</style><body><input type"button" value"移除属性" id"btn" /><div id"dv" score&q…

合天网安实验室CTF-解密100-Funny Crypto

合天网安实验室CTF-解密100-Funny Crypto 题目描述 tgbnjuy 8ujko9 5rfgy6 相关附件 题目链接 参考解题步骤 字母被围起来的字母图示颜色tgbnjuyh红8ujko9i绿5rfgy6t蓝 提交flag&#xff1a;hit

数字取证之Autopsy ——合天网安实验室学习笔记

实验链接 Autopsy Forensic Browser 是数字取证工具-The Sleuth Kit&#xff08;TSK&#xff09;的图形界面&#xff0c;用于对文件系统和卷进行取证。通过本实验学习文件系统取证的思想与方法&#xff0c;掌握Autopsy的使用。 链接&#xff1a;http://www.hetianlab.com/exp…

【合天网安】CONN.ASP暴库漏洞实验

0x01预备知识 1、概念&#xff1a; 相对路径和绝对路径 绝对路径&#xff1a;例如D&#xff1a;/test/test.mdb 相对路径&#xff1a;例如/test/test.mdb 2、%5C暴库 简单点说&#xff0c;就是在打开页面的时候把网页中的/换成%5C&#xff0c;然后提交就可以得到数据库地址…

【合天网安】FCKeditor 2.4.3文件上传漏洞

【合天网安实验室】FCKeditor 2.4.3文件上传漏洞 编辑器漏洞 常见的文本编辑器有FCKeditor、Ewebeditor、UEditor、KindEditor、XHeditor等&#xff0c;它们包含的功能类似&#xff0c;如图片上传、视频上传、远程下载等。使用这类编辑器减少了程序开发的时间&#xff0c;但也…

摩尔斯电码和栅栏密码 ——合天网安实验室学习笔记

实验链接 通过学习本实验理解摩尔斯电码和栅栏密码的编码解码过程&#xff1b;掌握编写摩尔斯电码的编码解码程序和编写多功能栅栏密码的编码解码程序。 链接&#xff1a;http://www.hetianlab.com/expc.do?ce64d3e661-ebbb-41fd-a220-a17d608f994e 实验简介 实验所属系列…

【合天网安】DoraBox之文件包含及任意文件读取漏洞

【合天网安实验室】DoraBox之文件包含及任意文件读取漏洞 目的&#xff1a; 过DoraBox靶场系列练习&#xff0c;学习任意文件包含、目录限制文件包含及任意文件读取漏洞的利用过程。 实验过程&#xff1a; 1.确保Apache、MySQL服务正常开启 2、查看.txt文本内容 3.使用includ…

合天网安实验室-sql注入实验一

根据指导书我们要先在实验机进入这个网址http://10.1.1.11:81 进入之后会看到三个实例。 实例一 根据指导书的提示来做这一题。后面两个实例也要看这个指导书。 先判断是否存在注入 方法一 在参数后面加上单引号,比如: http://xxx/abc.php?id1’ 如果页面返回错误&#xff…

合天网安《Weekly CTF》第四周

Check your source code 题目介绍 打开靶机&#xff0c;进步网站&#xff0c;是一个登陆框 首先&#xff0c;根据题名的提示&#xff0c;f12&#xff0c;发现存在source.txt 打开source.txt&#xff0c;出现源码 对源码进行分析 <?php $flag "XXXXXXXXXXXX"…

计算机取证之Xplico ——合天网安实验室学习笔记

实验链接 Xplico是一款开源的网络取证分析工具&#xff0c;其分析与呈现的能力非常强大。Xplico可以捕获Internet网络应用层流量&#xff0c;通过流量解析&#xff0c;解析出网络包中的各种应用数据&#xff0c;还原网络数据发送现场。通过本实验学习掌握Xplico使用方法&#…

合天网安实验室CTF-Exp200-Come on,Exploit me!

合天网安实验室CTF-Exp200-Come on,Exploit me! 题目描述 Audrey Tang. ⊙.⊙ 我只能说到这儿了 相关附件 exp200 题目链接 参考解题步骤 1、下载附件先用VSCode打开看看 换个行看看 通过and换行有68行 2、根据题目描述猜测   如果没有接触过perl语言看到这些文本应该…

CTF挑战赛-合天网安实验室

[TOCCTF挑战赛-合天网安实验室逆向解析] http://www.hetianlab.com/CTFrace.html 1.逆向100 修改后缀为.apk 安卓模拟器打开&#xff0c;发现要求输入Password 用Android逆向助手打开&#xff0c;dex转jar&#xff0c;发现明文password 输入&#xff0c;得到flag。 2.逆向200 …

内存取证之Volatility ——合天网安实验室学习笔记

实验链接 Volatility是一款顶级的开源内存取证分析工具&#xff0c;支持Windows&#xff0c;Linux&#xff0c;MaC&#xff0c;Android等系统的内存取证&#xff0c;它由Python编写成&#xff0c;通过本实验学习内存取证的思想与方法&#xff0c;掌握volatility的使用。 链接…

合天网安实验室CTF练习赛之逆向题

最近搞逆向&#xff0c;就做做CTF题吧 挑战地址&#xff1a;http://www.hetianlab.com/CTFrace.html 对linux的逆向还没深入学习&#xff0c;所以re300暂时空着 2017.11.07&#xff1a;竟然还想起有这个事情没完成....,那就现在完成re300吧&#xff1a;合天网安实验室CTF练习…

合天网安实验室CTF-解密200-找茬游戏

合天网安实验室CTF-解密200-找茬游戏 题目描述 diff 相关附件 cry200.zip 题目链接 参考解题步骤 1、下载附件解压后得到一个文件夹&#xff0c;里面有两张图片 2、直接仔细观察未发现不同之处 3、既然表面没有不同&#xff0c;那应该是内部信息不同啦&#xff0c;用binw…

合天网安实验室CTF-Steg150-一段欢快的曲调

合天网安实验室CTF-Steg150-一段欢快的曲调 题目描述 滴滴 相关附件 stego100.wav 题目链接 参考解题步骤 1、下载的附件是一段wav格式的音频&#xff0c;打开听了一下&#xff0c;确实是欢快的曲调。 2、听的时候很奇怪为什么左声道没有声音&#xff0c;直到听到第1分11秒…