moment_axes — 3D match_pose op

• Data kinds: points → axes

• Call: import fullseye as fs; fs.ledger.moment_axes(points, weights=None) (to call the implementation directly, import match3d; match3d.moment_axes(points, weights=None); from the registry, ops3d.get("moment_axes"))

• GPU: none (CPU reference implementation only)

Usage

The centroid and principal axes (the eigenvectors of the inertia tensor) of a point set or weighted points. The basis of pose estimation.

Return value (centroid(3,), axes(3,3) columns=main axes, eigvals(3,)). Eigenvalue descending order. Used for rotation normalization.

Definition: Normalize w to a sum of 1, centroid c = Σ w p, scatter matrix C = Σ w (p−c)(p−c)ᵀ (covariance. The inertia tensor tr(C)I − C and the eigenvectors are common, but the order of the eigenvalues is reversed) by eigh. Disassemble. axes[:, i] is the principal axis of the i-th largest eigenvalue (in descending order). Eigenvalue is variance (length²).

• The signs of the eigenvectors are arbitrary, and axes can be left-handed (det=−1) (match_pca sets the third axis

(Inverted to make it right-handed).

• weights is length N. The sum of 0 is NaN when divided by 0 (no exception occurs). A score of 0 is explicitly a ValueError.

• If the principal axis is degenerate (such as a sphere), the direction of the axis is indeterminate.

Later: match_pca, obb (directed bbox), rotation to canonical attitude.

Empty input (points of 0 elements) results in a ValueError.

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• itokawa_pose_canonical — py -3.11 examples_3d/itokawa_pose_canonical.py

Ops the type connects to (they accept axes as input)

fuse_to_voxel

Same category (match_pose)

match_phase_3d · match_pca · find_surface_pose · match_logpolar_z


*Provenance: match3d.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.