void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1) { // 定义变量 int D; // 判定变量 int dx,dy; // x、y方向的增量 int x,y; // 当前像素点的坐标

// 计算增量和初始坐标
dx=X1-X0;
dy=Y1-Y0;
x=X0;
y=Y0;

// 判断斜率
if(dx>dy) // 斜率小于1
{
    D=dx-2*dy; // 初始化判定变量
    while (x<=X1) // 沿x轴方向画点
    {
        DrawPixel(x,y); // 画像素点
        if(D<0) // 判定
        {
            y=y+1; // y坐标加1
            D=D+x*dx-2*dy; // 更新判定变量
        }
        else
        {
            D=D-2*dy; // 更新判定变量
        }
        x++; // x坐标加1
    }   
}
else // 斜率大于等于1
{
    D=dy-2*dx; // 初始化判定变量
    while(y<=Y1) // 沿y轴方向画点
    {
        DrawPixel(x,y); // 画像素点
        if(D<0) // 判定
        {
            x++; // x坐标加1
            D=D+2*dy-2*dx; // 更新判定变量
        }
        else
        {
            D=D-2*dx; // 更新判定变量
        }
        y++; // y坐标加1
    }
}

}

void CExperiment_Frame_OneView::Mid_Bresenham_Horizontal(int X0, int Y0, int X1) { // 定义变量 int x; // 当前像素点的x坐标

// 计算初始坐标
x=X0;

while (x<=X1) // 沿x轴方向画点
{
    DrawPixel(x,Y0); // 画像素点
    x++; // x坐标加1
}   

}

void CExperiment_Frame_OneView::Mid_Bresenham_Vertical(int X0, int Y0, int Y1) { // 定义变量 int y; // 当前像素点的y坐标

// 计算初始坐标
y=Y0;

while(y<=Y1) // 沿y轴方向画点
{
    DrawPixel(X0,y); // 画像素点
    y++; // y坐标加1
}

}

C++ 中点Bresenham算法实现水平、垂直直线生成

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

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