How can a ButtonDownFcn in a patch or line handle detect which polygon or segment was clicked?
6 次查看(过去 30 天)
显示 更早的评论
I want to detect user clicks on a polygon mesh I've drawn using patch(), and determine which polygon was clicked in. Although Matlab must have computed that information in order to detect the mouse click, I can't find it in the arguments passed to the ButtonDownFcn that I install into the patch handle. The arguments are a handle to the patch and a Hit structure that includes the IntersectionPoint but nothing else of much use.
In principle I can calculate which polygon contains that point, but I would just be repeating work that Matlab has presumably done already. Can I get it directly?
The same question applies to clicks on line objects.
0 个评论
回答(2 个)
John D'Errico
2015-2-24
When I did this in the past (admittedly some years ago), I simply put that information into the callback I assigned to each object in the plot.
2 个评论
John D'Errico
2015-2-24
Yeah, I did not say it was trivial to do. In the case I had, I was indeed forced to plot each piece separately, with a callback that was unique to that object.
matt dash
2015-2-24
I dont believe that Matlab has already calculated which face/edge/marker you clicked (I don't think hittest works that way). Assuming it's a 2D scene, for patches, you can use inpolygon (or http://www.mathworks.com/matlabcentral/fileexchange/27840-2d-polygon-interior-detection on the file exchange which may be faster).
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Polygons 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!