这是我上一个问题的延续:Matlab finding if graphic object exist on figure on given coordinates
我正在尝试确定一个补丁对象是否在另一个补丁对象的边界内。在我的上一个问题中,我得到了关于inpoly方法的答案。可悲的是,如果没有多边形在范围内,inpoly就不会工作。
示例:
%creating figure
a = figure
b = axes('Parent',a,'Xlim',[0 100],'Ylim',[0 100])
%first object
x = [50 60 40 50]
y = [10 40 40 10]
c = patch(x,y,'blue')
%second object
x2 = [40 50 50 40]
y2 = [20 20 30 30]
d = patch(x2,y2,'red')
%third object
x3 = [45 55 55 45]
y3 = [12 12 16 16]
e = patch(x3,y3,'yellow')
现在,如果我使用inpoly检查对象d和e是否在对象c的边界中,我将获得d的正结果,因为至少有两个多边形在b对象内。
in = ingon(x2,y2,x,y)
in =
0 1 1 0
但是我会得到错误的补丁结果。这是该方法的预期结果。
in = inpolygon(x,y,x3,y3)
in =
0 0 0 0
有没有办法检查这两个补丁对象的碰撞而无需使用inpoly?