Page actions
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.
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.jsonevidence-tranche6/tranche6-results.jsontranche errata record