DDA算法画直线,该如何解决
DDA算法画直线
希望在表格中采用DDA算法画直线,运行效果是,能够在表格上看出由算法生成的点形成直线的效果,一般情况下,形成
的直线应该成阶梯状(即一条锯齿线),可是VC中的像素间距太小,人视觉上无法看出它的阶梯状,而是一条很平滑的直线,
希望哪位前辈能给出些方法和建议,能视觉上看出由DDA算法画直线的阶梯效果来!!!
------解决方案--------------------
上面的代码k求错了,重新贴一下:
希望在表格中采用DDA算法画直线,运行效果是,能够在表格上看出由算法生成的点形成直线的效果,一般情况下,形成
的直线应该成阶梯状(即一条锯齿线),可是VC中的像素间距太小,人视觉上无法看出它的阶梯状,而是一条很平滑的直线,
希望哪位前辈能给出些方法和建议,能视觉上看出由DDA算法画直线的阶梯效果来!!!
------解决方案--------------------
上面的代码k求错了,重新贴一下:
- C/C++ code
void lineDDA( int x0,int y0,int x1,int y1 ,HDC hdc ) { float k = ( float( y1- y0 ) )/( float( x1 - x0 ) ) ; float y = y0; int x = 0; int i= 0; /** * 调整此抽样间隔,可看到阶梯效果,为1时比较光滑 */ int dx = 1; for( x = x0; x <= x1; x += dx ) { for( long j = 0;j<dx ;j ++ ) { ::SetPixel( hdc,x + j,y,RGB(0,0,0 ) ); } y += k; } }