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.