Draw a line between two points
Afficher commentaires plus anciens
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.
5 commentaires
Evan
le 17 Juil 2013
How are your points arranged in the vector you provide? Is this a 3d line? Are they arranged [x1 y1 z1 x2 y2 z2...]?
Okay. You say you have three points, but your array seems to contain eight. Are you saying you only want to consider points where your y value is not zero? That is, you would plot a line through (1,5.2) and (5,9.9) then see if (9,12.1) is above or below the line?
I'll go ahead and submit a solution under this assumption. If I'm mistaken, just let me know any I'll modify it as needed.
Artyom
le 17 Juil 2013
Réponse acceptée
Plus de réponses (3)
Iain
le 17 Juil 2013
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
Kiran Sagar
le 17 Juil 2013
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
Artyom
le 17 Juil 2013
0 votes
Catégories
En savoir plus sur Annotations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!