Начал с тех 12 вершин, которые будут пятиугольными тайлами. Их координаты вычисляются как координаты четырех углов трех "золотых" прямоугольников. (см икосаэдр: http://ru.wikipedia.org/wiki/%D0%98%...8D%D0%B4%D1%80, золотые прямоугольники http://www.opengl.org.ru/books/opengl1_402.html) Дальше брал вершины по три штуки, такие, чтобы образовывали грань икосаэдра, и достраивал до нужной мне сетки. Там сложновато, много констант, которые определяют законы разбиения. Но если попробовать разбить ручками несколько раз, приходит ясность.После того, как для каждого тайла известны его соседи, можно использовать алгоритм "A*" (http://ru.wikipedia.org/wiki/%D0%90%...D0%BA%D0%B0_A*). Суть такова: из пункта А в пункт Б попадаем не более чем N шагов, где N -- общее количество тайлов. Для начала распихаем во все тайлы число N как количество шагов, необходимых для достижения пункта А. Потом вспомним, что из пункта А в пункт А шагов не надо, и поместим в А число 0. Далее цикл, пока есть изменения. Для внесения изменения берем каждый тайл и смотрим его соседей. Для всех соседей вычисляем минимум шагов, записанных в тайле, пусть это M. Если в самом тайле (центральном, который сейчас меняем) число больше, чем (M+1), записываем в тайл число M+1 и фиксируем факт, что есть изменение. Напоминаю, внешний цикл идет пока есть изменения. Как только после очередного просмотра изменений нет, выходим из цикла и строим путь из пункта Б в пункт А. Для этого берем число шагов пункта Б, вычитаем 1 и ищем соседа, у которого число шагов в точности равно этому значению. Переходим в этого соседа, уменьшаем число шагов на 1 и снова ищем соседа. Сосед с числом шагов 0 и будет пунктом А.