⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plotlinedda.c

📁 Digital Differential Analyzer for Lines PlotLineDDA
💻 C
字号:
	extern void SetPixel (int x, int y);

    typedef void SetPixelFunc (int a, int b);

    void xySetPixel (int x, int y) { SetPixel (x, y); }

    void yxSetPixel (int y, int x) { SetPixel (x, y); }

    void PlotLineDDA (SetPixelFunc* pfPlot, int a1, int a2, int b, int da, int db, int bc) {
        int g1= db + db;
        int g2= g1 - da - da;
        int g= g1 - da;
        for (int a= a1; a < a2; ++a) {
            pfPlot (a, b);
            if (g < 0)
                g= g + g1;
            else {
                g= g + g2;
                b= b + bc;
            }
        }
        pfPlot (a, b);
    }

    void PlotLine (int x1, int y1, int x2, int y2) {
        int dxabs= abs (x2 - x1);
        int dyabs= abs (y2 - y1);
        if (dxabs >= dyabs) {
            if (x1 < x2)
                PlotLineDDA (xySetPixel, x1, x2, y1, dxabs, dyabs, y1 < y2? 1:-1);
            else
                PlotLineDDA (xySetPixel, x2, x1, y2, dxabs, dyabs, y2 < y1? 1:-1);
        } else {
            if (y1 < y2)
                PlotLineDDA (yxSetPixel, y1, y2, x1, dyabs, dxabs, x1 < x2? 1:-1);
            else
                PlotLineDDA (yxSetPixel, y2, y1, x2, dyabs, dxabs, x2 < x1? 1:-1);
        }
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -