中点画线算法

 

在网上看中点画线算法,很多说法是中点画线类似于Breshehanm画线。

 

但是助教说的中点画线是寻找直线两端点的中点进行画点,然后分别递归左右半段直线。

 

当年不好好学习,递归掌握的不好,现在自己试了试,可谓小费时。

 

代码如下:

 

 

/************中点画线***************/ void CDrawLine::DrawMPLine(CPoint a, CPoint b, CDC * pDC) { CPoint ptMiddle; ptMiddle.x = (a.x + b.x) / 2; ptMiddle.y = (a.y + b.y) / 2; if((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y) <= 2) { pDC->SetPixel(a.x, a.y, RGB(255, 0, 0)); } else { DrawMPLine(a, ptMiddle, pDC); DrawMPLine(ptMiddle, b, pDC); } }

 

 

风格不好,参数CDC * pDC是使用的OnDraw函数中的CDC指针,因为该函数只在OnDraw函数中调用了。

想要去掉该参数的话自己在函数体内部生命CDC指针,使用完后delete就行了。

 

中点画线算法_第1张图片

 

 

你可能感兴趣的:(中点画线算法)