sdf_csg op• 데이터 종류: coordgrid → sdf
• 호출: import fullseye as fs; fs.ledger.plane_sdf(grid, point, normal)(구현을 직접 호출하려면 import sdf_ops; sdf_ops.plane_sdf(grid, point, normal), 원장에서 가져오려면 ops3d.get("plane_sdf"))
반공간(평면으로 자른 쪽)의 엄밀한 부호 거리장(안쪽 음, 바깥쪽 양).
sdf(p) = (p - point) · n̂. 법선 n̂ 이 가리키는 쪽이 바깥(양)이고, 반대쪽이 안쪽이다. 모따기(chamfer), 절단, "기판에서 위쪽만" 같은 한쪽만 남기는 연산에 쓴다. sdf_intersect 를 겹치면 임의의 볼록 다면체를 만들 수 있다. 단 max 에 의한 교차는 모서리 바깥에서엄밀하지 않다: 6 장으로 직육면체를 만들면 점유(<= 0)와 안쪽 값은 box_sdf 와 완전히 일치하지만, 바깥은 모서리 근처에서 최대 2.1(반변 2 의 상자, 격자 0.25 에서 실측)만큼 과소평가한다 —— CSG 의 표준적인 성질로, 거리 자체가 필요하면 box_sdf 를 쓴다.
엄밀성: 평면은 전 공간에서 기울기 노름이 1 이므로, 이 값은 어디서나 참인 부호 있는 거리이다(box_sdf 처럼 모서리에서 전환되는 경우 분리가 필요 없다).
인수와 검증(ValueError):
• grid: 마지막 축이 3 인 float 배열 (..., 3)(grid_coords 의 출력 또는 점 목록).
• point: 평면 위의 1 점(요소 수 3).
• normal: 평면의 법선(요소 수 3, 영벡터와 NaN 은 거부). 길이는 자동으로 1 로정규화되므로 크기는 결과에 영향을 주지 않는다(방향만 의미가 있다).
반환값: grid.shape[:-1] 의 float64. 법선 쪽에서 양, 반대쪽에서 음, 평면 위에서 0.
사용처: sdf_subtract(part, plane_sdf(g, p, n)) 로 "그 평면보다 법선 쪽을 깎는다". 방향을 반대로 하고 싶으면 normal 의 부호를 반전한다(-sdf 로도 같다).
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• sdf_csg — py -3.11 examples_3d/sdf_csg.py
sdf 를 입력으로 받는 것)sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_union · sdf_intersect · sdf_subtract
sdf_csg)grid_coords · sphere_sdf · box_sdf · cylinder_sdf · torus_sdf · capsule_sdf · sdf_union · sdf_intersect
*Provenance: sdf_ops.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.