Run the tests
tests/run_tests.sh runs 20 engine unit tests and 14 headless QGIS integration tests, including the published A320 turning radii and ICAO jet blast table.
Open source · GPL-2.0-or-later
Every Tractrix product is a client of one open-source engine. The kinematics, the aircraft data, the clearance tables and the jet blast calibration are published, tested and yours to audit, reuse and improve.
What is inside
The core is pure Python with no QGIS dependency, so it runs in a notebook, a server or a CI job exactly as it runs inside QGIS.
| Module | Responsibility | Method and source |
|---|---|---|
| kinematics.py | Forward taxi, pushback, articulated chains, steering angles, turning radii | Tractrix pursuit update, ICAO Doc 9157 Part 2 App. 1 |
| geometry.py | Aircraft and vehicle body models, key points, convex hulls | FAA ACD dimensions; estimated planform, flagged per output |
| standards.py | Wingtip, stand and wheel-to-edge clearances, taxiway widths | Annex 14 Table 3-1 and 3.13.6, Doc 9157 Table 1-1, AC 150/5300-13B Tables 4-1, 4-2 |
| jetblast.py | Velocity contours and intake hazard areas | Single equivalent jet, Witze decay, calibrated to Doc 9157 Table A2-1 |
| library.py | 388 aircraft and 14 ground vehicles | FAA Aircraft Characteristics Database; 44 cited steering limits |
Headless
The tractrix-engine command reads a tractrix/1 request from a file or standard input and always writes JSON to standard output. It exits with 0 on success, 2 on a request error and 1 on an engine error, which makes it easy to use from any language.
# turning radii of an A320 at maximum steering
echo '{"protocol": "tractrix/1",
"task": "turning",
"params": {"aircraft": "A320", "steer_deg": 0}}' \
| tractrix-engine run
# → {"protocol": "tractrix/1", "ok": true,
# "summary": {"runs": {"A320": {"R4_wingtip": …}}}}
Open development
An engineering model earns trust when others can check it. These are the ways in.
tests/run_tests.sh runs 20 engine unit tests and 14 headless QGIS integration tests, including the published A320 turning radii and ICAO jet blast table.
Steering limits are hand-keyed in tools/aircraft_overrides.json, each with its source document. Add a type or a better value with its citation.
If a result differs from a manufacturer chart, open an issue with the aircraft, the input line and the published value. Discrepancies are treated as bugs.
Licence: GPL-2.0-or-later, as required for QGIS plugins. Aircraft data re-keyed from public facts; no vendor library, data file or software was used or reverse-engineered. See licences.