📄 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 + -