计算具有已知斜率的线上的下一个点

时间:2011-10-31 00:00:36

标签: graphics geometry line equation linear

根据线方程y =(m * x)+ c。如果我知道斜率(m)并且我知道线穿过一个点(cx,cy)。我想知道cx,cy之前和之后的同一行的下一个点,我该如何计算它们。

2 个答案:

答案 0 :(得分:1)

在C ++中:

通过执行

计算其他点
extrapolate line(m, cx, cy);
double y_before  = line.y(cx - 1);  // for example
double y_after   = line.y(cx + 1);

http://ideone.com/BELNc上看到它(两个例子)

struct extrapolate
{
     extrapolate(double slope, double x1, double y1) 
         : _slope(slope), _x1(x1), _y1(y1) 
     {
     }

     double y(double x) const // return y for given x
     {
          return _y1 + (x-_x1)*_slope;                  
     }

  private:
     double _slope, _x1, _y1;
};

答案 1 :(得分:0)

您是否尝试在基于像素的显示屏上绘制线条?如果是这样,可能会对Bresenham's algorithm稍作修改。请注意,原始算法需要两个点作为输入,并在它们之间绘制线并利用这一点,以便提供一个非常优雅的解决方案,不使用浮点运算。在你的情况下,你可能需要使用浮点运算,因为我想你的斜率m不一定是整数。

它的要点,简而言之,根据您所在的象限,您总是可以在两个点之间进行选择(请参阅维基页面上的算法部分)。你做的是选择一个更接近实际线的那个。这就是它。