geodesic_distances — 3D geodesic op

• Data kinds: points → signal

• Call: import fullseye as fs; fs.ledger.geodesic_distances(points: numpy.ndarray, source: int, k: int = 8) -> numpy.ndarray (to call the implementation directly, import geodesic3d; geodesic3d.geodesic_distances(points: numpy.ndarray, source: int, k: int = 8) -> numpy.ndarray; from the registry, ops3d.get("geodesic_distances"))

Usage

Geodesic distances from a source to every point (Dijkstra on the kNN graph). → (N,) float (inf where unreachable).

Makes the k-nearest-neighbour graph built by knn_graph(points, k) (edge weight = Euclidean distance between points = chord length) undirected with directed=False, and solves single-source shortest paths with scipy.sparse.csgraph.dijkstra. d[i] is the path length on the graph from source to point i with d[source] = 0; points in connected components not connected to source are inf. Units are the coordinate units as-is.

• points: (N,3) point cloud (converted to float64).

• source: index of the start point (an integer in 0..N-1; out of range raises on the scipy side).

• k: number of neighbours (default 8). Too small splits the graph and increases inf; too large creates "shortcuts" that directly link distant surfaces, giving distances that do not follow the surface (both sides of a thin plate, folded-back surfaces, etc.).

Accuracy: edges are chord lengths, so arcs are slightly underestimated, while zigzag paths cause overestimation (see the bounding estimate by Bernstein et al. in the module docstring). If you have a triangle mesh, use geodesic_mesh, which does not depend on the number of neighbours. To subsample evenly by this distance, use farthest_point_sampling.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

Runnable examples (verified samples that actually call this op)

• geodesic_distance — py -3.11 examples_3d/geodesic_distance.py

Ops the type connects to (they accept signal as input)

fuse_to_voxel

Same category (geodesic)

geodesic_mesh · farthest_point_sampling · knn_graph


*Provenance: geodesic3d.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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