To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016
Hi. I have three points [5.2 0 0 0 9.9 0 0 12.1]. How to draw a line through the first two points and find is the third point (12.1) above/below this line.
No products are associated with this question.
P = [1 5.2; 2 0; 3 0; 4 0; 5 9.9; 6 0; 7 0; 8 12.1]; posP = find(P(:,2)); %find where y values aren't zero. C = polyfit(P(posP(1:2),1),P(posP(1:2),2),1); %fit line to first and second nonzero Y = polyval(C,P(posP(3),1)); %find value on line at x-value of third nonzero
if Y == P(posP(3),2) disp('The third point falls on the line') elseif Y > P(posP(3),1) disp('The third point falls above the line') elseif Y < P(posP(3),1) disp('The third point falls below the line') end
This is the raw maths...
point1 = [x1 y1]; point2 = [x2 y2]; point3 = [x3 y3];
m = (y2 - y1) / (x2 - x1); c = y2 - m*x2;
y3_est = m*x3 + c; if y3_est > y3 disp('point below line') elseif y3_est == y3 disp('colinear') else disp('point above line') end
Frame an equation between two of the points of the form y=mx+c. then replace x with the x-cordinate of the point to be checked, compare the resultant y with the point's y cordinate. that's it. supposing your two points forming the line are the first and last rows of the matrix A, and the test point as one of the in between points, here is a probable code:
A = [1 5.2; 2 0; 3 0; 4 0; 5 9.9;]; m = (A(5,2)-A(1,2))/(A(5,1)-A(1,1)); c = A(1,2)-m*A(1,1); y_test = m*A(2,1)+c; if y_test<A(2,2) %%%%% your statements %%%%% else %%%%%your statements%%% end