【问题标题】:How to connet many points in Polygon如何连接多边形中的多个点
【发布时间】:2012-10-22 20:06:00
【问题描述】:

我在连接多边形中的许多点时遇到问题。我有一个点列表,我希望结果是这样的:http://imageshack.us/a/img818/6663/punktyx.jpg

【问题讨论】:

  • 这总是凸的吗?那么你正在寻找en.wikipedia.org/wiki/Convex_hull
  • 你搜索过一些算法吗?你有没有尝试过做某事?您持有积分的数据结构是什么?
  • 如果我理解这个问题,你想连接外点吗?
  • 是的,我试过了。我有 List 并且我在 WPF 中的 Grid 中绘制,Polygon。 Majid Max - 是的
  • 正如@Sebastian 已经说过的,你必须计算凸包。 WPF 不会为您这样做。

标签: c# .net wpf polygon


【解决方案1】:

抱歉,我不会为此吐出代码...

基本上,您知道至少有 4 个点始终是该多边形的一部分:X 中的 Min 和 Max,Y 中的 Min 和 Max。如果两个或更多点具有相同的 Min 或 Max,它们将被连接。

对于下面的计算,假设每个点都是一个 Vector3,其中 Z 为 0。

使用 MinX 和 MinY,您需要将它们与其他点连接起来。做 (MinX - Point), (Point - MinY) 的叉积,如果结果向量的 Z 为 +1,则当与 MinX 和 MinY 连接时,该点将创建一个船体形状。解析完所有点后,您会得到一组可能有效的点,每个点都会创建一个凸形。从他们那里,您再次重新获取 MinX/MinY 并重新解析剩余的点。如果 MinX 和 MinY 是同一个点,你就知道它直接链接到其他点。

基本上,您对 4 个象限执行此操作。 (MinX/MinY, MinX/MaxY, MaxX/MinY, MaxX/MaxY)

您最终会得到一个定义外部形状或凸包的点列表。从此,应该足够简单地连接它们。

可能有一个更有效的算法,只是说我会怎么做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多