当前位置:C++技术网 > 资讯 > 浅谈DDA算法,中点算法的实现过程

浅谈DDA算法,中点算法的实现过程

更新时间:2016-01-19 20:21:28浏览次数:1+次

这两种算法都是计算机图形学里的内容。具体的我就不阐述了,本人也只是略微涉猎,在这里实现下两种算法。其实说到底,还是利用GDI函数来实现,只不过算法等实际更多的数学知识。

代码:

void CDDAView::DDALine(int x0, int y0, int x1, int y1, int color)
{
	////写入代码////////////
	CDC *pDC=GetDC();
	int x;       
	float dx, dy, y, k;      
	dx = x1-x0;
	dy = y1-y0;       
	k = dy/dx;
    y = y0;         
	for(x=x0; x<=x1; x++)       
	{
	 //DrawPixel(x, int(y+0.5), color);  
		pDC->SetPixel(x,int(y+0.5),color);
        y=y+k;
    }
	ReleaseDC(pDC);
}

 void CDDAView::MidpointLine(int x0,int y0,int x1, int y1,int color)
{
	CDC *pDC=GetDC();
	int a, b, d1, d2, d, x, y;
	a=y0-y1; 
	b=x1-x0;
	d=2*a+b;
	d1=2*a;
	d2=2* (a+b);
	x=x0;
	y=y0;
	//drawpixel(x, y, color);
	pDC->SetPixel(x,y,color);
	while (x<x1)
	{ 
		if (d<0)   
		{
			x++;
			y++;
			d+=d2; 
		}
		else      
		{
			x++;
			d+=d1;
		}
		pDC->SetPixel(x,y,color);
	}
}
在头文件中:
void DDALine(int x0,int y0,int x1,int y1,int color);
	void MidpointLine(int x0,int y0,int x1, int y1,int color);
	int DDAclr,Midclr;
实现文件.cpp中的构造函数:
DDALine(50,50,100,100,DDAclr);
	MidpointLine(150,150,200,200,Midclr);