线性函数:代码中y = mx + b(给定2个点)

Ric*_*ard 5 c# math linear-algebra

我不太确定我做错了什么,因为这应该相当简单......我有2个给定点加上第三个X - 现在我需要从第三行得到Y.

这是一个非常简单的等式:y = mx + b.但是因为我不能在我的C#程序中使用它(好吧,我确定它有一个库,但性能很重要),我正在尝试"编写公式".

我的功能看起来像这样:

public static float GetY(Vector2 point1, Vector2 point2, float x)
    {
        var m = (point2.Y - point1.Y) / (point2.X + point1.Y);
        var b = point1.Y - (m * point1.X);

        return m*x + b;
    }
Run Code Online (Sandbox Code Playgroud)

现在这个公式中的某些内容是错误的,因为有时候我没有得到正确的价值.你知道我做错了什么吗?

Jac*_*cob 10

在您发布的代码中,您似乎犯了一个错字.这个:

var m = (point2.Y - point1.Y) / (point2.X + point1.Y);
Run Code Online (Sandbox Code Playgroud)

...应该:

var m = (point2.Y - point1.Y) / (point2.X - point1.X);
Run Code Online (Sandbox Code Playgroud)


Shi*_*hah 5

你要这个:

public static float GetY(Vector2 point1, Vector2 point2, float x)
    {
        var dx = point2.X - point1.x;  //This part has problem in your code
        if (dx == 0)
            return float.NaN;
        var m = (point2.Y - point1.Y) / dx;
        var b = point1.Y - (m * point1.X);

        return m*x + b;
    }
Run Code Online (Sandbox Code Playgroud)