0

私は(ポイントの)リストを持っています-おそらく数十万のポイントがあります。私がそれを使うことができる唯一の方法は、何かを適切に描くために、それらの間の距離でそれを分類することであるように思われます。

[セットで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 に答える