detect_rotational_symmetry — 3D symmetry op

• 데이터 종류: points → primitive

• 호출: import fullseye as fs; fs.ledger.detect_rotational_symmetry(points, orders=(2, 3, 4, 6, 8))(구현을 직접 호출하려면 import symmetry3d; symmetry3d.detect_rotational_symmetry(points, orders=(2, 3, 4, 6, 8)), 원장에서 가져오려면 ops3d.get("detect_rotational_symmetry"))

사용법

PCA 주축을 후보 축으로 최적의 회전 대칭(축 × order)을 고릅니다.

→ dict{axis_point, axis_dir, order, score, table, margin}. score가 작을수록 대칭이다.

★ margin(2위와의 차이)을 반드시 함께 읽을 것. 이유는 detect_reflection_symmetry와 같다 —— 후보가 뭉쳐 있으면 선택은 제비뽑기이고, 그때 먼저 무너지는 것은 score가 아니라 margin이다. 회전 대칭은 후보가 3 축 x order이므로 같은 축의 다른 order가 2위에 오는 경우도 많으며, 그 경우의 margin이 작다는 것은 "order가 정해지지 않는다"를 뜻한다(축은 정해져 있다). table에 모든 후보가 들어 있으므로 축만 고정하고 order를 다시 검토할 수 있다.

★ 후보는 PCA의 3 축뿐이다. 진짜 대칭축이 주축 중 어느 것과도 일치하지 않는 형상에서는찾지 못하며, 게다가 조용히 최선을 반환한다.

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• rotational_symmetry_fold — py -3.11 examples_3d/rotational_symmetry_fold.py

• symmetry — py -3.11 examples_3d/symmetry.py

타입이 이어지는 다음 연산자(primitive 를 입력으로 받는 것)

fuse_to_voxel · angle_between_lines · angle_between_planes · angle_line_plane · distance_point_plane · distance_point_line · distance_line_line · distance_segment_segment

같은 카테고리(symmetry)

detect_reflection_symmetry · reflect_points · reflection_symmetry_score


*Provenance: symmetry3d.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.