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

instrument / verified-clean

# Projectile Range & Trajectory Plotter

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/projectile-range-trajectory-plotter/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Physics — Kinematics/Projectiles/Orbits, Forces/Energy/Momentum, Rotational Dynamics, Gravitation, Oscillations/Waves, Optics, E&M Fields, Relativity, Quantum, Statistical Thermo

**Tranche**: tranche-6

**Evidence ID**: t6-005

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The level-ground equations are valid. The instrument needs an explicit offset-height implementation, an unambiguous definition of H, explicit angle units, domain constraints, and a specified positive-root policy before it can be verified as fully specified.

### Formula and scope findings

- The level-ground formulas are standard and correct under uniform gravity, no air resistance, and equal launch/landing elevation.

- For h0 != 0, saying only 'use quadratic on y(t)=0' is underspecified: the implementation must use y(t)=h0+v0 sin(theta)t-(g/2)t^2, select the physically relevant nonnegative landing-time root, and compute R=v0 cos(theta)T.

- H is ambiguous when h0 != 0: the listed formula gives the height gained above launch point, whereas the absolute maximum height above the ground is h0+v0^2 sin^2(theta)/(2g).

- The trajectory equation and the method for converting time to plotted x values are not explicitly stated; they should be x(t)=v0 cos(theta)t and y(t)=h0+v0 sin(theta)t-(g/2)t^2.

- The specification does not define behavior for degenerate or invalid cases such as g<=0, v0<0, angles with cos(theta)=0, h0<0, or a launch from ground with theta=0 degrees.

### Unit assumptions

- Use SI units: v0 in m/s, g in m/s^2, h0, R, H, x, and y in m, and T in s.

- The test vectors assume angle is supplied in degrees; the implementation must explicitly document degrees versus radians and convert degrees before evaluating trigonometric functions.

- Assume uniform constant gravitational acceleration, no drag, no wind, and a flat horizontal landing plane at y=0.

- For h0=0, H is both the maximum height above launch point and the maximum height above the ground. For h0!=0, report absolute maximum height separately from height gained above launch.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

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.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "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."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche6/tranche6-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
