如何使用Matlab以简单的方式计算两个矩形之间的交集?

时间:2015-06-26 18:09:20

标签: matlab intersection

假设我有两个以某种方式相交的矩形。两个矩形如下图所示:

enter image description here

  1. 绿色矩形为 ABCD
  2. 红色矩形 A 3 B 3 C 3 D 3 < /子>
  3. 我想计算里面的八角形? (或六边形或在这种情况下为七边形)

    我到目前为止所做的是使用函数lineintersect,但它似乎非常宽松和沉重。肯定有更好的方法。你有什么功能可以简化吗?

1 个答案:

答案 0 :(得分:0)

看起来你有Mapping Toolbox。实现两个多边形之间交叉点的最简单方法是使用polyxpoly函数。

原型看起来像这样:

[xi,yi] = polyxpoly(x1, y1, x2, y2);

x1y1xy坐标,用于定义第一个形状的多边形,x2y2是定义第二个形状的多边形的坐标。这些是一维向量,结果为您提供了存储在xy中的xiyi坐标,它们为您提供了两个多边形的交点。

以下是使用该功能的一个示例:

% Define and fill a rectangular area in the plane
xlimit = [3 13];
ylimit = [2  8];
xbox = xlimit([1 1 2 2 1]);
ybox = ylimit([1 2 2 1 1]);
mapshow(xbox,ybox,'DisplayType','polygon','LineStyle','none')

% Define and display a two-part polyline
x = [0 6  4  8 8 10 14 10 14 NaN 4 4 6 9 15];
y = [4 6 10 11 7  6 10 10  6 NaN 0 3 4 3  6];
mapshow(x,y,'Marker','+')

% Intersect the polyline with the rectangle
[xi, yi] = polyxpoly(x, y, xbox, ybox);
mapshow(xi,yi,'DisplayType','point','Marker','o');

我们得到:

来源:MathWorks