symmetry op• Datenarten: points → primitive
• Aufruf: import fullseye as fs; fs.ledger.detect_rotational_symmetry(points, orders=(2, 3, 4, 6, 8)) (die Implementierung direkt: import symmetry3d; symmetry3d.detect_rotational_symmetry(points, orders=(2, 3, 4, 6, 8)); aus dem Register: ops3d.get("detect_rotational_symmetry"))
Wählt die beste Rotationssymmetrie (Achse × Ordnung) mit den PCA-Hauptachsen als Kandidatenachsen.
→ dict{axis_point, axis_dir, order, score, table, margin}. Je kleiner der score, desto symmetrischer.
★ margin (Abstand zu Platz 2) immer mitlesen. Der Grund ist derselbe wie bei detect_reflection_symmetry: Liegen die Kandidaten dicht beieinander, ist die Wahl ein Losentscheid, und was dabei zuerst kollabiert, ist nicht score, sondern margin. Bei Rotationssymmetrie sind die Kandidaten 3 Achsen x order, daher landet oft eine andere order derselben Achse auf Platz 2, und dann bedeutet eine kleine margin "die order ist nicht bestimmt" (die Achse ist bestimmt). table enthält alle Kandidaten, sodass man nur die Achse fixieren und die order neu prüfen kann.
★ Kandidaten sind nur die 3 PCA-Achsen. Bei einer Form, deren wahre Symmetrieachse mit keiner Hauptachse übereinstimmt, wird sie nicht gefunden, und trotzdem wird stillschweigend die beste zurückgegeben.
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• rotational_symmetry_fold — py -3.11 examples_3d/rotational_symmetry_fold.py
• symmetry — py -3.11 examples_3d/symmetry.py
primitive als Eingabe)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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.