Bresenham画圆 正负画圆法 中点画圆法
这里做些代码的归纳
具体关于三种算法的区别,百度找找
其中的putpixel()函数为easyx库里面的绘点函数
// 使用 Bresenham 画圆法
void Circle_Bresenham(int x, int y, int r, int color)
{int tx = 0, ty = r, d = 3 - 2 * r;while (tx <= ty){// 利用圆的八分对称性画点putpixel(x + tx, y + ty, color);putpixel(x + tx, y - ty, color);putpixel(x - tx, y + ty, color);putpixel(x - tx, y - ty, color);putpixel(x + ty, y + tx, color);putpixel(x + ty, y - tx, color);putpixel(x - ty, y + tx, color);putpixel(x - ty, y - tx, color);if (d < 0) // 取上面的点d += 4 * tx + 6;else // 取下面的点d += 4 * (tx - ty) + 10, ty--;tx++;}
}// 正负画圆法
void Circle_PN(int x, int y, int r, int color)
{int tx = 0, ty = r, f = 0;while (tx <= ty){// 利用圆的八分对称性画点putpixel(x + tx, y + ty, color);putpixel(x + tx, y - ty, color);putpixel(x - tx, y + ty, color);putpixel(x - tx, y - ty, color);putpixel(x + ty, y + tx, color);putpixel(x + ty, y - tx, color);putpixel(x - ty, y + tx, color);putpixel(x - ty, y - tx, color);if (f <= 0)f = f + 2 * tx + 1, tx++;elsef = f - 2 * ty + 1, ty--;}
}// 中点画圆法
void Circle_Midpoint(int x, int y, int r, int color)
{int tx = 0, ty = r, d = 1 - r;while (tx <= ty){// 利用圆的八分对称性画点putpixel(x + tx, y + ty, color);putpixel(x + tx, y - ty, color);putpixel(x - tx, y + ty, color);putpixel(x - tx, y - ty, color);putpixel(x + ty, y + tx, color);putpixel(x + ty, y - tx, color);putpixel(x - ty, y + tx, color);putpixel(x - ty, y - tx, color);if (d < 0)d += 2 * tx + 3;elsed += 2 * (tx - ty) + 5, ty--;tx++;}
}
Bresenham画圆 正负画圆法 中点画圆法相关推荐
- c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法
在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...
- [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法
首先是Windows10 + Visual Studio 2019 搭建OpenGL环境可以查看如下链接: 萌新向!!!Windows10 + Visual Studio 2019 搭建OpenGL环 ...
- 计算机图形学之画圆(中点画圆法、Bresenham画圆法)
参考学习了一些前辈的代码,总结了以下这个,感谢前人栽树,同时欢迎交流. 整个画圆利用了圆的八对称性,故只需画出八分之一圆就可利用对称性就可以画出整个圆. 专门写了一个函数来画圆的点,其中(x0,y0) ...
- 【OpenGL C++】画一个空心汉字和一个圆,并填充汉字(中点画线法,中点画圆法,种子填充法)
内容:画一个空心汉字和一个圆 设计一个画任意直线和圆的算法,可选所学的任一图形扫描转换算法(中点或bresenham算法),不能使用任何画线/画圆的API: 使用画线算法实现空心汉字的绘制,汉字必须为 ...
- Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形
OpenCV 中的绘图函数 使用 OpenCV 绘制不同几何图形,其中包括的函数有 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2. ...
- java左手画圆右手画方_左手画圆右手画方900字作文
左手画圆右手画方900字作文 圆,亦始亦终,柔曲多变. 方,公平公正,有棱,有角,有个性. 方与圆,不只是形状,亦是两种性格,两种态度,两种人生. 方的人脾气耿直,公正严苛: 圆的人机智多变,善于处世 ...
- opencv画圆和画椭圆的联合作战
效果图如上: # 画圆和画椭圆的联合作战 WINDOW_WIDTH = 200 #定义窗口大小 def DrawDilledCircle(img,center):thickness = -1lineT ...
- Android 自定义view 图片编辑(画圆,画长方形,手势缩放)
Android 自定义view 图片编辑(画圆,画长方形,手势缩放) package com.bridgetek.yqm.view; import android.annotation.Suppres ...
- Windows下并发地画圆和画方
hust操作系统原理实验:4.5(实验目的:熟悉Window线程创建过程)在windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用CreateThread函数实现"并发地 ...
最新文章
- ios开发中计算代码运算时间_iOS日历、日期、时间的计算
- dos显示磁盘剩余空间
- 出生日期范围的Sql语句_【呕心总结】python如何与mysql实现交互及常用sql语句
- 对勾函数_这16个Excel函数,帮你完成80%的数据统计工作
- creo数控编程怎么样_CREO数控编程NC图文教程 -
- STM8L中断线和中断端口使用方法
- YOLOV5 网络模块解析
- shell中expr的使用介绍
- wstmart不错。可以用用
- 常用RL算法的主要特性
- 王桂林 C++基础与提高 练习题——格式时钟输出(实时的,精确到秒)
- 91免费视频Redis+Lua解决高并发场景在线秒杀问题
- 对象及变量的并发访问(案例加总结)--学习笔记
- video dispose
- 卸载adobe XD 插件
- 记SWPU2021 GFCTF线下AWD赛
- Linux设备树led,linux设备树下LED灯控制
- PostgreSQL + Postgis
- 计算机机房如何批量重装,全自动网刻工具 — 机房批量安装系统必备
- 软件架构师应该知道的97件事
热门文章
- 颠覆者-读周鸿祎新书
- 利用sqlmap注入获取网址管理员账号密码
- 抽象类和具体类的区别
- Git git update-index --assume-unchanged
- 37岁Android程序员裸辞,四个月被497家公司拒绝,问猎头后懵了
- 压力测试软件 loadr,初学abench压力测试 - 玄大冰 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- 信号完整性(SI)电源完整性(PI)学习笔记(二十七)S参数在信号完整性中的应用(二)
- 主机名 域名 网站名 URL
- 记忆英语单词方法20种
- Echarts曲线渐变色lineStyle