Думается мне, что скоро Google даст нам возможность нарисовать не только ломаную на своих картах, но и кривую. А с необходимостью нарисовать кривую линию я столкнулся уже сейчас, в процессе работы с одним проектом. И пришлось вертеться.
Я обычно очень люблю почитать на Хабре посты вида «Смотрите, что я сделал» (особенно, когда это не стартап). Поэтому — смотрите, что я сделал — я реализовал грязный хак, который поможет нарисовать кривые.
Сначала — картинка (не кликабельно):

1) Сказать мне, что не так. В комментариях, в почте или любым другим удобным способом.
2) Клонировать ветку на github, сделать изменения и сообщить мне, если вы хотите, чтобы они влились в мою ветку.
А он умеет
Нет, а еще он не умеет заменять вам gnuplot и другие программы, которые рисуют графики. Поэтому всем, кто хочет нарисовать, например, тангенс на промежутке [-10; 10], сразу хочу сказать — получится плохо, ведь опорные точки распределяются равномерно. Потому что я ума не приложу, зачем рисовать графики неограниченных функций на картах :-)
Хотя тангенс на отрезке [-1; 1] выглядит очень даже ничего — потому что ограничен и непрерывен.

Я обычно очень люблю почитать на Хабре посты вида «Смотрите, что я сделал» (особенно, когда это не стартап). Поэтому — смотрите, что я сделал — я реализовал грязный хак, который поможет нарисовать кривые.
Сначала — картинка (не кликабельно):

Прежде чем читать много букв, хочу попробовать!
Я бы тоже захотел. Пройдите вот по этому адресу. Там будет карта. Щелкните по ней один раз, потом щелкните в другом месте, на некотором удалении от первого щелчка. Посмотрите на результат. Можете щелкать дальше.Зачем?
Обычно мне хочется нарисовать кривую линию, когда я изображаю на карте путь пешехода. Ведь люди не ходят через дома, не левитируют над речками и вообще любят тротуар. Поэтому мне всегда хотелось изобразить их путь кривой.Как задавать кривые?
Кажется, заставлять людей учить теорию по кривым Безье, это не очень здорово. Поэтому я решил, что достаточно задавать кривые функциями одного переменного. Я лично больше всего люблю синус и косинус. Они достаточно красочно изображают путь пьяного пешехода.Как они будут отображаться?
Графики функций будут аппроксимироваться графиками многочленов. По-русски: будут выбираться несколько точек на графике и соединяться отрезками. От количества точек зависит качество получаемого графика и скорость работы.Как это выглядит в коде?
my_poly = ApproxPolyline(gmap, lls, f, range, points);
map_instance.addOverlay(my_poly.get_polyline());
gmap
— объект класса GMap2
(он нужен, потому что в нем есть метод преобразования географических координат в декартовы), lls
— массив из двух точек, которые надо соединить графиком (объектов класса GLatLng
), f
— функция одного переменного, которую хочется изобразить, range
— массив из двух чисел (отображаемый промежуток),points
— количество точек, которые будут соединены отрезками.Где скачать?
Ссылки
Я разместил это на GitHub: страница репозитория и ссылки на архивы со скриптом последней ревизии: zip и tar.Размер
Исходник скрипта на момент публикации весит 3400 байт, после сжатия YUICompressor — 2026 байт.Лицензия
Код распространяется по лицензии MIT.Как помочь?
Есть два способа:1) Сказать мне, что не так. В комментариях, в почте или любым другим удобным способом.
2) Клонировать ветку на github, сделать изменения и сообщить мне, если вы хотите, чтобы они влились в мою ветку.
А он умеет «грабить корованы»?
Нет, а еще он не умеет заменять вам gnuplot и другие программы, которые рисуют графики. Поэтому всем, кто хочет нарисовать, например, тангенс на промежутке [-10; 10], сразу хочу сказать — получится плохо, ведь опорные точки распределяются равномерно. Потому что я ума не приложу, зачем рисовать графики неограниченных функций на картах :-) Хотя тангенс на отрезке [-1; 1] выглядит очень даже ничего — потому что ограничен и непрерывен.
[:||||:]
Ах да, возможно это уже кто-то сделал, а я не знаю. Мне захотелось тряхнуть стариной и вспомнить немножко математики. Если это действительно не актуально, дайте мне знать и я скрою топик (только сначала научите — как).