{"id":"v001","input":{"pulse_rate":"240 kHz","fov":"70 deg","height":"100 m","speed":"10 m/s"},"expect":{"result.swath.value":140.04150764194193,"result.line_spacing.value":140.04150764194193,"result.pulse_density":171.37776080905377,"result.aggregate_density":171.37776080905377,"result.point_density":171.37776080905377,"result.quality_level":"QL1 (at least 8 pulses per m²)","ok":true},"source":"add-practitioner-essentials scenarios (swath about 140.0 m, 171 pulses per m², beyond QL1)","sourceVersion":"2026","tolerance":{"result.swath.value":{"rel":1e-09,"abs":1e-09},"result.line_spacing.value":{"rel":1e-09,"abs":1e-09},"result.pulse_density":{"rel":1e-09,"abs":1e-09},"result.aggregate_density":{"rel":1e-09,"abs":1e-09},"result.point_density":{"rel":1e-09,"abs":1e-09}}}
{"id":"v002","input":{"pulse_rate":"240 kHz","fov":"70 deg","height":"100 m","speed":"10 m/s","side_overlap":30,"returns":1.5},"expect":{"result.swath.value":140.04150764194193,"result.line_spacing.value":98.02905534935935,"result.pulse_density":171.37776080905377,"result.aggregate_density":244.82537258436253,"result.point_density":367.2380588765438,"result.quality_level":"QL1 (at least 8 pulses per m²)","ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.swath.value":{"rel":1e-09,"abs":1e-09},"result.line_spacing.value":{"rel":1e-09,"abs":1e-09},"result.pulse_density":{"rel":1e-09,"abs":1e-09},"result.aggregate_density":{"rel":1e-09,"abs":1e-09},"result.point_density":{"rel":1e-09,"abs":1e-09}}}
{"id":"v003","input":{"pulse_rate":"100 kHz","fov":"60 deg","height":"120 m","speed":"15 m/s","side_overlap":50},"expect":{"result.swath.value":138.56406460551014,"result.line_spacing.value":69.28203230275507,"result.pulse_density":48.112522432468836,"result.aggregate_density":96.22504486493767,"result.point_density":96.22504486493767,"result.quality_level":"QL1 (at least 8 pulses per m²)","ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.swath.value":{"rel":1e-09,"abs":1e-09},"result.line_spacing.value":{"rel":1e-09,"abs":1e-09},"result.pulse_density":{"rel":1e-09,"abs":1e-09},"result.aggregate_density":{"rel":1e-09,"abs":1e-09},"result.point_density":{"rel":1e-09,"abs":1e-09}}}
{"id":"v004","input":{"pulse_rate":"50 kHz","fov":"90 deg","height":"300 m","speed":"30 m/s","side_overlap":20,"returns":2},"expect":{"result.swath.value":599.9999999999999,"result.line_spacing.value":479.99999999999994,"result.pulse_density":2.777777777777778,"result.aggregate_density":3.4722222222222228,"result.point_density":6.9444444444444455,"result.quality_level":"QL2 (at least 2 pulses per m²)","ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.swath.value":{"rel":1e-09,"abs":1e-09},"result.line_spacing.value":{"rel":1e-09,"abs":1e-09},"result.pulse_density":{"rel":1e-09,"abs":1e-09},"result.aggregate_density":{"rel":1e-09,"abs":1e-09},"result.point_density":{"rel":1e-09,"abs":1e-09}}}
{"id":"v005","input":{"pulse_rate":"20 kHz","fov":"40 deg","height":"250 m","speed":"25 m/s"},"expect":{"result.swath.value":181.98511713310117,"result.line_spacing.value":181.98511713310117,"result.pulse_density":4.395963871127396,"result.aggregate_density":4.395963871127396,"result.point_density":4.395963871127396,"result.quality_level":"QL2 (at least 2 pulses per m²)","ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.swath.value":{"rel":1e-09,"abs":1e-09},"result.line_spacing.value":{"rel":1e-09,"abs":1e-09},"result.pulse_density":{"rel":1e-09,"abs":1e-09},"result.aggregate_density":{"rel":1e-09,"abs":1e-09},"result.point_density":{"rel":1e-09,"abs":1e-09}}}
{"id":"v006","input":{"pulse_rate":"240 kHz","fov":"180 deg","height":"100 m","speed":"10 m/s"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{}}
