OpenGL鼠标交互 画直线

文章详细介绍了在OpenGL环境下,通过DDA(数字微分分析)、中点画线法和Bresenham算法实现鼠标点击两点并连接成直线的功能。用户可以通过鼠标点击设置起点和终点,程序会自动选用一种算法绘制直线。
摘要由CSDN通过智能技术生成

写三种画直线的方法,任意选择一种,实现鼠标点击两个点,使其连成一条线

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<gl\glut.h>
using namespace std;

int m0, m1, n0, n1;//声明全局变量,起始坐标和终止坐标
//int winwidth = 1024, winheight = 720;//窗口长宽
int winwidth = 800, winheight = 500;//窗口长宽
void DrawLine(); //实际上画直线的函数
void DDALine(int, int, int, int);
void MidpointLine(int, int, int, int);
void BresenhamLine(int, int, int, int);


//数据交换
void swap(GLint& a, GLint& b) { GLint t = a; a = b; b = t; }


//在屏幕上画一个点
void setPixel(GLint x, GLint y)
{
	glBegin(GL_POINTS);
	glVertex2i(x, y);
	glEnd();
}

//实际上画直线的函数
void DrawLine() {
	/*自己选择要用的方法*/
	//DDALine(m0, n0, m1, n1);  //DDA画线法
	//MidpointLine(m0,n0,m1,n1);//中点划线法
	BresenhamLine(m0, n0, m1, n1);//BresenhamLine算法
}

/*DDA画线法*/
void DDALine(int x0, int y0, int x1, int y1)
{
	glClear(GL_COLOR_BUFFER_BIT);//清除窗口显示内容
	int dx, dy, steps, i;
	float x, y, delta_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值