Умудрился наехать на гвоздь (где я его нашёл посреди дороги, ёлы-палы?). Хорошо, что задним колесом, а то так можно и "по дрова" с шоссе поехать.
Ещё случилось это в не очень удачном месте -- гетто, где живут одни чернышевские. Разумеется, никто не вызывался помочь мне поставить запаску. Мне, конечно, не сказать, что была нужна помощь -- это не первое моё родео. Но если бы на моём месте была хрупкая худенькая девушка?
После работы поеду куплю заплатку, поставлю на шину -- это достаточно просто.
Рисую ради развлечения небольшое GPS приложение для Ведроида. В частности, надо рассчитать расстояние от одной точки карты до другой.
Расстояние между параллелями остаётся достаточно постоянным -- около 69 миль (111 км) между градусами широты. Одна минута широты, соответственно, чуть больше мили. Но это между параллелями. А между меридианами расстояние плавно меняется от 69 миль между градусами долготы на экваторе до нуля на севером и южном полюсах! Поэтому разницу в градусах нельзя просто помножить на 69 -- дурь получится.
Тригонометрия на помощь!
Можно рассчитать длину полухорды между точками с координатами, вот так:
Длина полухорды = sin²(Δφ/2) + cos(φ1) * cos(φ2) * sin²(Δλ/2), где Δφ -- разница между координатами широты φ1 и φ2, Δλ -- разница между координатами долготы. Затем, имея длину полухорды, получим половину угла между координатами через арктангенс: Угол/2 = arctan(√a, √(1−a))
Арктангенс тут хитрый, с вторым параметром. Простой арктангенс не различает диаметрально противоположные векторы, а этот -- различает. В большинстве языков программирования есть функция atan2, выполняющая эти расчёты.
Затем, имея угол, через радиус вычислить длину дуги проще простого: Длина дуги = a * R, где R -- радиус, a -- угол.
Хотим получить расстояние между точками в километрах -- используем радиус Земли в километрах (6 371 km), хотим в милях -- используем радиус в милях, 3 959 mi. Хоть в локтях, пядях али саженях -- знай правильный радиус подставляй.
Проблем у данного способа две:
1. Координаты из градусов надо перевести в радианы (большое дело, помножил на π/180 и делу конец) 2. Земля имеет не идеальную форму шара, она слегка сплюснута из-за вращения. Поэтому эта формула даёт небольшую погрешность в расчётах. Но эта погрешность не превышает 0.3% (3 метра на 1 километр) -- невелико дело.