DDA算法实现负斜率直线绘制
上述代码已经实现了DDA算法,可以用来绘制斜率为正的直线。如果要绘制斜率为负的直线,只需要在计算xIncre和yIncre时,将dx和dy的符号取反即可。修改后的代码如下:
void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1)
{
int dx = X1 - X0;
int dy = Y1 - Y0;
int epsl = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
float xIncre = -(float)dx / (float)epsl; //注意dx和dy的符号取反
float yIncre = -(float)dy / (float)epsl; //同上
float x = X0;
float y = Y0;
for (int k = 0; k <= epsl; k++)
{
DrawPixel(int(x + 0.5), int(y + 0.5)); //注意四舍五入取整
x += xIncre;
y += yIncre;
}
}
使用以上修改后的代码,可以绘制斜率为负的直线。
原文地址: https://www.cveoy.top/t/topic/lNF5 著作权归作者所有。请勿转载和采集!