mesh_edge_lengths — 3D 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 를 입력으로 받는 것)

fuse_to_voxel

같은 카테고리(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.