MATLAB: Projecting a point into a line

projection

How can I project a point (let's say (50,0)) to a line (y = 5.6x – 7.1)?
Thank you.

Best Answer

You need the equation of both perpendicular lines. You already have the equation for the first line. In your line y = 5.6x - 7.1 the slope is 5.6.
The slope of the second line will just be the perpendicular slope of your first line.
m = 5.6;
b = -7.1;
x = 50;
y = 0;
perpSlope = -1/m;
To get the y intercept of the 2nd line you just need to solve for y=mx+b using your point (x,y)
yInt = -perpSlope * x + y;
Now you've got the two linear equations and you need to find out where they intersect. Here we find the x coordinate of the intersection. m and b are the slope and intercept of line 1, perSlope and yInt are the slope and intercept of line 2.
xIntersection = (yInt - b) / (m - perpSlope);
To get the y coordinate of the intersection, we just plug the x coordinate into one of the equations.
yIntersection = perpSlope * xIntersection + yInt;
Now we can plot it out to make sure it looks rights
figure
plot(x,y, 'rx')
hold on
plot(xIntersection, yIntersection, 'ro')
refline(m, b)
refline(perpSlope, yInt)
axis equal
181211 152914-Figure 1.jpg