check points inside triangle or on edge with example
    30 views (last 30 days)
  
       Show older comments
    
Good evening everyone
function or coding for finding point is inside triangle or sub triangle or its on edges
thanks for involving your knowledge to be share to answer question
7 Comments
  Roger Stafford
      
      
 on 9 Apr 2016
				I've given the necessary expression as an "Answer" here. It doesn't seem like a very slow method to me.
  Walter Roberson
      
      
 on 9 Apr 2016
				Redwan Dan comments to John D'Errico:
am not here to prove you any thing and the way your answer and close is not nice treat with me if you don't know just don't comment or close
Accepted Answer
  Roger Stafford
      
      
 on 9 Apr 2016
        Suppose P1 = [x1,y1], P2 = [x2,y2], and P3 = [x3,y3] are row vectors giving the coordinates of the three vertices of a triangle, and P = [x,y] is a row vector for the coordinates of a point P. To determine whether P lies inside the triangle P1P2P3 do this:
   P12 = P1-P2; P23 = P2-P3; P31 = P3-P1;
   t = sign(det([P31;P23]))*sign(det([P3-P;P23])) >= 0 & ...
       sign(det([P12;P31]))*sign(det([P1-P;P31])) >= 0 & ...
       sign(det([P23;P12]))*sign(det([P2-P;P12])) >= 0 ;
Point P lies within the triangle if and only if t is true.
5 Comments
  T A
 on 26 Nov 2018
				
      Edited: T A
 on 7 Aug 2019
  
			UPDATED FOR CLARITY
With regard to assessing whether a point is on an edge/edges using the conditional statements given in Roger's answer, 
- P is on a triangle edge when one of the three conditional statements is zero
- P is on a triangle vertex when two of the three conditional statements are zero
With regard to computational efficiency, the process can be costly if you're searching across many triangles.  In such a case, the easiest thing to do is to only perform the calculations when P is within the bounding box of the current triangle: 
Ptri=[P1;P2;P3];
if P(1)<=max(Ptri(:,1))&&P(1)>=min(Ptri(:,1))...
 &&P(2)<=max(Ptri(:,2))&&P(2)>=min(Ptri(:,2))
   %do the suggested calculations...
end
Evaluating this conditional statement is very, very cheap.  
  Muhamad Amirulfaris Abdullah
 on 6 Jul 2019
				Hi there. what was the conditional statement that you were reffering to?
More Answers (1)
  Gary Bikini
 on 12 Jun 2021
        You can use the built-in function 
[in,on]=inpolygon(xq,yq,xv,yv)
0 Comments
See Also
Categories
				Find more on Linear Algebra in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





