symmetry op• Data kinds: points → primitive
• Call: import fullseye as fs; fs.ledger.detect_rotational_symmetry(points, orders=(2, 3, 4, 6, 8)) (implementation को सीधे call करना हो तो import symmetry3d; symmetry3d.detect_rotational_symmetry(points, orders=(2, 3, 4, 6, 8)), registry से लेना हो तो ops3d.get("detect_rotational_symmetry"))
PCA principal axes को candidate axes मानकर सबसे अच्छी rotational symmetry (axis × order) चुनता है।
→ dict{axis_point, axis_dir, order, score, table, margin}। score जितना छोटा, उतना अधिक symmetric।
★ margin (दूसरे यानी 2nd स्थान से अंतर) को हमेशा साथ में पढ़ें। कारण detect_reflection_symmetry जैसा ही है — candidates गुच्छे में हों तो चुनाव लॉटरी है, और उस समय पहले score नहीं, margin ढहता है। rotational symmetry में candidates 3 axes x order होते हैं, इसलिए अक्सर उसी axis का दूसरा order 2nd स्थान पर आता है, और उस स्थिति में छोटा margin का अर्थ है "order तय नहीं होता" (axis तय है)। table में सभी candidates हैं, इसलिए केवल axis स्थिर करके order दोबारा जाँचा जा सकता है।
★ candidates केवल PCA के 3 axes हैं। जिस आकार का असली symmetry axis किसी भी principal axis से मेल नहीं खाता, उसमें यह नहीं मिलता, और फिर भी चुपचाप सबसे अच्छा लौटाता है।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• rotational_symmetry_fold — py -3.11 examples_3d/rotational_symmetry_fold.py
• symmetry — py -3.11 examples_3d/symmetry.py
primitive को input के रूप में लेते हैं)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 operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.