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

How to compute the intersection between two rectangles in simple way using Matlab?

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

  1. 绿色矩形是ABCD
  2. 红色矩形是A3B3C3D3

我想计算里面的八角形? (或六边形或在本例中为七边形)

到现在我成功的是使用函数lineintersect,但是看起来又长又重。肯定有更好的方法。你有什么功能可以简化吗?

您似乎拥有制图工具箱。实现两个多边形交点的最简单方法是使用 polyxpoly 函数。

原型是这样的:

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

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

下面是一个使用函数的例子:

% 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