| |||
![]()
|
![]() ![]() |
![]()
Доволен как слон, или Не можешь решить сложную задачу - решай простые Предмет моего ничем не оправданного самодовольства: ![]() Кривая некрасивая карта мира, отрисованная по добытому из надежных источников KML-файлу. Все для того же Пульта, разумеется. Казалось бы, и чему тут радоваться? В гуглевском стандартном языке разметки карт (KML) координаты раскрашиваемых областей (в нашем случае - стран) задаются через долготу и широту: (-180...180) (90..-90). При отрисовке таких координат на плоскости (и даже на глобусе, в Google Earth) возникает следующая проблема: координаты, пересекающие границу карты (например 170...-170, как у Чукотки) начинают отрисовываться "от меньшей к большей", и Чукотка становится большим кольцом, охватывающим Северный полюс: ![]() Разумеется, наша первоначальная программа отрисовки оказалась не лучше Google Earth: ![]() - вот что получилось при попытке отцентрировать карту не по Англии, а по США. Как только какая-то страна пересекает правую границу карты - она мигом превращается в кольцо вокруг Земли. Для правильной отрисовки таких стран в Google Earth (через KML) приходится хитрить со стилями (делая заливку прозрачной и отображая только границы), или вручную делить Чукотку на 2 части, 170..179.9999 и -179.9999...-170. Поскольку ручную работу в 21 веке я считаю почти преступлением, пришлось немного подумать и добавить к KML-Renderer метод, автоматически разрезающий попавшие на границу области на правую и левую половинки. Несколько дней возни - и вот наконец он заработал; теперь в рамках Пульта можно без проблем вращать карту мира вокруг вертикальной оси. Так вот, решение даже такой простой задачи вызвало ощутимый прилив сил и желания жить дальше. Отсюда мораль: когда все плохо - найти задачу попроще, решить ее, и убедиться, что плохо далеко не все. |
|||||||||||||
![]() |
![]() |