如何用c#编写bresenham算法?

如何用c#编写bresenham算法?,c#,graph-algorithm,C#,Graph Algorithm,我是这样写的,但它只在50%的情况下有效。有人能告诉我出了什么事吗 public void Bresenham(int x1,int y1,int x2,int y2,Color c) { double dx = x2 - x1; double dy = y2 - y1; double d = 2*dy-dx; //aux variable double p1

我是这样写的,但它只在50%的情况下有效。有人能告诉我出了什么事吗

public void Bresenham(int x1,int y1,int x2,int y2,Color c)
        {            
            double dx = x2 - x1;
            double dy = y2 - y1;
            double d = 2*dy-dx; //aux variable
            double p1 = 2 * dy ;
            double p2 = 2 * (dy - dx);
            int x = x1;
            int y = y1;
            int xend;
            c = kolor;
            if (x1 > x2)
            {
                x = x2;
                y = y2;
                xend = x1;
            }
            else
            {
                x = x1;
                y = y1;
                xend = x2;
            }
            bitmapa.SetPixel(x, y,c);
            try
            {
                while (x < xend)
                {
                    x++;
                    if (d < 0)
                    {
                        d += p1;
                    }
                    else
                    {
                        d += p2;
                        y += 1;
                    }
                    bitmapa.SetPixel(x, y, c);
                }
            }
public void Bresenham(int-x1,int-y1,int-x2,int-y2,颜色c)
{            
双dx=x2-x1;
双dy=y2-y1;
双d=2*dy dx;//辅助变量
双p1=2*dy;
双p2=2*(dy-dx);
int x=x1;
int y=y1;
int-xend;
c=科洛尔;
如果(x1>x2)
{
x=x2;
y=y2;
xend=x1;
}
其他的
{
x=x1;
y=y1;
xend=x2;
}
设置像素(x,y,c);
尝试
{
while(x

谢谢:)

在第一次拍摄时,您缺少一个案例,当其他坐标应该像现在处理Y一样处理时,您现在处理DY 要理解我的意思,请看
陡峭的


实际上,您的算法只在1/4的情况下有效。

注意:“zmienna pomocnicza”=“辅助变量”。请编辑以用英语发表评论。@Vamana:查看链接中的页面并搜索“陡峭”变量。