# The first fundamental form ```{admonition} Status: outline :class: warning This chapter is scaffolded, not written. Section 1 and the failure modes below are real; sections 2 to 5 are placeholders. PRD 15.3 fixes the seven-part shape used here and states the standard: *a dedicated chapter that takes a reader from novice to able to implement* — not a literature dump and not a proof, but a constructive path. Do not delete a section heading to avoid filling it in. ``` ## 1. The problem in one paragraph Unrolling a tube means finding a map from its surface to flat paper that keeps lengths right. Every length measured on a parametric surface `P(u, v)` is determined by three numbers at each point — `E = P_u . P_u`, `F = P_u . P_v`, `G = P_v . P_v` — and by nothing else. That is the whole reason this codebase has one abstraction rather than five unrelated algorithms: each unrolling tier is a different answer to *integrate this metric*, they share one input and one output, and so they can be tested against each other (PRD 6.0, ADR-004). ## 2. The minimum background *To be written.* Develop the notation from scratch, defining every symbol at first use. ## 3. The derivation *To be written.* In steps small enough that a reader can check each one individually. ## 4. The algorithm *To be written.* Pseudocode using the real function names in this codebase, so a reader can move from the page to the source without a translation step. ## 5. A worked numerical example *To be written.* With actual numbers a reader can reproduce, and the expected output printed in full. This section is what separates a chapter that can be implemented from one that can only be admired. ## 6. Failure modes - Assuming `F = 0`. It is zero for the three analytic surface types measured inside Fusion, and that is what keeps the closed forms clean, but it is not a general truth and must not be assumed for a NURBS face. - Confusing the metric's units. `E` is millimeters squared *per unit of `u` squared*, and `u` is not always a length: for a cylinder it is `z / r`, dimensionless. - Treating a degenerate metric as a small one. `EG - F^2 = 0` means the parameterization has collapsed — at a cone apex, or a pole — and no amount of tolerance makes the local frame meaningful there. `Metric.is_degenerate` exists for this. ## 7. References - **do Carmo, M. P. (1976)**, *Differential Geometry of Curves and Surfaces*, chapter 2-5. The standard treatment. Cited by chapter so any edition, or an equivalent open text, can be used. Read it for the definition and for why the form is intrinsic.