C# 从数组创建形状的算法

C# 从数组创建形状的算法,c#,algorithm,2d,C#,Algorithm,2d,我正在寻找一种算法,可以创建形状的基础上 在具有坐标的数组上。我有两个50x50数组:一个是x坐标,另一个是y坐标 总有2500个点。然后我有另一个50x50数组,其中包含我的坐标值 我根据值创建3到6个区域(例如0-100、200-300和300-500)。具有特定值的点可以创建区域 我需要一个算法,它可以计算,如果只有一个或多个形状的面积和填充颜色的形状。 我需要它,因为我必须为每个区域填充特定颜色的形状。 语言是C# 举例说明 预期的边缘 预期结果 基本上,您可以使用分层聚类来查找聚类 每

我正在寻找一种算法,可以创建形状的基础上 在具有坐标的数组上。我有两个
50
x
50
数组:一个是x坐标,另一个是y坐标

总有
2500个
点。然后我有另一个
50
x
50
数组,其中包含我的坐标值

我根据值创建3到6个区域(例如0-100、200-300和300-500)。具有特定值的点可以创建区域

我需要一个算法,它可以计算,如果只有一个或多个形状的面积和填充颜色的形状。 我需要它,因为我必须为每个区域填充特定颜色的形状。 语言是C#

  • 举例说明
  • 预期的边缘
  • 预期结果

  • 基本上,您可以使用分层聚类来查找聚类

  • 每个点都是自己的簇
  • 找到最接近的两个集群并合并它们
  • 重复此步骤,直到满足结束条件
  • 两个细节:在步骤2中,您可以使用许多度量来查找最近的集群。所有点对上的平均距离或最小距离可能是最佳选择

    在步骤3中,您可以在剩余集群数为2(或其他数字)时停止。或在距离超过阈值时停止

    为了找到实际的轮廓,我建议使用一些优化函数,最小化轮廓的长度,同时最小化轮廓的面积。并给出了一些优化函数的启发式算法


    类似于面积-常数*长度。

    输入和概念对我来说并不完全清楚。你能给出一些样本数据,这样我们就可以了解你想要什么,并测试最终的算法吗?看起来你在试图找到集合中的。请参阅以下网页:@FelixCastor:不,这些形状不是凸面的。@Yvesdao您是否正确。OP可以首先找到凸面外壳,然后腐蚀边缘,以获得所需的最终产品。