geodesic op• 데이터 종류: points → graph
• 호출: import fullseye as fs; fs.ledger.knn_graph(points: numpy.ndarray, k: int = 8) -> Tuple[numpy.ndarray, numpy.ndarray](구현을 직접 호출하려면 import geodesic3d; geodesic3d.knn_graph(points: numpy.ndarray, k: int = 8) -> Tuple[numpy.ndarray, numpy.ndarray], 원장에서 가져오려면 ops3d.get("knn_graph"))
각 점의 k 근방 인덱스와 유클리드 거리(자기 제외). → (idx (N,k) int, dist (N,k) float).
scipy.spatial.cKDTree 로 각 점의 k+1 근방을 찾아, 자기 자신(거리 0)을 제외한 k 개를 반환한다. idx[i, j] 는 점 i 에 j 번째로 가까운 점의 첨자, dist[i, j] 는 그 Euclid 거리(좌표의 단위)이며, 각 행은 거리의 오름차순.
• points: (N,3) 등 임의 차원의 좌표(float64 로 변환). 형상 검증은 하지 않는다.
• k: 근방 수(기본값 8). N-1 을 넘는 값은 조용히 N-1 로 잘린다.
• N < 2 일 때는 예외를 내지 않고, 형상 (N,0) 의 빈 배열을 2 개 반환한다.
함정: 좌표가 중복되어 있으면 KD-tree 가 자신을 열 0 에 반환하지 않는 경우가 있다. 그 경우는 행마다 자신의위치를 찾아 제거하고, k+1 개 안에 자신이 없으면 가장 먼 1 개를 떨어뜨린다(결과는 역시 k 개). geodesic_distances / farthest_point_sampling 은 이 결과를 인접 행렬(유향 CSR, Dijkstra 쪽에서 무향화)로 만들어 측지 거리의 근사에 쓴다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• pcl_geodesic — py -3.11 examples_3d/pcl_geodesic.py
graph 를 입력으로 받는 것)geodesic)geodesic_distances · geodesic_mesh · farthest_point_sampling
*Provenance: geodesic3d.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.