Skip to content

Capabilities and status

Axiolid is striving to be a multipurpose, exact B-rep geometry kernel — usable for CAD construction, for rule checking over building models, and for the analytical work those applications need. It is explicitly not intended to be another tessellation pipeline. Exact geometry is the model; tessellation is one output you can ask for, with a tolerance you choose. See ADR 0020.

That is the ambition. This page separates it from the status, which is deliberately conservative:

  • Implemented — a focused crate or provider has executable behavior and tests.
  • Represented — the neutral type vocabulary or contract exists.
  • Seam — an extension boundary exists; not a claim that Axiolid bundles a production implementation.
  • Planned — accepted as in-scope by an ADR, not yet built.

Where the two differ, the status column wins. An accepted ambition is not evidence that an algorithm exists.

Where the implementation stands against the ambition

Graph execution today still stores results as triangles: axiolid-mesh-compile memoises every graph node as a TriMesh, so a surface it can represent exactly is discretised at the first graph edge. The focused certified affine trace arrangement in axiolid-construct now returns an analytic ExactBRep, but it is not yet carried through the graph. For a unit cylinder this under-reports volume by 6.4e-03 at 32 segments and 2.5e-05 at 512, always in the same direction, and chained operations compound it.

Closing that gap is the kernel's main line of work. Until it is closed, treat any exactness claim as applying to evaluation, not to operation results.

Core and reference work

CapabilityStatusEvidence / boundary
Scalar values, frames, transforms, bounds, intervals, toleranceImplementedaxiolid-core
Mesh values, polygon/triangle utilities and viewsImplementedaxiolid-mesh
Robust-orientation and in-circle / in-sphere predicate reference pathsImplementedaxiolid-predicates with degeneracy and filter tests; re-exported by axiolid-reference. Depends only on axiolid-core and axiolid-guarantees, so a consumer gets certified signs without curves, surfaces, or meshes (ADR 0036)
Scalar geometry generationImplemented broad discrete path plus focused analytic arrangementaxiolid-construct; profile/path families remain mesh results. A one-owner certified affine surface trace becomes two closed trimmed faces plus an explicit embedded pcurve on the containing face; see ADR 0029
Scalar graph compilationImplemented reference pathaxiolid-mesh-compile; DAG traversal, caching, model-driven directrices, and B-rep face tessellation. Consumes axiolid-construct rather than owning sweeps. Produces meshes today; see ADR 0020
Polygon triangulationImplemented provideraxiolid-tessellation-contract adopts Earcut under the contract in ADR 0015
Mesh Boolean executionOptional provideraxiolid-mesh-boolean-boolmesh; limited to its mesh contract and tests
Mesh plane sectionImplemented scalar oracleaxiolid-mesh-section-contract::MeshPlaneSection plus axiolid-reference::ScalarSection; exact binary64 plane-side classification, source-topology stitching of outward-oriented closed solids, closed plane-local contours, explicit limits/cancellation/scratch preflight, and input-mesh provenance. Coplanar surface overlap and open/non-manifold results fail closed; no analytic exactness or region nesting is claimed. See ADR 0033

Geometry representation

