打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[图形学] 画任意斜率的直线(基于 Bresenham 算法) -- EasyX Libr...

图形学中的 Bresenham 画直线算法,以下是该算法的 C 语言实现:

///////////////////////////////////////////////////// 程序名称:基于 Bresenham 算法画任意斜率的直线// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版// 作  者:yangw80 <yw80@qq.com>// 最后修改:2011-4-26//#include <graphics.h>#include <conio.h>// 使用 Bresenham 算法画任意斜率的直线(包括起始点,不包括终止点)void Line_Bresenham(int x1, int y1, int x2, int y2, int color){int x = x1;int y = y1;int dx = abs(x2 - x1);int dy = abs(y2 - y1);int s1 = x2 > x1 ? 1 : -1;int s2 = y2 > y1 ? 1 : -1;bool interchange = false;	// 默认不互换 dx、dyif (dy > dx)				// 当斜率大于 1 时,dx、dy 互换{int temp = dx;dx = dy;dy = temp;interchange = true;}int p = 2 * dy - dx;for(int i = 0; i < dx; i++){putpixel(x, y, color);if (p >= 0){if (!interchange)		// 当斜率 < 1 时,选取上下象素点y += s2;else					// 当斜率 > 1 时,选取左右象素点x += s1;p -= 2 * dx;}if (!interchange)x += s1;				// 当斜率 < 1 时,选取 x 为步长elsey += s2;				// 当斜率 > 1 时,选取 y 为步长p += 2 * dy;}}// 主函数void main(){initgraph(640, 480);// 测试画线Line_Bresenham(100, 1, 1, 478, GREEN);Line_Bresenham(1, 478, 638, 1, GREEN);// 按任意键退出getch();closegraph();}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Bresenham直线算法与画圆算法 (转)
Bresenham快速画直线算法
​LeetCode刷题实战223:矩形面积
友元------求两点之间的距离
在OpenCV中自适应确定canny算法的分割门限 - OpenCV学习 - stone'...
深度优先搜索(续)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服