terrain op• 데이터 종류: mesh → signal
• 호출: import fullseye as fs; fs.ledger.mesh_edge_lengths(V, F, *, per: 'str' = 'vertex') -> 'np.ndarray'(구현을 직접 호출하려면 import render3d; render3d.mesh_edge_lengths(V, F, *, per: 'str' = 'vertex') -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("mesh_edge_lengths"))
삼각형 메시의 국소 엣지 길이(정점별·면별·고유 엣지별).
정점마다 (N,)(접한 변의 평균), 면마다 (M,)(그 3 변의 평균) 또는 고유 변마다 (E,) 를 반환.
이것은 메시 자체 단위로 나타낸 해상도 지도이다: 어떤 영역이 *지오메트리* 로 담을 수 있는 최단 파장은국소 변 길이의 약 두 배(Nyquist)이며, 이것이 mesh_subdivide(target_edge)와 displacement_band_weights 가 쓰는 값이다. 결정적; 퇴화 메시/알 수 없는 per 에 대해 fail-closed.
무방향 고유 변 (E,2) 를 구하고 각 변의 길이(메시 단위, float64)를 집계한다.
• per='vertex': 정점에 접한 변 길이의 평균 (N,). 어느 면에도 속하지 않는 고립 정점은변이 없으므로 조용히 전체 변의 평균값 이 들어간다(0 이 되지 않는다).
• per='face': 면의 3 변의 평균 (M,).
• per='edge': 고유 변 자체의 길이 (E,). 변의 순서는 np.unique 의 사전순(정점 index 오름차순)이며 F 의 순서와 대응하지 않는다.
per 가 위 3 가지 이외, 정점/면이 비어 있음, face index 범위 밖, 비유한 좌표는 ValueError. displacement_band_weights 의 local_edge 나 mesh_subdivide 의 target_edge 를 정하는 데(예: 중앙값의 절반) 쓴다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• itokawa_regolith_hero — py -3.11 examples_3d/itokawa_regolith_hero.py
signal 를 입력으로 받는 것)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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.