symmetry op• Data kinds: points → points
• Call: import fullseye as fs; fs.ledger.reflect_points(points, plane_point, plane_normal) (to call the implementation directly, import symmetry3d; symmetry3d.reflect_points(points, plane_point, plane_normal); from the registry, ops3d.get("reflect_points"))
Mirror a point set in a plane (point plane_point, normal plane_normal). → (N,3).
For each point p, takes the signed distance from the plane d = (p - plane_point) · n (n is the normalised normal) and returns p' = p - 2 d n (Householder reflection). Points on the plane do not move; points on the two sides of the plane swap. The point order is preserved, so p'[i] is the mirror image of p[i]. Coordinate units are unchanged.
• points: (N,3) array (converted to float). The shape is not validated.
• plane_point: 1 point on the plane (3,). plane_normal: normal (3,) (any length, normalised internally. The sign does not affect the result).
Note: the normal is divided by its norm plus 1e-12, so passing a zero vector raises no exception and the point cloud is returned almost unchanged (not fail-closed). Besides being used inside reflection_symmetry_score / detect_reflection_symmetry, it can be used for shape completion that fills the missing side with a detected symmetry plane (concatenating the mirror image to the original point cloud).
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• reflection_symmetry — py -3.11 examples_3d/reflection_symmetry.py
points as input)points_to_voxel · gaussians_to_voxel · estimate_point_normals · to_points · match_points_ncc · match_pca · moment_axes · icp_point2point_3d
symmetry)detect_reflection_symmetry · detect_rotational_symmetry · reflection_symmetry_score
*Provenance: symmetry3d.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.