fullseye

farthest_point_sampling — 3D geodesic op

使い方

測地距離での最遠点サンプリング(均等間引き)。→ 選択インデックス列 (n,) int。

start を最初の代表点にし、「既に選んだ点集合への測地距離が最大の点」を 1 つずつ追加する 貪欲法(FPS)。距離は knn_graph(points, k) の無向 kNN グラフ上の Dijkstra で測り、既選択 集合への距離は各代表点の単源距離の要素ごと最小 mind として保持、代表点を 1 つ足すたびに mind = min(mind, d_new) で更新する。代表点 1 つにつき Dijkstra 1 回なので計算量は n 回分の 単源最短路。乱数は使わず決定的。

罠: グラフが複数の連結成分に分かれていると、不達の点は距離 inf なので未到達の成分が先に 選ばれる(argmax が inf を拾う)。「離れた塊から先に取る」挙動になるので、成分ごとに 均等に間引きたいなら euclidean_cluster 等で分けてから使う。

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(indices を入力に取れる)

fuse_to_voxel

同カテゴリ(geodesic)

geodesic_distances · geodesic_mesh · knn_graph


Provenance: geodesic3d.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.