上述代码已经实现了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;
    }
}

使用以上修改后的代码,可以绘制斜率为负的直线。

DDA算法实现负斜率直线绘制

原文地址: https://www.cveoy.top/t/topic/lNF5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录