基于Opengl的画直线—BresenhamLine算法

画直线基本思想:

假设直线的斜率0<k<1,直线在第一象限,Bresenham算法的过程如下:

1.画起点(x0, y0).

2.准备画下一个点,X坐标加1,判断如果达到终点,则完成。否则找下一个点,由图可知要画的点要么为当前点的右邻接点,要么是当前点的右上邻接点。

  2.1.如果线段ax+by+c=0与x=x1+1的交点y坐标大于(y+*y+1))/2则选右上那个点

  2.2.否则选右下那个点。

3.画点

4.跳回第2步

5.结束


具体的思路网上很多更详细的解释,在这里我主要提供的是基于鼠标操作的画直线程序:

详细可以参考:http://www.cnblogs.com/gamesky/archive/2012/08/21/2648623.html

 

代码如下:

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<gl\glut.h>

using namespace std;
int m0,m1,n0,n1;//声明全局变量,起始坐标和终止坐标
int winwidth=1024,winheight=720;//窗口长宽
void DrawLine();
void MidpointLine(int,int,int,int);
void BresenhamLine(int ,int,int,int);
void DrawLine(){
//	MidpointLine(m0,n0,m1,n1);//中心划线法
	BresenhamLine(m0,n0,m1,n1);//BresenhamLine算法

}
/*中心画线法*/
void MidpointLine (int x0,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值