Graphics 计算具有已知坡度的直线上的下一点
根据直线方程y=(m*x)+c。如果我知道斜率(m),并且我知道直线通过一个点(cx,cy)。我想知道在cx,cy之前和之后同一行上的下一个点,如何计算它们。在C++中: 通过执行以下操作计算其他点:Graphics 计算具有已知坡度的直线上的下一点,graphics,geometry,Graphics,Geometry,根据直线方程y=(m*x)+c。如果我知道斜率(m),并且我知道直线通过一个点(cx,cy)。我想知道在cx,cy之前和之后同一行上的下一个点,如何计算它们。在C++中: 通过执行以下操作计算其他点: extrapolate line(m, cx, cy); double y_before = line.y(cx - 1); // for example double y_after = line.y(cx + 1); 现场观看(两个示例) 你想在基于像素的显示器上画一条线吗?如果是这
extrapolate line(m, cx, cy);
double y_before = line.y(cx - 1); // for example
double y_after = line.y(cx + 1);
现场观看(两个示例)
你想在基于像素的显示器上画一条线吗?如果是这样的话,您可能需要稍微修改一下。请注意,原始算法需要两个点作为输入,并在它们之间画一条线,并利用这一点,以提供一个真正优雅的解决方案,而不使用浮点算法。在您的例子中,可能需要使用浮点运算,因为我认为斜率m不一定是整数 简而言之,它的要点是,根据您所在的象限,您始终可以在两个可以绘制的点之间进行选择(请参见wiki页面上的算法部分)。你要做的是选择一个更接近实际的线。差不多了。“下一步”的步长是多少?这是一个编程问题,而不是一个简单的数学问题?
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;
};