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.
Bruno Luong (2021). 2D polygon interior detection (https://www.mathworks.com/matlabcentral/fileexchange/27840-2d-polygon-interior-detection), MATLAB Central File Exchange. Retrieved .
A good order of magnitude quicker than inbuilt polyshape isinterior function especially when multiple points (literally 10's of 1000) are queried at time.
Why it is giving me blank output? My data and code is ok
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)
Really fast and gives same results as inpolygon Matlab version.
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:
To Matt: this is algorithm designed for for generic polygons (as with INPOLYGON)
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...
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!