Linear Function: y = mx + b (2 points given) in code
Solution 1
In your posted code, you seem to have made a typo. This:
var m = (point2.Y - point1.Y) / (point2.X + point1.Y);
...should be:
var m = (point2.Y - point1.Y) / (point2.X - point1.X);
Solution 2
You want this:
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;
}
Solution 3
I would have thought that:
var m = (point2.Y - point1.Y) / (point2.X + point1.Y);
should be
var m = (point2.Y - point1.Y) / (point2.X - point1.X);
Gradient is the delta in Y divided by the delta in X.
Solution 4
You've put point1.y twice in the formula for m. Additionally as noticed by Jacob it should be a minus!
Think you want
var m = (point2.Y - point1.Y) / (point2.X - point1.X);
Richard
Updated on June 14, 2022Comments
-
Richard about 2 years
I'm not quite sure what I'm doing wrong, as this should be fairly simple... I have 2 given points plus X from the third - and now I need Y from that third line.
That's a really simple equation: y = mx + b. But because I can't use this in my C#-program (well, I'm sure there's a library for that, but performance matters here), I'm trying to "write the formula out".
My function looks like this:
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; }
Now something in this formula is wrong, because sometimes I don't get the right value. Do you have any idea what I'm doing wrong?