0

我有一个 List(Of Point) - 可能有数十万个点。看来,我可以使用它来正确绘制某些东西的唯一方法是按它们之间的距离对其进行排序。

[我在片场使用了 CCL 和凸包,但结果仍然是大量紧密的散列 - 如果我之后按中心角度或斜率或其他东西对它们进行排序,则结果仍然是很好的辐射线]

有没有办法按连续点之间的距离对点列表进行排序?

我用过

Dim orderedByX As List(Of Point) = listOfPoints.OrderBy(Function(pt) pt.X).ToList()
4

1 回答 1

1

你首先需要构造point, distance对。例如,您可以通过使用同一列表的移动版本压缩列表来做到这一点。然后按距离对序列进行排序并选择与距离相对应的点。

Dim sortedPoint = listOfPoints.Zip(listOfPoints.Skip(1), Function(p1, p2) New With { .Point = p2, .Distance = (p2 - p1).Length }).OrderBy(Function(v) v.Distance).Select(Function(v) v.Point)

我仍然认为这不是你真正想要的。我认为结果列表相当无用。

于 2013-01-30T02:49:52.860 回答