terrain op• Data kinds: mesh → signal
• Call: import fullseye as fs; fs.ledger.mesh_edge_lengths(V, F, *, per: 'str' = 'vertex') -> 'np.ndarray' (to call the implementation directly, import render3d; render3d.mesh_edge_lengths(V, F, *, per: 'str' = 'vertex') -> 'np.ndarray'; from the registry, ops3d.get("mesh_edge_lengths"))
Local edge length of a triangle mesh, per vertex, per face or per unique edge.
Returns (N,) per vertex (mean of incident edges), (M,) per face (mean of its 3 edges) or (E,) per unique edge.
This is the resolution map of the mesh in its own units: the shortest wavelength a region can carry as *geometry* is about twice the local edge (Nyquist), which is what mesh_subdivide (target_edge) and displacement_band_weights use. Deterministic; fail-closed on degenerate meshes / unknown per.
Takes the undirected unique edges (E,2) and aggregates the length of each edge (mesh units, float64).
• per='vertex': mean length of the edges incident to the vertex (N,). An isolated vertex that belongs to no face has no edges, so it silently gets the mean over all edges (not zero).
• per='face': mean of the 3 edges of the face (M,).
• per='edge': lengths of the unique edges themselves (E,). The edge order is the lexicographic order of np.unique (ascending vertex index) and does not correspond to the order of F.
per other than the 3 above, empty vertices/faces, a face index out of range, or non-finite coordinates raise ValueError. Used to choose local_edge of displacement_band_weights or target_edge of mesh_subdivide (e.g. half the median).
• 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.
• itokawa_regolith_hero — py -3.11 examples_3d/itokawa_regolith_hero.py
signal as input)terrain)mesh_displace_fbm · terrain_region_mask · mesh_scatter_boulders · mesh_subdivide · displacement_band_weights · mesh_displace_spectrum · bump_normals_fbm
*Provenance: render3d.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.