Skip to content

Generalize sphere manifold to N dimensions - #4771

Open
ahojnnes wants to merge 1 commit into
mainfrom
user/jsch/sphere-manifold-nd
Open

ahojnnes wants to merge 1 commit into
mainfrom
user/jsch/sphere-manifold-nd

Conversation

@ahojnnes

@ahojnnes ahojnnes commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Generalizes SphereManifold from the 2-sphere to R^N, including the circle (N=2): the N=3 closed-form tangent basis is kept, general N uses a Householder reflection. Both paths keep the solver allocation-free. Needed for the 8-sphere homography parameterization in #4770.

Test plan: estimators_cost_functions/tiny_manifold_test (incl. new SphereManifold2/SphereManifold9 tests) and optim/tiny_solver_test (incl. new S1 convergence test) pass.

@ahojnnes
ahojnnes added this pull request to stack #4772 September 22, 2026 07:17
Base automatically changed from user/jsch/pnpf-refinement to main September 22, 2026 07:33
@ahojnnes
ahojnnes force-pushed the user/jsch/sphere-manifold-nd branch from a28d157 to a391ab2 Compare September 22, 2026 07:33

@B1ueber2y B1ueber2y left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! Can we somehow support SphereManifold<2> as well (this is for example useful to represent 3D lines with minimal parametrization of Plucker coordinate? For now Matrix<double, N, N-1, RowMajor> with N-1 == 1 is an ill-formed Eigen type.

Replace SphereManifold's R^3-specific tangent basis with a templated implementation: closed form for N=3, Householder reflection otherwise. Both keep the solver allocation-free. Add SphereManifold9 retract/Jacobian tests.
@ahojnnes
ahojnnes force-pushed the user/jsch/sphere-manifold-nd branch from a391ab2 to 7b65a22 Compare September 22, 2026 08:44
@ahojnnes

Copy link
Copy Markdown
Contributor Author

Done — SphereManifold<2> is now supported. PlusJacobian selects ColMajor for the single-column (N==2) case, mirroring the kOrder logic TinySolver already uses for tangent-1 manifolds; storage order is immaterial for a column vector. Added SphereManifold2 retract/Jacobian unit tests plus a TinySolver convergence test on S1 proving the solver path instantiates end-to-end (e.g. for minimal Plücker line parametrizations).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants