Explanation: the math and the "why" behind the library¶
This section is understanding-oriented, not task-oriented — it settles a conceptual question in depth, with a derivation, a proof, or a measured comparison.
- No "run this script" checklist to complete. For that, go to Learn, the guided, runnable tutorial track.
- Material here would slow a tutorial down if it were inlined there, so it lives here instead.
Read a page here when a tutorial chapter links to it for "the theory," or when you're chasing a specific question about why the library behaves the way it does.
Pages¶
- Two-view geometry on bearing vectors — the epipolar-constraint proof, essential-matrix properties, the four-fold pose decomposition, and numerical-stability notes behind Learn Chapter 8.
- Are two different camera models the same camera? — why a Double Sphere and a Kannala-Brandt calibration of the same lens report focal lengths that differ by 30%, and the paraxial-focal derivation that proves they're the same optics where the data reached.
- Is this camera model right for my lens and task? — a measurable framework for picking a model: six diagnostics (capacity, identifiability, parameter redundancy, bound sensitivity, compute cost, FOV sampling weight), each backed by a number you can verify on real lenses.
- A fair fight: EUCM⁺ vs DS⁺ vs Kannala-Brandt (historical — EUCM⁺ has since been removed) — the framework above applied to the real ship/retire decision that led to EUCM⁺'s removal, including a hypothesis retracted when the data contradicted it.
- Projection validity & FOV — the closed-form
forward/inverse equations behind Learn Chapter 3's
half-space validity test, plus the explicit valid parameter domain (
α ∈ [0,1],ξ ∈ [-1,1]) the optimizer enforces.
What doesn't live here
Anything with a runnable script and a "you'll be able to…" outcome belongs in Learn instead — that's the Diátaxis line this project holds.
If a page here starts accumulating "Try it yourself" steps that teach a new skill, rather than deepen a conceptual answer, it should move there.