File Exchange

image thumbnail

2D polygon interior detection

version 1.1 (24.2 KB) by

Detect a whereas a point is interior or exterior to a 2D polygon

5 Downloads

Updated

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 (6)

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

Roger GALLOU

lgstarn

David

David (view profile)

Bruno Luong

Bruno Luong (view profile)

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

Matt J

Matt J (view profile)

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

Change the criteria to trigger the presorting step

MATLAB Release
MATLAB 7.10 (R2010a)
Acknowledgements

Inspired: Flow Cytometry GUI for Matlab

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video