{
  "date": "2026-10-15",
  "provenance": "Self-created analytic geometry generated by scripts/ellipse-polyline-materials.ts. No third-party artwork, CAD software export or R12 roundtrip.",
  "license": {
    "name": "CC0-1.0",
    "url": "https://creativecommons.org/publicdomain/zero/1.0/",
    "scope": "Self-created fixture geometry and comparison illustration"
  },
  "units": "millimeters; $INSUNITS=4",
  "source": {
    "file": "source-ellipse-100x60.dxf",
    "entity": "ELLIPSE",
    "centerMm": [
      50,
      30,
      0
    ],
    "majorAxisVectorMm": [
      50,
      0,
      0
    ],
    "minorMajorRatio": 0.6,
    "startParameter": 0,
    "endParameter": 6.283185307179586,
    "closed": true,
    "analyticBoundsMm": {
      "minX": 0,
      "minY": 0,
      "maxX": 100,
      "maxY": 60,
      "width": 100,
      "height": 60
    },
    "parserSupportedEntities": 0,
    "parserBounds": null,
    "parserIssues": [
      {
        "severity": "not_checked",
        "code": "ENTITY_ELLIPSE",
        "details": "ELLIPSE is outside the strict 2D subset."
      },
      {
        "severity": "warning",
        "code": "NO_SUPPORTED_ENTITIES",
        "details": "No supported LINE or LWPOLYLINE entities were found."
      }
    ],
    "outcome": "ELLIPSE is outside the strict subset; no supported geometry is returned. This is not a corrupt-file verdict."
  },
  "approximations": [
    {
      "file": "ellipse-polyline-32.dxf",
      "vertices": 32,
      "segments": 32,
      "sampling": "equal ellipse parameter increments, 2*pi/N",
      "entity": "closed 2D straight-segment LWPOLYLINE; no bulges",
      "closed": true,
      "units": "millimeters",
      "bounds": {
        "minX": 0,
        "minY": 0,
        "maxX": 100,
        "maxY": 60,
        "width": 100,
        "height": 60
      },
      "analyticChordDeviationUpperBoundMm": 0.24076366639015356,
      "serializedChordDeviationUpperBoundMm": 0.24076366709726035,
      "parserIssues": [
        {
          "severity": "pass",
          "code": "STRICT_SUBSET",
          "details": "All parsed entities are within the strict 2D subset."
        }
      ]
    },
    {
      "file": "ellipse-polyline-128.dxf",
      "vertices": 128,
      "segments": 128,
      "sampling": "equal ellipse parameter increments, 2*pi/N",
      "entity": "closed 2D straight-segment LWPOLYLINE; no bulges",
      "closed": true,
      "units": "millimeters",
      "bounds": {
        "minX": 0,
        "minY": 0,
        "maxX": 100,
        "maxY": 60,
        "width": 100,
        "height": 60
      },
      "analyticChordDeviationUpperBoundMm": 0.015059065189787502,
      "serializedChordDeviationUpperBoundMm": 0.015059065896894283,
      "parserIssues": [
        {
          "severity": "pass",
          "code": "STRICT_SUBSET",
          "details": "All parsed entities are within the strict 2D subset."
        }
      ]
    }
  ],
  "bound": {
    "formula": "a * (1 - cos(pi/N)), with a=50 mm",
    "meaning": "Conservative analytic chord-deviation upper bound, not a measured maximum and not AutoCAD export precision.",
    "justification": "Map the unit circle and its equal-angle inscribed polygon by diag(50,30). Circle-to-chord deviation is at most 1-cos(pi/N); the linear map has Euclidean operator norm 50. Thus the ellipse-to-chord deviation is bounded by 50 times that value.",
    "serializationCoordinateRoundingUpperBoundMm": 7.071067811865477e-10,
    "serializationNote": "Nine-decimal DXF coordinates add at most sqrt(2)*0.5e-9 mm to the analytic bound; convex interpolation of rounded endpoints stays within this amount."
  },
  "sha256": {
    "source-ellipse-100x60.dxf": "cdc3fbf623fedf5c6c8c53f8c64882a0f00a9c42db1a01aaff7f45842fafb9f3",
    "ellipse-polyline-32.dxf": "93576527fd49c3a9c9eb86af802dc66c930b540d1f99b1f73cd99a56449abec3",
    "ellipse-polyline-128.dxf": "fa5d854f7dba4b731068cea2266e594ac772647f9471721f5b82707c62d832b1",
    "comparison.svg": "8ab2166149e00dc739322a6276d93b361e77387e555d0416c36f624b61e9bb0e"
  },
  "limitations": [
    "These polygons were generated explicitly as closed 2D LWPOLYLINE entities; they are not observed R12 or AutoCAD outputs.",
    "No AutoCAD, Inkscape, CAD/CAM import, machine or physical fabrication compatibility was tested.",
    "A PELLIPSE creation setting does not demonstrate conversion of an existing ELLIPSE.",
    "A real R12 roundtrip may create open or 3D POLYLINE entities outside the checker subset; inspect actual outputs separately.",
    "Identical bounds and closure do not establish curve accuracy; numerical sampling tests do not replace the analytic bound."
  ]
}
