3

誰か助けてください。直線の方程式とゼロ切片を紙で解く方法は理解していますが、それをコードに変換するのは難しいです。より具体的には、線が特定の X または Y 座標と交差する点を 2 つの異なる関数で計算する必要があります...

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

そのためCalcLineYIntercept、線が交差するポイントの X 座標が返されyinterceptます (ゼロである必要はありません)。代数方程式をコードに変換するのに問題があります (もちろん、C++ は代数言語であることは理解していますが、コード自体は単純に変数を分離するわけではありません)。これを達成する簡単な方法はありますか?

どうもありがとうございました

4

2 に答える 2

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 を逆にして、他の関数を取得します。

于 2010-10-29T12:14:12.653 に答える
0

yintercept線のy座標から減算し、既知の数学を使用してy = 0のときのxを解きます。xintercept

于 2010-10-29T12:08:38.960 に答える