如何找到表示为点集合的形状的内边界?

时间:2019-09-20 08:45:37

标签: c# .net algorithm geometry

我需要获得形状的内边界。以前,在正方形或圆形的情况下,我发现最靠近形状中心的点,但是在M形的情况下该怎么做。

我所拥有的(我需要在屏幕快照№2中标记点):


Canvas


enter image description here


任何算法,找到这些点的步骤吗?

UPD:现在,我有像(1,0)或(0.5,0.5)之类的线段方向矢量

1 个答案:

答案 0 :(得分:0)

第一步似乎是通过将附近的点平均为一个点来简化。然后找到包含所有点的最小凸多边形(轻松完成)。然后有选择地打一些边以达到内部点(多边形变成凹面)。有很多方法可以选择要打入哪些方面,以及要先打入哪些点,而且我不知道最好的方法就是不了解您的特定目标。

一种简单的方法是先处理最接近现有边的那些点,然后打孔最近的边以使其相交。但是,您可能希望应用其他评分条件,以选择要处理的最佳点和要打孔的最佳面。例如,您可能希望对与一个顶点紧密垂直或水平对齐的点赋予更高的分数当前多边形的大小,以便较早而不是稍后处理它们;并给与该顶点相邻的边较高的分数作为插入的候选对象。您可能还希望授予分数较高的较长边作为插入的候选对象。

我想像这样简单的加权标准,您很快就会得到一些明智的结果。

最后,如果愿意,可以参考原始的未平均点集,并对形状进行进一步的细微调整,以确保所有这些点都落在其边界之外。