Bresenham

bresenham画线——非并行

#include<glut.h>
#include<math.h>
#include<stdlib.h>
void init (void) {
	glClearColor (1.0,1.0,1.0,0.0);//白色背景
	glPointSize (1.0);//点大小
	glColor3f (1.0,0.0,0.0);//线颜色
	glMatrixMode (GL_PROJECTION);//投影
	gluOrtho2D (0.0,200.0,0.0,150.0);
}
void draw_pixel (int x,int y) { //opengl画点
	glBegin(GL_POINTS);
	glVertex2i(x,y);
	glEnd();
}
void Bresenham(int x0,int y0,int xend,int yend){
	int dx = fabs (xend - x0),dy = fabs (yend - y0);
	int p = 2*dy - dy;
	int twoDy = 2*dy,twodyminuxdx = 2*(dy-dx);
	int x,y;

	if(x0>xend){ //画线方向
		x = xend;
		y = yend;
		xend = x0;
	}
	else {
		x = x0;
		y = y0;
	}
	draw_pixel (x, y);

	while (x < xend) {
		x++;
		if (p < 0)
			p += twoDy;
		else {
			y++;
			p += twodyminuxdx;
		}
		draw_pixel (x, y);
	}
}
void display (void){ //画线
	glClear (GL_COLOR_BUFFER_BIT);//清缓存
	Bresenham(200,200,100,50); //线的初始点
	glFlush (); //刷新画面
}
void main (int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
	glutInitWindowPosition (50, 100);
	glutInitWindowSize (400, 300);
	glutCreateWindow ("Parallel Bresenham Exp.");
	init();
	glutDisplayFunc (display);
	glutMainLoop ();
}
有空得研究一下并行画线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值