CapabilityStatusNotes
Primitive solids and half-spacesRepresentedaxiolid-primitive owns neutral values and validation
Profiles / contoursRepresented with validationaxiolid-profile
Curves and surfacesRepresentedaxiolid-curve, axiolid-surface; representation alone is not an evaluator claim
Polynomial/rational B-spline evaluationImplemented scalar oracleaxiolid-evaluate (re-exported by axiolid-reference); validates compact knot/control/weight data and exposes homogeneous point, first-, and second-derivative curve/surface jets
Linear intersection: line/line and segment/segment in 2DImplementedaxiolid-linear-intersection; certified parallel/coincident/crossing classification, exact endpoint-contact parameters, collinear overlap spans, and typed refusals naming the operand at fault. 3D linear and curve/surface intersection are not implemented
Analytic curve evaluation and adaptive flatteningImplementedaxiolid-evaluate (re-exported by axiolid-reference); native-parameter evaluation with a chord-error budget, fail-closed on depth exhaustion and unbisectable intervals
Point→parameter inversion, elementary surfacesImplementedaxiolid-evaluate (re-exported by axiolid-reference); plane/cylinder/cone/sphere/torus with residual validation, refusing degenerate axis/apex/pole points
General NURBS differential analysisImplemented reference pathaxiolid-nurbs; curve tangents/curvature and surface fundamental forms, normals, Gaussian/mean/principal curvature; see ADR 0022
NURBS inverse queriesImplemented reference paths plus bounded certified slicesaxiolid-nurbs; deterministic budgeted multistart curve/surface candidates, globally certified clamped curve projection and curve-pair distance, and globally certified open clamped and explicit cyclic-periodic surface projection over the full rectangular or quotient domain. The surface certificate retains every possible global-minimizer box, requires distance and parameter resolution, and refuses trims or neutral closed axes lacking the explicit cyclic schema; see ADR 0025 and ADR 0030
Planar clamped NURBS curve/curve rootsImplemented bounded reference sliceaxiolid-nurbs; exact-sign single-span line/point predicates with a distinct zero-length PointContact, contractive transverse polynomial/rational Bézier boxes via strict-interior Krawczyk proof, explicit native-parameter resolution, localized structural overlap/endpoint tangency, compact parameter-only DFS work items, hard work ceilings, and explicit unresolved singular/boundary boxes. General tangency and seam ownership/deduplication remain unimplemented; see ADR 0026
Clamped, internally continuous NURBS curve/surface rootsImplemented bounded reference sliceaxiolid-nurbs; accepts internal knot multiplicity 1..=degree and treats valid full-multiplicity internal knots as unsupported by this certified query; outward tensor rational-Bézier refinement, conservative native-span curve/surface derivative hulls, strict-interior 3×3 Krawczyk existence/uniqueness proofs, explicit three-parameter resolution, compact parameter-only DFS work items, shared hard work ceilings, and explicit unresolved singular/tangential/boundary boxes. General contact classification, periodic/seam/trim ownership, discontinuous span joins, surface/surface tracing, and topology remain unimplemented; see ADR 0027
NURBS exact transformationsImplementedaxiolid-nurbs; homogeneous curve knot insertion/reversal/split/Bézier decomposition and surface U/V insertion/reversal preserve the represented shape
Verified periodic curve viewsImplemented bounded semanticsaxiolid-nurbs; PeriodicCurve2/PeriodicCurve3 require declared closure plus verified positional seam continuity, report C0/C1/C2 continuity, wrap only explicit view evaluation, canonicalize interior insertion/split parameters, revalidate insertion, and return neutral edited/open curves. They do not define periodic control-net or surface topology; see ADR 0031
Explicit periodic B-spline surfacesImplemented fixed-topology semanticsCyclic U/V/UV schema, wrapped jets, alias-safe edits, and certified projection; see ADR 0032
Trimmed curved-face tessellationImplemented bounded reference pathaxiolid-mesh-compile; endpoint-inclusive pcurve boundaries and holes, guarded structured-grid/Earcut seeds, topological seam reuse, explicit outer/bound orientation, face-level conforming support-surface refinement, periodic face charts, and fail-closed input/per-edge/per-face/aggregate/depth limits; see ADR 0019
Topology / B-rep vocabularyRepresentedaxiolid-topology provides generic typed-role topology; axiolid-brep provides strict owned analytic catalogs and required native trim spans
Exact B-rep result contractImplemented contract with one focused constructoraxiolid-brep::ExactBRep refuses missing supports/spans and generic topology failures. axiolid-construct constructs the certified one-owner affine trace arrangement; see ADR 0024 and ADR 0029
Exact B-rep operation resultsFocused affine arrangement only; general operations plannedOne bounded surface-pair slice returns analytic supports, closed trims, an embedded face curve, native spans, and a residual certificate. Sweeps, booleans, solids, graph persistence, and curved intersections remain unimplemented
Single-span affine NURBS surface/surface tracesImplemented bounded reference slice with focused topology handoffaxiolid-nurbs proves affine transverse bounded traces. axiolid-construct splits the uniquely boundary-owned rectangular patch and attaches the same edge as an embedded pcurve on the containing face. Dual-boundary ownership, corners, mixed ownership, curved tracing, loops, tangency/coincidence, and multispan stitching remain unresolved; see ADR 0028 and ADR 0029
Immutable shared geometry DAGImplemented structural modelaxiolid-model uses typed IDs and backward references
Sweeps / extrusions / revolutions / loftsImplemented discrete reference path; exact-result contract readyaxiolid-construct does not yet construct exact B-rep sweeps. Its L2 result boundary now requires an explicit exact B-rep or tolerance-bearing tessellation request; exact construction remains L2 and must not return mesh fallbacks
Spatial, measures, healingFocused crates / staged capabilityConsult each crate’s PLAN.md; do not infer broad CAD coverage

Execution and acceleration

CapabilityStatusBoundary
Portable CPU contextImplemented shellaxiolid-backend-cpu; portable defaults and explicit feature tiers
Parallel / SIMDOpt-in context featuresThey require measurement and differential validation before performance claims
GPU graph executionContract seamaxiolid-backend-gpu provides an API-neutral seam, not a bundled GPU algorithm suite
Native CUDA/HIPPlanned out-of-tree providersSee ADR 0011

Performance work is deliberately deferred; see ADR 0013 and the roadmap. Correctness and exactness come first, and the architecture is kept clean so optimization stays possible later.

In scope, not yet built

Accepted by ADR 0020 as work the kernel intends to do. These broader exact/certified forms do not exist today:

  • Exact B-rep results carried through operations, rather than meshes between graph nodes.
  • General curved surface/surface intersection-curve tracing, closed loops, and tangent/overlap or seam/trim-owned completion beyond the bounded affine trace slice.
  • Exact analytic booleans, section curves, offsets, and fillets, which all sit downstream of intersection.

Explicit non-goals today

  • Source-format parsing or semantic interpretation.
  • A claim of OpenCascade compatibility or replacement coverage.
  • Bundled production CUDA, HIP, Metal, Vulkan, or WebGPU compute kernels.
  • A global hidden tolerance policy.

How to evaluate a claim

Use the evidence nearest the implementation:

  1. The relevant crate’s public API and tests.
  2. The architecture decision that defines the contract.
  3. Feature-isolation and layering gates.
  4. Benchmark reports for performance statements.

The research comparison is useful context, but it is not a capability declaration.

Released under the Mozilla Public License 2.0.