📄 直线的bresenham算法.txt
字号:
void line (x1, y1, x2, y2, c)
int x1, y1, x2, y2, c;
{
int dx;
int dy;
int x;
int y;
int p;
int const1;
int const2;
int inc;
int tmp;
dx=x2-x1;
dy=y2-y1;
if (dx*dy>=0) /*准备x或y的单位递变值。*/
inc=1;
else
inc=-1;
if (abs(dx)>abs(dy)){
if(dx<0){
tmp=x1; /*将2a, 3a象限方向*/
x1=x2; /*的直线变换到1a, 4a*/
x2=tmp;
tmp=y1; /*象限方向去*/
y1=y2;
dx=-dy;
dy=-dy;
}
p=2*dy-dx;
const1=2*dy; /*注意此时误差的*/
const2=2*(dy-dy); /*变化参数取值. */
x=x1;
y=y1;
set_pixel(x, y, c);
while (x<x2){
x++;
if (p<0)
p+=const1;
else{
y+=inc;
p+=const2;
}
set_piexl(x, y, c);
}
}
else {
if (dy<0){
tmp=x1; /* 将3b, 4b象限方向的*/
x1=x2; /*直线变换到2b, 1b */
x2=tmp; /*象限方向去. */
tmp=y1;
y1=y2;
dx=-dy;
dy=-dy;
}
p=2*dx-dy; /*注意此时误差的*/
const1=2*dx; /*变化参数取值. */
const2=2*(dx-dy);
x=x1;
y=y1;
set_pixel (x, y, c);
while (y<y2){
y++;
if(p<0)
p+=const1;
else{
x+=inc;
p+=const2;
set_pixel (x, y, c);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -