{"id":"v001","input":{"observer_lat":40.0,"observer_lon":-105.0,"observer_height":"10.0 m","target_lat":40.0,"target_lon":-103.24,"target_height":"3000.0 m"},"expect":{"result.elevation.value":0.465306912105895,"result.slant_range.value":150352.4217605019,"result.horizon_elevation.value":-0.10151577714473481,"result.azimuth.value":89.43432080155267,"ok":true},"source":"GeographicLib CartConvert -l, GeodSolve -i, and GeoidEval (egm96-15) (tools/vectors/gen_vector3d.py)","sourceVersion":"GeographicLib 2.x","tolerance":{"result.elevation.value":{"abs":1e-06},"result.slant_range.value":{"abs":1e-06},"result.horizon_elevation.value":{"abs":1e-06},"result.azimuth.value":{"abs":1e-06}}}
{"id":"v002","input":{"observer_lat":40.0,"observer_lon":-105.0,"observer_height":"10.0 m","target_lat":40.0,"target_lon":-100.0,"target_height":"3000.0 m"},"expect":{"result.elevation.value":-1.5138242568200906,"result.slant_range.value":426944.8517492499,"result.horizon_elevation.value":-0.10151577714473481,"result.azimuth.value":88.39243235102697,"meta.warnings.0.code":"BELOW_HORIZON","ok":true},"source":"GeographicLib CartConvert -l, GeodSolve -i, and GeoidEval (egm96-15) (tools/vectors/gen_vector3d.py)","sourceVersion":"GeographicLib 2.x","tolerance":{"result.elevation.value":{"abs":1e-06},"result.slant_range.value":{"abs":1e-06},"result.horizon_elevation.value":{"abs":1e-06},"result.azimuth.value":{"abs":1e-06}}}
{"id":"v003","input":{"observer_lat":40.0,"observer_lon":-105.0,"observer_height":"1500.0 m","target_lat":40.2,"target_lon":-104.7,"target_height":"1400.0 m","k":0.13},"expect":{"result.elevation.value":-0.32129840876989935,"result.slant_range.value":33883.12111017686,"result.horizon_elevation.value":-1.159583483410969,"result.azimuth.value":48.94134004776064,"result.apparent_elevation.value":-0.30149629001736095,"ok":true},"source":"GeographicLib CartConvert -l, GeodSolve -i, and GeoidEval (egm96-15) (tools/vectors/gen_vector3d.py)","sourceVersion":"GeographicLib 2.x","tolerance":{"result.elevation.value":{"abs":1e-06},"result.slant_range.value":{"abs":1e-06},"result.horizon_elevation.value":{"abs":1e-06},"result.azimuth.value":{"abs":1e-06},"result.apparent_elevation.value":{"abs":1e-06}}}
{"id":"v004","input":{"observer_lat":34.0522,"observer_lon":-118.2437,"observer_height":"100.0 m","target_lat":33.9416,"target_lon":-118.4085,"target_height":"10.0 m","k":0.25},"expect":{"result.elevation.value":-0.3516120506127077,"result.slant_range.value":19553.416444217775,"result.horizon_elevation.value":-0.27801122359234975,"result.azimuth.value":231.1859443113999,"result.apparent_elevation.value":-0.3296314521748969,"ok":true},"source":"GeographicLib CartConvert -l, GeodSolve -i, and GeoidEval (egm96-15) (tools/vectors/gen_vector3d.py)","sourceVersion":"GeographicLib 2.x","tolerance":{"result.elevation.value":{"abs":1e-06},"result.slant_range.value":{"abs":1e-06},"result.horizon_elevation.value":{"abs":1e-06},"result.azimuth.value":{"abs":1e-06},"result.apparent_elevation.value":{"abs":1e-06}}}
{"id":"v005","input":{"observer_lat":0.0,"observer_lon":0.0,"observer_height":"0.0 m","target_lat":0.0,"target_lon":0.0,"target_height":"35786000.0 m"},"expect":{"result.elevation.value":90.0,"result.slant_range.value":35786000.0,"result.horizon_elevation.value":-0.0,"ok":true},"source":"GeographicLib CartConvert -l, GeodSolve -i, and GeoidEval (egm96-15) (tools/vectors/gen_vector3d.py)","sourceVersion":"GeographicLib 2.x","tolerance":{"result.elevation.value":{"abs":1e-05},"result.slant_range.value":{"abs":1e-05},"result.horizon_elevation.value":{"abs":1e-05}}}
{"id": "v006", "input": {"observer_lat": 40.0, "observer_lon": -105.0, "observer_height": "10 m", "target_lat": 40.0, "target_lon": -104.0, "target_height": "3000 m"}, "expect": {"ok": true, "result.azimuth.value": 89.67860140748971, "result.elevation.value": 1.6218366706699618, "result.slant_range.value": 85465.2109445326, "result.horizon_elevation.value": -0.10151577714473481}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v007", "input": {"observer_lat": 40.0, "observer_lon": -105.0, "observer_height": "10 m", "target_lat": 41.0, "target_lon": -105.0, "target_height": "10000 m"}, "expect": {"ok": true, "result.azimuth.value": 6.653574432417596e-14, "result.elevation.value": 4.636562482376943, "result.slant_range.value": 111578.28731610825, "result.horizon_elevation.value": -0.10151577714473481}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v008", "input": {"observer_lat": 40.0, "observer_lon": -105.0, "observer_height": "1600 m", "target_lat": 39.5, "target_lon": -105.5, "target_height": "4000 m"}, "expect": {"ok": true, "result.azimuth.value": 217.82477811657046, "result.elevation.value": 1.6438054060059024, "result.slant_range.value": 70201.2317594539, "result.horizon_elevation.value": -1.2839507907067473}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v009", "input": {"observer_lat": 0.0, "observer_lon": 0.0, "observer_height": "0 m", "target_lat": 0.0, "target_lon": 0.5, "target_height": "5000 m"}, "expect": {"ok": true, "result.azimuth.value": 90.0, "result.elevation.value": 4.881156373663839, "result.slant_range.value": 55905.42188588573, "result.horizon_elevation.value": -0.0}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v010", "input": {"observer_lat": 51.5, "observer_lon": -0.12, "observer_height": "20 m", "target_lat": 51.9, "target_lon": -0.12, "target_height": "11000 m"}, "expect": {"ok": true, "result.azimuth.value": 0.0, "result.elevation.value": 13.647438432404904, "result.slant_range.value": 45876.36457740114, "result.horizon_elevation.value": -0.1435648949397829}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v011", "input": {"observer_lat": -33.87, "observer_lon": 151.21, "observer_height": "30 m", "target_lat": -34.2, "target_lon": 150.7, "target_height": "8000 m"}, "expect": {"ok": true, "result.azimuth.value": 232.00231951693422, "result.elevation.value": 7.337610258312803, "result.slant_range.value": 60216.05741737634, "result.horizon_elevation.value": -0.1758302537960951}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v012", "input": {"observer_lat": 35.68, "observer_lon": 139.69, "observer_height": "50 m", "target_lat": 35.68, "target_lon": 140.69, "target_height": "12000 m"}, "expect": {"ok": true, "result.azimuth.value": 89.70836626280065, "result.elevation.value": 7.106637942942432, "result.slant_range.value": 91395.3637430212, "result.horizon_elevation.value": -0.22699558466003367}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v013", "input": {"observer_lat": 89.5, "observer_lon": 0.0, "observer_height": "5 m", "target_lat": 89.0, "target_lon": 90.0, "target_height": "2000 m"}, "expect": {"ok": true, "result.azimuth.value": 63.43754925387903, "result.elevation.value": 0.3560852244694045, "result.slant_range.value": 124909.80007939874, "result.horizon_elevation.value": -0.07178251789098944}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v014", "input": {"observer_lat": 25.2, "observer_lon": 55.27, "observer_height": "5 m", "target_lat": 25.6, "target_lon": 55.9, "target_height": "9000 m"}, "expect": {"ok": true, "result.azimuth.value": 54.91074822993642, "result.elevation.value": 6.2811886778591095, "result.slant_range.value": 77917.92917123382, "result.horizon_elevation.value": -0.07178251789098944}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v015", "input": {"observer_lat": -45.0, "observer_lon": 170.0, "observer_height": "100 m", "target_lat": -44.0, "target_lon": 171.0, "target_height": "6000 m"}, "expect": {"ok": true, "result.azimuth.value": 35.94255673620377, "result.elevation.value": 1.8569285985403174, "result.slant_range.value": 136836.8021975301, "result.horizon_elevation.value": -0.32101918469196866}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v016", "input": {"observer_lat": 19.43, "observer_lon": -99.13, "observer_height": "2240 m", "target_lat": 19.9, "target_lon": -99.6, "target_height": "7000 m"}, "expect": {"ok": true, "result.azimuth.value": 316.6291305803273, "result.elevation.value": 3.4742902280964936, "result.slant_range.value": 71877.06172264123, "result.horizon_elevation.value": -1.5191274933806327}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v017", "input": {"observer_lat": 64.15, "observer_lon": -21.94, "observer_height": "20 m", "target_lat": 63.9, "target_lon": -22.6, "target_height": "3000 m"}, "expect": {"ok": true, "result.azimuth.value": 229.47858313513592, "result.elevation.value": 3.8061463213320947, "result.slant_range.value": 42749.34656841101, "result.horizon_elevation.value": -0.1435648949397829}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v018", "input": {"observer_lat": 0.0, "observer_lon": 0.0, "observer_height": "1000 m", "target_lat": 5.0, "target_lon": 0.0, "target_height": "1000 m"}, "expect": {"ok": true, "result.azimuth.value": 0.0, "result.elevation.value": -2.5000317980603857, "result.slant_range.value": 552797.2696635507, "result.horizon_elevation.value": -1.0150920501978131}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v019", "input": {"observer_lat": 45.0, "observer_lon": -75.0, "observer_height": "200 m", "target_lat": 45.5, "target_lon": -74.5, "target_height": "4500 m"}, "expect": {"ok": true, "result.azimuth.value": 35.058742413493, "result.elevation.value": 3.309443105253156, "result.slant_range.value": 68193.41339013631, "result.horizon_elevation.value": -0.4539867157285823}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v020", "input": {"observer_lat": -60.0, "observer_lon": -60.0, "observer_height": "10 m", "target_lat": -59.0, "target_lon": -59.0, "target_height": "8000 m"}, "expect": {"ok": true, "result.azimuth.value": 27.38132760029667, "result.elevation.value": 3.095099634430729, "result.slant_range.value": 125303.42970515792, "result.horizon_elevation.value": -0.10151577714473481}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
{"id": "v021", "input": {"observer_lat": 78.2232, "observer_lon": 15.6267, "observer_height": "30 m", "target_lat": 78.0, "target_lon": 16.5, "target_height": "2500 m"}, "expect": {"ok": true, "result.azimuth.value": 140.69441974500518, "result.elevation.value": 4.268264731570527, "result.slant_range.value": 32110.811711348288, "result.horizon_elevation.value": -0.1758302537960951}, "source": "PROJ through pyproj, EPSG:4979 to EPSG:4978 (WGS 84 geodetic to geocentric), with the east-north-up rotation applied from its own definition (tools/vectors/gen_nav_vector.py)", "sourceVersion": "pyproj 3.6.1 / PROJ 9.3.0", "tolerance": {"result.azimuth.value": {"abs": 1e-09}, "result.elevation.value": {"abs": 1e-09}, "result.slant_range.value": {"abs": 1e-06}, "result.horizon_elevation.value": {"abs": 1e-09}}}
