fullseye

knn_graph — 3D geodesic op

使い方

各点の k 近傍インデックスと Euclid 距離(自己を除く)。→ (idx (N,k) int, dist (N,k) float)。

scipy.spatial.cKDTree で各点の k+1 近傍を引き、自分自身(距離 0)を除いた k 個を返す。 idx[i, j] は点 i に j 番目に近い点の添字、dist[i, j] はその Euclid 距離(座標の単位)で、 各行は距離の昇順。

罠: 座標が重複していると KD-tree が自己を列 0 に返さないことがある。その場合は行ごとに自己の 位置を探して除き、k+1 個の中に自己が無ければ最遠の 1 つを落とす(結果はやはり k 個)。 geodesic_distances / farthest_point_sampling はこの結果を隣接行列(有向 CSR、 Dijkstra 側で無向化)にして測地距離の近似に使う。

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

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

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

fuse_to_voxel

同カテゴリ(geodesic)

geodesic_distances · geodesic_mesh · farthest_point_sampling


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

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