Вам дать готовое решение? По идее вам нужен приемник и ардуина. Считываете с приеника уровень сигнала и сравниваете с эталонными значениями. На основе этого находите расстояние.
Я знаю о сферической системе. Проблема вот в чем. Есть у нас планета определенного радиуса. И есть точка на поверхности (R, 0, 0). Так вот точка (R, 0, 1) вовсе не обязательно будет являться соседним пикселем (скорее даже не будет являться). Можно попробовать вычислить длину экватора в пикселях, зная длину радиуса в пикселях (примем это за единицу измерения длины) и поделив 360 на длину экватора найдем шаг азимутального угла. Длина меридиана у сферы совпадает с экватором, потому и зенитного тоже. Сработает такой способ? А если длина экватора выйдет дробным числом? Округлить до целого и изменить длину радиуса соответственно?
И как получившийся массив высот спроецировать на двумерную плоскость? Скажем, мы знаем сферические координаты наблюдателя относительно центра планеты. Я так понимаю просто переводом в декартовы и отрисовкой тут не обойдется.
Трехмерная графике — не подходит. Надо двумерную без изометрии. В принципе, можно подумать в сторону литосферных плит. Разбить планеты в несколько плит и на их стыках создать горы и материки.
Проблема в том, что сгенерировать надо на стороне клиента очень много планет — тысячи звездных систем. При этом сами планеты можно приближать не сильно.
Планеты будут полностью необитаемыми (т.е. это только для вида в космосе, а при приближении там уже будут свои локации). При проекции Меркатора, если я буду отображать круглое скользящее окно, нормально будут отрисовываться полюса? Какие преобразования нужно сделать для перехода в эту проекцию?