File Exchange

image thumbnail

2D polygon interior detection

version 1.1.0.0 (24.2 KB) by Bruno Luong
Detect a whereas a point is interior or exterior to a 2D polygon

8 Downloads

Updated 07 Jun 2010

View License

This function tries to improve the slow Matlab INPOLYGON function.

There are few other fast codes on FEX (e.g., by Darren Engwirda). After exploring many different ways, I come to the conclusion that Darren Engwirda's approach is close to optimal. So here you'll find a general method that share many common aspects, but implemented in C-Mex. I have makes few contributions: (1) a lean C-implementation, (2) Using Matlab SORT and HISTC for binning, (3) Derive an empirical rule when to apply the sorting, (4) a more rigorous on-boundary detection.

Comments and Ratings (12)

Why it is giving me blank output? My data and code is ok

Bruno Luong

Reema, you need

1. Having the C compiler installed
2. to compile the C-mex file by runing insidepoly_install.m

I'm getting this error where is insidepoly_dblengine?
Undefined function or variable 'insidepoly_dblengine'.

Error in insidepoly>insidepoly1 (line 371)
[in on] = insidepoly_dblengine(x, y, Px1, Py1, Px2, Py2, ontol, ...

Error in insidepoly (line 17)
mask =insidepoly1(X,Y,rx,ry);

Philippe

Really fast and gives same results as inpolygon Matlab version.

Alex Barnett

This code is great. 100x faster on large-scale problems than even the latest version of MATLAB I have (R2015b), amazingly! You can run my tests (within mpspack) at:
https://github.com/ahbarnett/mpspack/blob/master/test/testinpolywrapper.m

lgstarn

David

Bruno Luong

To Matt: this is algorithm designed for for generic polygons (as with INPOLYGON)

Matt J

Does this submission apply to convex polygons or general ones? If the latter, there should be a way to make it faster if the polygon is known a priori to be convex. Perhaps an input parameter to enable this...

Updates

1.1.0.0

Change the criteria to trigger the presorting step

MATLAB Release Compatibility
Created with R2010a
Compatible with any release
Platform Compatibility
Windows macOS Linux