有人可以帮助我。我理解一条线的方程以及如何解决纸上的零截距,但我无法将其转换为代码。更具体地说,我需要计算一条线用两个不同的函数拦截任何给定的X或Y坐标的点......
double CalcLineYIntercept(LINE *line, double yintercept) { }
double CalcLineXIntercept(LINE *line, double xintercept) { }
因此,CalcLineYIntercept
将返回行截取yintercept
的点的X坐标(不一定为零)。我无法将代数方程转换为代码(是的,我理解C ++是一种代数语言,但代码本身并不简单并且孤立变量)。有没有一种简单的方法来实现这一目标?
非常感谢
答案 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
。