假设我有两个以某种方式相交的矩形。两个矩形如下图所示:
我想计算里面的八角形? (或六边形或在这种情况下为七边形)
我到目前为止所做的是使用函数lineintersect,但它似乎非常宽松和沉重。肯定有更好的方法。你有什么功能可以简化吗?
答案 0 :(得分:0)
看起来你有Mapping Toolbox。实现两个多边形之间交叉点的最简单方法是使用polyxpoly
函数。
原型看起来像这样:
[xi,yi] = polyxpoly(x1, y1, x2, y2);
x1
和y1
是x
和y
坐标,用于定义第一个形状的多边形,x2
和y2
是定义第二个形状的多边形的坐标。这些是一维向量,结果为您提供了存储在x
和y
中的xi
和yi
坐标,它们为您提供了两个多边形的交点。
以下是使用该功能的一个示例:
% 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