Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument implementation / implementation-contract

Ray Diagram Plotter (lens/mirror) implementation

A source-bound implementation contract for Ray Diagram Plotter (lens/mirror); deployment and executable qualification remain separate.

Status: VERIFIED_WITH_ERRATALifecycle: implementation-contract

Binding contract

This record describes what an executable surface must bind and validate. It does not claim that a public calculator, package, or production route is deployed.

Record owner
Guth Instruments
Lifecycle
verified-with-binding-errata
Evidence ID
t6-095
Effect
Computation or source lookup only

Input and validation requirements

The focal-limit and zero-object-distance vectors produce undefined results and must be rejected or rendered as explicit nonfinite states. A plotting engine that blindly converts these values into SVG coordinates can generate NaN, infinity, or invalid geometry. The convention probe also shows that failing to define whether focal length is signed or type-derived can produce a completely different diagram.

Required corrections

[
  {
    "vector": 4,
    "field": "image_distance/magnification/image_height",
    "wrong": "-0.0667 / 0.2222 / 0.0111",
    "correct": "-0.075 / 0.25 / 0.0125",
    "cause": "working computes 1/di = -13.3333, di = -0.075 TWICE (including in its own Correction clause) then ships -0.0667"
  }
]

Inspectable interface fixture

The sample below is evidence for interface and validation tests, not a production implementation.

{
  "inputs": {
    "element": "converging lens",
    "f": 10,
    "do": 30,
    "object_height": 5,
    "units": "cm",
    "coordinate_convention": "lens at x=0; object at x=-30; positive x to the right",
    "sampled_points": {
      "parallel_ray": [
        -30,
        0,
        5,
        15
      ],
      "center_ray": [
        -30,
        0,
        15
      ],
      "front_focal_ray": [
        -30,
        -10,
        0,
        15
      ]
    }
  },
  "expected_outputs": {
    "image_distance": 15,
    "image_coordinate_x": 15,
    "magnification": -0.5,
    "image_height": -2.5,
    "image_type": "real, inverted, reduced",
    "sampled_y": {
      "parallel_ray": [
        {
          "x": -30,
          "y": 5
        },
        {
          "x": 0,
          "y": 5
        },
        {
          "x": 5,
          "y": 2.5
        },
        {
          "x": 15,
          "y": -2.5
        }
      ],
      "center_ray": [
        {
          "x": -30,
          "y": 5
        },
        {
          "x": 0,
          "y": 0
        },
        {
          "x": 15,
          "y": -2.5
        }
      ],
      "front_focal_ray": [
        {
          "x": -30,
          "y": 5
        },
        {
          "x": -10,
          "y": 0
        },
        {
          "x": 0,
          "y": 2.5
        },
        {
          "x": 15,
          "y": -2.5
        }
      ]
    },
    "key_features": {
      "lens_x": 0,
      "focal_points": [
        -10,
        10
      ],
      "two_focal_length_points": [
        -20,
        20
      ],
      "principal_ray_intersection": [
        15,
        -2.5
      ]
    }
  },
  "working": "Thin lens: 1/di = 1/f - 1/do = 1/10 - 1/30 = 3/30 - 1/30 = 2/30 = 1/15, so di = 15 cm. Magnification m = -di/do = -15/30 = -0.5. Image height = mh = (-0.5)(5) = -2.5 cm. Parallel ray after the lens: y = h(1 - x/f) = 5(1 - x/10), giving y(-30)=5, y(0)=5, y(5)=2.5, y(15)=-2.5. Center ray: y = -hx/do = -5x/30, giving y(-30)=5, y(0)=0, y(15)=-2.5. Front-focal ray passes through (-10,0), reaches (0,2.5), and then continues horizontally at y=-2.5 after the lens; all principal rays meet at (15,-2.5)."
}

Other records

Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

  • VERIFIED_LEDGER.json
  • evidence-tranche6/tranche6-results.json
  • tranche errata record