Intersecting polgons True/ False

5 views (last 30 days)
Chris Alkire
Chris Alkire on 21 Apr 2014
Edited: Sean de Wolski on 22 Apr 2014
Hello,
My game is struggling to effectively determine whether it has intercepted a polygon. Currently there are numerous ways I have considered engaging this issue, however the one I have a question about is using is 'inpolygon' or 'polybool' functions to determine of a point for the racer polygon (black triangle) is intersecting an object. The current attempt in the code below is to simply see if a fixed point will engage the function inpolygon as 'true'. It does not even though it appears to check itself against each polygon. Am I misunderstanding the function?
My Professor and I are scratching our heads, maybe someone here can be more helpful.
The function 'inpolygon' (line 156) is contained within the nested 'function checkWALL'. All obstacles are randomly created polygons using patch, the racer is a patch that can be moved by the arrow keys left to right.
I'd be happy to add any information that I have left out at your request. Thank you for your time and assistance.

Answers (1)

Sean de Wolski
Sean de Wolski on 22 Apr 2014
Edited: Sean de Wolski on 22 Apr 2014
Use one of the intersecting functions in geom2d
old
inpolygon will tell you if a specific vertex is inside of the other polygon. This should be sufficient for identifying if one polygon is intersected with another.
Can you provide a minimal working example of where your function is failing?
  7 Comments
Patrik Ek
Patrik Ek on 22 Apr 2014
Edited: Patrik Ek on 22 Apr 2014
Well, ok the polygon described above and which is now removed, does still fulfill your criterion, but there are cases where even convex polygons may fail. Try this,
x1 = [0,1,1,0,0]; y1 = [0,0,1,1,0]; x2 = [0.5,1,0,0.5]; y2 = [-0.5,1.5,1.5,-0.5];
plot(x1,y1,'r',x2,y2,'k'); xlim([-1,2]); ylim([-1,2]);
All polygons are convex, and there is no points inside any of the polygons, but they are still intersecting. So inpolygon for every vertex will not do. And this is only the 2D case, which is quite easy to discover. If this is the 2D projection of the 3D case, this may occur frequently and finding out if this is a permitted structure would be much worse.
Sean de Wolski
Sean de Wolski on 22 Apr 2014
Nice example Patrik!
In that case, use one of the intersecting functions in geom2d

Sign in to comment.

Categories

Find more on Computational Geometry 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!