Sang-Ho Yun <Sang-Ho.Yun@jpl.nasa.gov> wrote in message <C82C761E.6F1B%Sang-Ho.Yun@jpl.nasa.gov>... > Can we make matlab decide if a point on a plane is inside a closed polygon? > How do we know if a point is inside or outside the polygon? ==========
For convex polygon's see the routine below. It should be faster than inpolygon because it exploits the convex structure.
function [A,b]=vert2con_special(a) %Finds the expression of a 2D convex polygon as a set of linear inequalities from %a set of vertices % % [A,b]=vert2con_special(a) % %in: % % a: Nx2 matrix whos rows are polygon vertex coordinates. The rows must % must be ordered so that adjacent rows correspond to adjacent vertices % (which will trivially be the case for triangles). % %out: % % [A,b]: Nx1 vector and Nx2 matrix such that A*x<=b if and only if x is a point % inside the polygon % % %Example: Detect whether a point is in a triangle % % %%%data % Vertices=[0 0; 1 0; 0 1]; %vertices of a triangle % p1=[.5;.25]; %a point inside the triangle % p2=[.5;-.25];%a point outside the triangle % % [A,b]=vert2con_special(Vertices); % % >>all(A*p1<=b) %Test if p1 is in the triangle. % % ans = % % 1 % % >>all(A*p2<=b) %Test if p2 in the triangle. % % ans = % % 0