geomcore 0.26.0

A pure, standalone geometric kernel for CAD-grade curves and surfaces: parametric evaluation, transformations, and curve-on-surface parametrization.
Documentation
# Roadmap

`geomcore` grows from a parametric-evaluation core toward a full geometric-query
library. This roadmap is ordered by dependency, not by date — items build on the
ones before them. If you'd like to help with any of it, see
[Contributing](#contributing) below.

## Shipped

- **0.1** — Parametric evaluation for lines, conics, and B-spline curves
  (rational and periodic), and for planes, cylinders, cones, spheres, tori,
  and B-spline surfaces — in Rust and Python. Rigid transformations via a
  single `Transform` type. Analytic curve-on-surface parametrization for
  lines and circles on the five elementary surfaces. Golden-fixture
  validation of every numeric result at 1e-7 tolerance.
- **0.2** — `2D`/`3D` type renames; `__init__`-only Python constructors.
- **0.3–0.4** — Public `Tolerance` API; point containment on all analytic
  curves and surfaces.
- **0.5** — Closed-form point projection (with batch variants) on lines,
  circles, planes, cylinders, spheres, cones, and tori.
- **0.6–0.10** — Analytic intersections with tangency/coincidence
  classification: plane pairs, plane–quadrics, sphere–sphere, line vs.
  quadrics, symmetric quadric pairs, coaxial torus pairs, cone–cone.
  Non-analytic configurations report `NotAnalytic` (never silent).
- **0.11** — Internal numerical toolbox (real polynomial roots with
  multiplicity, Newton, Gauss-Newton, Brent), zero dependencies.
- **0.12–0.14** — Projection and extrema on conics (quartic/cubic
  stationarity), B-spline curves, and B-spline surfaces; containment
  complete across every curve and surface type.
- **0.15–0.16** — Analytic curve–curve intersections: 2D pairs,
  3D line–line, line–circle, and coplanar circle–circle.
- **0.17** — Generic curve–surface intersection over the
  `ParametricCurve3D` × `ParametricSurface` traits.
- **0.18** — Points-to-B-spline interpolation (chordal/centripetal,
  averaged knots, banded LU).
- **0.19** — Marching surface–surface intersection with B-spline fits.
- **0.20** — Numeric curve-on-surface parametrization fallback, validated
  against every analytic pcurve.

## Next

1. **Generic curve–curve intersection and extrema** — subdivision +
   Newton refinement for B-splines in 2D; closest-point enumeration in
   3D (analytic pairs already ship).
2. **B-spline approximation** (least-squares fit, complementing
   interpolation).
3. **Python type stubs** for IDE autocompletion, and hosted documentation
   with tutorials.

## Someday

- Topology / B-rep. Explicitly out of scope until the geometry layer above is
  solid — `geomcore` should stay useful to people who only need the math.

## Contributing

Contributions are very welcome, at every stage of this roadmap.

- **Pick an item and open an issue first** so we can agree on scope and API
  shape before you invest time.
- **The quality bar:** every numeric feature lands with golden-fixture tests
  (1e-7 tolerance), rustdoc with doctests, and — where it's user-facing —
  Python bindings and tests.
- **Good first contributions:** new curve/surface types via the
  `ParametricCurve3D` / `ParametricSurface` traits (no changes to core dispatch
  needed), examples, documentation, and benchmarks.