确定补丁是否在另一个补丁的范围内

时间:2015-01-10 17:56:27

标签: matlab

这是我上一个问题的延续: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?

0 个答案:

没有答案