{"id":"v001","input":{"runway":"27","wind_direction":300,"wind_speed":15},"expect":{"result.headwind.value":12.99038105676658,"result.crosswind.value":7.499999999999999,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v002","input":{"runway":"09","wind_direction":30,"wind_speed":20},"expect":{"result.headwind.value":10.000000000000002,"result.crosswind.value":17.32050807568877,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v003","input":{"runway":"18","wind_direction":200,"wind_speed":12},"expect":{"result.headwind.value":11.276311449430901,"result.crosswind.value":4.104241719908025,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v004","input":{"runway":"36","wind_direction":350,"wind_speed":25},"expect":{"result.headwind.value":24.6201938253052,"result.crosswind.value":4.34120444167326,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v005","input":{"runway":"13","wind_direction":250,"wind_speed":10},"expect":{"result.headwind.value":-4.999999999999998,"result.crosswind.value":8.660254037844387,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v006","input":{"runway":"04","wind_direction":40,"wind_speed":8},"expect":{"result.headwind.value":8.0,"result.crosswind.value":0.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v007","input":{"runway":"01","wind_direction":190,"wind_speed":12},"expect":{"result.headwind.value":-12.0,"result.crosswind.value":1.4695761589768238e-15,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v008","input":{"runway":"22","wind_direction":110,"wind_speed":18},"expect":{"result.headwind.value":-6.156362579862037,"result.crosswind.value":16.914467174146353,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v009","input":{"runway":"31","wind_direction":310,"wind_speed":20},"expect":{"result.headwind.value":20.0,"result.crosswind.value":0.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v010","input":{"runway":"06","wind_direction":150,"wind_speed":9},"expect":{"result.headwind.value":5.51091059616309e-16,"result.crosswind.value":9.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v011","input":{"runway":"15","wind_direction":330,"wind_speed":14},"expect":{"result.headwind.value":-14.0,"result.crosswind.value":1.7145055188062944e-15,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v012","input":{"runway":"33","wind_direction":60,"wind_speed":22},"expect":{"result.headwind.value":-4.0413344371862654e-15,"result.crosswind.value":22.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v013","input":{"runway":"08","wind_direction":260,"wind_speed":11},"expect":{"result.headwind.value":-11.0,"result.crosswind.value":1.3471114790620886e-15,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v014","input":{"runway":"27","wind_direction":90,"wind_speed":7},"expect":{"result.headwind.value":-7.0,"result.crosswind.value":8.572527594031472e-16,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v015","input":{"runway":"11","wind_direction":200,"wind_speed":30},"expect":{"result.headwind.value":1.83697019872103e-15,"result.crosswind.value":30.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v016","input":{"runway":"35","wind_direction":20,"wind_speed":16},"expect":{"result.headwind.value":13.856406460551014,"result.crosswind.value":8.000000000000007,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v017","input":{"runway":"02","wind_direction":290,"wind_speed":13},"expect":{"result.headwind.value":-2.3880612583373385e-15,"result.crosswind.value":13.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v018","input":{"runway":"24","wind_direction":180,"wind_speed":40},"expect":{"result.headwind.value":20.000000000000004,"result.crosswind.value":34.64101615137754,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v019","input":{"runway":"27","wind_direction":270,"wind_speed":20},"expect":{"result.headwind.value":20.0,"result.crosswind.value":0.0,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v020","input":{"runway":"18","wind_direction":360,"wind_speed":15},"expect":{"result.headwind.value":-15.0,"result.crosswind.value":1.83697019872103e-15,"ok":true},"source":"Independent Python implementation of the ICAO Doc 7488/3 defining equations (tools/vectors/gen_aviation.py)","sourceVersion":"Doc 7488/3 (1993)","tolerance":{"result.headwind.value":{"abs":1e-06,"rel":1e-12},"result.crosswind.value":{"abs":1e-06,"rel":1e-12}}}
{"id":"v021","input":{"runway":"17","wind_direction":140,"wind_speed":25},"expect":{"result.headwind.value":22,"result.crosswind.value":13,"ok":true},"source":"FAA Pilot's Handbook of Aeronautical Knowledge (FAA-H-8083-25C), worked example read from the published chart or table","sourceVersion":"FAA-H-8083-25C (2023)","tolerance":{"result.headwind.value":{"abs":1.0},"result.crosswind.value":{"abs":1.0}}}
{"id":"v022","input":{"runway":"27","wind_direction":360,"wind_speed":10},"expect":{"result.headwind.value":0,"result.crosswind.value":10,"result.crosswind_from":"right","summary":"10 kt crosswind from the right and no headwind or tailwind on runway 27.","ok":true},"source":"Hand computation of the PHAK wind components, headwind = W·cos θ and crosswind = W·sin θ, with θ = 90° or 180° (FAA-H-8083-25C, Aircraft Performance): a wind straight across the runway has no headwind or tailwind component","sourceVersion":"FAA-H-8083-25C (2023)","tolerance":{"result.headwind.value":{"abs":1e-9},"result.crosswind.value":{"abs":1e-9}}}
{"id":"v023","input":{"runway":"27","wind_direction":90,"wind_speed":10,"gust":20},"expect":{"result.crosswind.value":0,"result.crosswind_from":"none","result.gust_crosswind.value":0,"result.headwind.value":-10,"summary":"No crosswind and 10 kt tailwind on runway 27.","ok":true},"source":"Hand computation of the PHAK wind components, headwind = W·cos θ and crosswind = W·sin θ, with θ = 90° or 180° (FAA-H-8083-25C, Aircraft Performance): a wind straight down the runway from behind has no crosswind component","sourceVersion":"FAA-H-8083-25C (2023)","tolerance":{"result.crosswind.value":{"abs":1e-9},"result.gust_crosswind.value":{"abs":1e-9},"result.headwind.value":{"abs":1e-9}}}
