我正在测试以确定两个多边形是否重叠。我开发了第一个版本,它在多边形测试中做了一个简单的点(图 1)。但是,我希望改进该方法以处理多边形 A 的顶点不在多边形 B 中但它们的线段重叠的情况(图 B)。
任何帮助入门将不胜感激。
我正在测试以确定两个多边形是否重叠。我开发了第一个版本,它在多边形测试中做了一个简单的点(图 1)。但是,我希望改进该方法以处理多边形 A 的顶点不在多边形 B 中但它们的线段重叠的情况(图 B)。
任何帮助入门将不胜感激。
以下是使用 Region 的示例:
GraphicsPath grp = new GraphicsPath();
// Create an open figure
grp.AddLine(10, 10, 10, 50); // a of polygon
grp.AddLine(10, 50, 50, 50); // b of polygon
grp.CloseFigure(); // close polygon
// Create a Region regarding to grp
Region reg = new Region(grp);
现在您可以使用方法Region.IsVisible来确定该区域是在矩形还是点中。
解决方案:
我修改了一些在这里找到的代码。
private Region FindIntersections(List<PolyRegion> regions)
{
if (regions.Count < 1) return null;
Region region = new Region();
for (int i = 0; i < regions.Count; i++)
{
using (GraphicsPath path = new GraphicsPath())
{
path.AddPath(regions[i].Path, false);
region.Intersect(path);
}
}
return region;
}
结果: