我有一个列表(点)--可能有几十万个点。我使用它的唯一方法,似乎是,正确地画一些东西,是根据它们之间的距离进行排序。
我在集合上使用了CCL和凸壳,但结果仍然是一堆紧密的散列-或者如果我随后根据从中心的角度或斜率或其他什么对它们进行排序,则会得到很好的辐射线。
有没有办法根据连续点之间的距离对点列表进行排序?
我用过
Dim orderedByX As List(Of Point) = listOfPoints.OrderBy(Function(pt) pt.X).ToList()发布于 2013-01-30 10:49:53
您必须构造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)我仍然认为这不是你真正想要的。我认为结果列表是相当无用的。
https://stackoverflow.com/questions/14593365
复制相似问题