通过两条多边形/折线的重叠创建新数据

问题描述

如果我们有两个矢量数据,例如多边形或折线(如下图所示)。我们如何找到重叠部分并为此新形状创建新的x,y矢量数据? (或只是获取新形状的面积。

import numpy as np
import matplotlib.pyplot as plt

x1 = [10,20,40,50,10,10];
y1 = [20,20];

x2 = [30,60,30,30];
y2 = [40,70,40];

fig,ax = plt.subplots()
ax.plot(x1,y1)
ax.plot(x2,y2)
plt.show()

enter image description here

例如,对于上面相交的图形,是否可以获取通过重叠创建的这个新形状的x,y坐标/数据?或获取它的面积?

解决方法

通常情况下,构造两个多边形的交点并不容易。 https://en.wikipedia.org/wiki/Vatti_clipping_algorithm

如您的示例中所示,当多边形为凸形时,可以使用Sutherland-Hodgman算法。 https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm