第x行和第n行 - 截距点/ C ++

时间:2010-10-29 11:49:24

标签: c++ line point intercept

有人可以帮助我。我理解一条线的方程以及如何解决纸上的零截距,但我无法将其转换为代码。更具体地说,我需要计算一条线用两个不同的函数拦截任何给定的X或Y坐标的点......

double CalcLineYIntercept(LINE *line, double yintercept) { }
double CalcLineXIntercept(LINE *line, double xintercept) { }

因此,CalcLineYIntercept将返回行截取yintercept的点的X坐标(不一定为零)。我无法将代数方程转换为代码(是的,我理解C ++是一种代数语言,但代码本身并不简单并且孤立变量)。有没有一种简单的方法来实现这一目标?

非常感谢

2 个答案:

答案 0 :(得分:3)

double CalcLineYIntercept(LINE *line, double yintercept) 
{ 
    dx = line->x2 - line->x1;
    dy = line->y2 - line->y1;

    deltay = yintercept - line->y2;
    if (dy != 0) { 
        //dy very close to 0 will be numerically unstable, account for that
        intercept = line->x2 + (dx/dy) * deltay;
    }
    else {
        //line is parrallel to x-axis, will never reach yintercept
        intercept = NaN;
    }
}

反转x和y以获得其他功能。

答案 1 :(得分:0)

从行的 y -coordinates中减去yintercept,然后在 y 时使用您已知的数学解析 x = {Mutatis Mutandis for xintercept