zoukankan      html  css  js  c++  java
  • bresenham 算法生成直线

    struct Point
    {
    Point()
    {
    posx = 0;
    posy = 0;
    }
    Point(int x, int y)
    {
    posx = x;
    posy = y;
    }
    int posx;
    int posy;
    };

    void bresenham(int x1, int y1, int x2, int y2, vector<Point>& path)
    {
    path.clear();
    int dx = abs(x2 - x1);
    int dy = abs(y2 - y1);

    int inc_x = (x2 > x1) ? 1 : -1;
    int inc_y = (y2 > y1) ? 1 : -1;

    int eps = 0;

    Point pos(x1, y1);
    path.push_back(pos);

    int x = x1;
    int y = y1;
    if(dx > dy)
    {
    for(x = x1; x != x2; x += inc_x)
    eps += dy;
    if((eps << 1) >= dx)
    {
    y += inc_y;
    eps -= dx;
    }
    pos.posx = x;
    pos.posy = y;
    path.push_back(pos);
    }
    }
    else
    {
    for(y = y1; y != y2; y+= inc_y)
    {
    eps += dx;
    if((eps << 1) >= dy)
    {
    x += inc_x;
    eps -= dy;
    }
    pos.posx = x;
    pos.posy = y;
    path.push_back(pos);
    }
    }

    pos.posx = x;
    pos.posy = y;

    path.push_back(pos);
    }

  • 相关阅读:
    列表
    break和continue
    第三天下午
    第二天
    简历,面试
    周三&nbsp;景安
    应届生求职优势(我的求职心…

    2013年01月02日
    Click&nbsp;and&nbsp;Drag
  • 原文地址:https://www.cnblogs.com/barfoo/p/6475876.html
Copyright © 2011-2022 走看看