fullseye

geodesic_mesh — 3D geodesic op

使い方

三角メッシュのエッジグラフ上 Dijkstra で source から各頂点への測地距離。→ (V,) float。

各三角形の 3 辺 (0,1),(1,2),(2,0) を無向辺として集め、(min,max) で一意化してから辺長 = 両端 頂点の Euclid 距離を重みにした疎グラフを作り、dijkstra(directed=False) で source からの 最短路長を返す。d[source] = 0、source と辺で繋がらない頂点は inf。単位は頂点座標の単位。

実装上の要点: csr_matrix は同じ (i,j) を重複して渡すと重みを黙って加算するため、重複面・ 非多様体・巻き順が不揃いなメッシュでも距離が膨らまないよう辺を一意化している。退化辺(i==j)は 捨てる。距離は辺に沿った折れ線長なので、粗いメッシュでは真の測地距離より長め(辺の走り方に 依存する異方性)になる。voxel_to_meshconvex_hull が返す (verts, faces) を そのまま渡せる。

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

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

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

fuse_to_voxel

同カテゴリ(geodesic)

geodesic_distances · farthest_point_sampling · 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.