首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按连续点之间的距离对点列表进行排序

按连续点之间的距离对点列表进行排序
EN

Stack Overflow用户
提问于 2013-01-30 06:39:57
回答 1查看 1.1K关注 0票数 0

我有一个列表(点)--可能有几十万个点。我使用它的唯一方法,似乎是,正确地画一些东西,是根据它们之间的距离进行排序。

我在集合上使用了CCL和凸壳,但结果仍然是一堆紧密的散列-或者如果我随后根据从中心的角度或斜率或其他什么对它们进行排序,则会得到很好的辐射线。

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

我用过

代码语言:javascript
复制
Dim orderedByX As List(Of Point) = listOfPoints.OrderBy(Function(pt) pt.X).ToList()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-30 10:49:53

您必须构造point, distance对。例如,您可以通过使用相同列表的移位版本压缩列表来实现这一点。然后按距离对序列进行排序,并选择与距离相对应的点。

代码语言:javascript
复制
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)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14593365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档