Source: https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/implementation/

instrument implementation / implementation-contract

# Projectile Range & Trajectory Plotter implementation

A source-bound implementation contract for Projectile Range & Trajectory Plotter; deployment and executable qualification remain separate.

Status: **VERIFIED_CLEAN**Lifecycle: **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-clean

**Evidence ID**: t6-005

**Effect**: Computation or source lookup only

## Input and validation requirements

The specification does not state validation behavior for g=0 or for a downward launch angle. Without guards, g=0 causes division by zero and a negative launch angle can produce negative or otherwise invalid flight-time and range results if the level formulas are applied mechanically.

## Required corrections

No binding erratum is attached to this unique-name record. Implementers must still preserve the declared units, domain, and failure behavior.

## Inspectable interface fixture

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

````
{
  "inputs": {
    "v0_m_per_s": 10,
    "angle_deg": 45,
    "g_m_per_s2": 9.8,
    "h0_m": 0,
    "sample_x_m": [
      0,
      5,
      10
    ]
  },
  "expected_outputs": {
    "R_m": 10.2040816,
    "H_above_ground_m": 2.55102041,
    "H_gain_m": 2.55102041,
    "T_s": 1.44307506,
    "sampled_points": [
      {
        "x_m": 0,
        "y_m": 0
      },
      {
        "x_m": 5,
        "y_m": 2.55
      },
      {
        "x_m": 10,
        "y_m": 0.2
      }
    ],
    "roots_x_m": [
      0,
      10.2040816
    ],
    "vertex": {
      "x_m": 5.10204082,
      "y_m": 2.55102041
    }
  },
  "working": "For theta=45 degrees, sin(theta)=cos(theta)=sqrt(2)/2 and sin(2theta)=1. T=2*v0*sin(theta)/g=2*10*(sqrt(2)/2)/9.8=14.1421356/9.8=1.44307506 s. R=v0^2*sin(2theta)/g=10^2*1/9.8=100/9.8=10.2040816 m. H=v0^2*sin^2(theta)/(2g)=100*(1/2)/(19.6)=50/19.6=2.55102041 m. Since x=v0*cos(theta)*t and y=v0*sin(theta)*t-(g/2)t^2, eliminating t gives y=x*tan(45 degrees)-g*x^2/(2*v0^2*cos^2(45 degrees))=x-9.8*x^2/(2*100*0.5)=x-0.098x^2. Thus y(0)=0, y(5)=5-0.098*25=2.55, and y(10)=10-0.098*100=0.2. The roots are x=0 and x=1/0.098=10.2040816. The vertex is at x=R/2=5.10204082 and y=2.55102041."
}
````

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/>)[02**Mechanism**](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/mechanism/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/qualification/>)

## 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`
