Покрытие Земли шестиугольными плитками карты

Во многих стратегических играх используются шестиугольные плитки. Одним из основных преимуществ является то, что расстояние между центром любой плитки и всеми соседними плитками одинаково.

Мне было интересно, есть ли у кого-нибудь мысли о совмещении системы шестиугольных плиток с традиционной географической системой (долгота/широта). Я думаю, было бы интересно покрыть земной шар шестиугольными плитками и иметь возможность сопоставлять географические координаты с плиткой.

Кто-нибудь видел что-нибудь отдаленно близкое к этому раньше?

ОБНОВЛЕНИЕ

Я ищу способ разделить поверхность сферы так, чтобы каждое деление имело одинаковую площадь поверхности. В идеале центры смежных подразделений должны быть равноудалены.


person carrier    schedule 14.04.2009    source источник
comment
Кроме того, вы хотите помнить, что Земля довольно далека от сферической. В большинстве случаев это не имеет большого значения, но если вы хотите сопоставить тайлы с поверхностью, в конечном итоге выяснится тот факт, что это не сфера.   -  person Michael Kohne    schedule 15.04.2009
comment
См. pub.ist.ac.at/~edels/hexasphere.   -  person Gnubie    schedule 01.04.2016
comment
@Gnubie: Вы попали сюда из Матопереполнение? = Д   -  person Vandermonde    schedule 04.04.2016
comment
@Vandermonde: Как ты догадался? ;-)   -  person Gnubie    schedule 04.04.2016


Ответы (14)


Взгляните на vraid/earthgen; он использует шестиугольники (плюс несколько пятиугольников) и включает исходный код (см. планета/сетка/create_grid.cpp).

По состоянию на 2018 год доступна новая версия на основе рэкета.

vraid/earthgen image

person amitp    schedule 05.04.2013
comment
Интересно. Есть ли объяснение алгоритма, кроме чтения источника? Есть ли способ получить долготу и широту каждой плитки? - person carrier; 08.04.2013
comment
@carrier Подразделение икосаэдра. Начните с икосаэдра. Разделите каждую грань на 4 треугольника. Смыть, повторить. В конце концов, независимо от того, сколько раз вы делите (тесселируете), у вас все равно будет только 12 пятиугольников (из вершин исходного икосаэдра). Широта/долгота получаются путем взятия трехмерных координат данной плитки и вычисления их угол относительно экватора и нулевого меридиана. - person 3Dave; 14.10.2015
comment
@3Dave Это отличное предложение, и я пытался его использовать! Однако цифры, кажется, не складываются. Я начал с икосаэдра и замостил 3 раза. Это 20*4^3 = 1280 лиц. Создание 12 пятиугольников в исходных вершинах оставляет мне 1280 - (12 * 6) = 1220 граней. Это число не делится на 6. Моя математика неверна? Надеюсь, моя математика неверна... - person user3249829; 10.04.2019
comment
@user3249829 user3249829 Способствующие факторы: каждая из исходных 20 граней вносит вклад как минимум (я думаю) в три пятиугольника. Я немного подумаю об этом. Тем временем посмотрите на футбольный мяч. (Без шуток.) - person 3Dave; 10.04.2019
comment
@user3249829 user3249829 Итак, подумайте об этом так: у икосаэдра 12 вершин и, следовательно, 12 пятиугольников, но только 20 граней. - person 3Dave; 11.04.2019
comment
@3Dave Я на самом деле написал сценарий в Blender. Вот так выглядит мозаичный икосаэдр и вот вот как это выглядело, когда я превратил треугольники вокруг исходных вершин в пятиугольники, а группы вокруг них в шестиугольники. Вы можете видеть, что нет возможности заполнить остальные треугольники шестиугольниками. - person user3249829; 11.04.2019
comment
@ 3Dave Кажется, я понял: мы неправильно думали о тесселяции. Если вы разделите каждый треугольник на 4 треугольника, вы получите не футбольный мяч, а это. Вместо того, чтобы разрезать каждый край пополам, нам нужно разрезать их на три. Таким образом, вы получите три треугольника вокруг шестиугольника вместо четырех треугольников. - person user3249829; 11.04.2019

Ну, многие люди подчеркивали, что вы не можете замостить сферу шестиугольными плитками — возможно, вам интересно, почему.

Эйлер утверждал (и есть много интересных и разных доказательств, и даже целая книга), что для данной плитки сферы в x многоугольниках с y общим количеством ребер и z вершин (например, куб имеет 6 многоугольников с 12 ребрами и 8 вершин) формула

x - y + z = 2

всегда выполняется (обратите внимание на знак минус).

(Кстати: это топологическое утверждение, поэтому куб и сфера — или, если быть точным, только их граница — здесь действительно одно и то же)

Если вы хотите использовать только шестиугольники для мощения сферы, вы получите x шестиугольников, имеющих 6*x ребер. Однако одно ребро является общим для каждой пары шестиугольников. Итак, мы хотим посчитать только 3*x из них и 6*x вершин, но, опять же, каждый из них разделяется на 3 шестиугольника, так что в итоге вы получите 2*x ребер.

Теперь по формуле:

x - 3*x + 2*x = 2

вы получите ложное утверждение 0 = 2, поэтому вы действительно не можете использовать только шестиугольники.

Вот почему классический футбольный мяч выглядит именно так, современные, конечно, более причудливы, но основное остается фактом.

person Random Dev    schedule 17.04.2009
comment
интересно. любые ссылки для этого доказательства? - person Erich Mirabal; 20.04.2009
comment
Многое зависит от определения шестиугольника на изогнутой поверхности. Вы сделали предположение, что вершины должны быть общими для 3 шестиугольников. Возможно, некоторых можно уговорить на 2 или 4? Например, разделите экватор на шесть частей. Эти ребра прямые для сферической поверхности. Итак, два полушария делят Землю на два шестиугольника. Конечно, это кажется неправильным, но можете ли вы придумать определение шестиугольника с криволинейной поверхностью, которое не применимо к полусфере? - person Bob Stein; 08.11.2019

Покрыть сферу обычными тайлами (кроме длинных и тонких «дольок апельсина») невозможно. Так что оптимальный способ пикселизации карты при определенных ограничениях или требованиях на самом деле представляет собой довольно сложную исследовательскую задачу.

Очень часто (в астрофизике) используется один вид тайлинга — пикселизация HEALPIX: http://healpix.sourceforge.net/

Эта пикселизация удовлетворяет требованию равновеликости; однако невозможно сделать все равноудаленным.

Еще одна пикселизация — это «GLESP», который имеет некоторые другие свойства (и не является таким совершенным программным пакетом): http://www.glesp.nbi.dk/

person Andrew Jaffe    schedule 14.04.2009
comment
Я никогда не слышал об этом. Довольно круто. - person Erich Mirabal; 15.04.2009
comment
очень красиво, и никогда не слышал о нем раньше - person David Lehavi; 15.04.2009
comment
Время глупых вопросов: Не поэтому ли мы видим, что геодезические методы популярны в студенческих городках (имятельное множественное число университетского городка) - то, что они считаются неразрешимыми или известны как неразрешимые, приводит к известным решениям в геодезических... (?) Я всегда задавался вопросом об этом. те студенты-архитекторы, которые могут работать над этим вопросом и хотят определить довольно сложную исследовательскую проблему (проблемы), чтобы избежать глубоких экскурсий в пустую трату времени, которые не имеют решения. - person Nicholas Jordan; 12.10.2009

Первый сайт, который приходит на ум, это Информация по программированию игр от Amit. и его набор ссылок на шестиугольных сетках.

person Michael Kristofik    schedule 14.04.2009
comment
Более новая и актуальная статья от Амита: здесь - person Thomas; 19.06.2017

Вы не можете покрыть сферу равными шестиугольниками, но вы можете покрыть ее геодезической, состоящей в основном из шестиугольников, с 12 пятиугольниками в вершинах икосоэдра, и шестиугольники слегка искажены, чтобы сделать его выпуклым в сферу.

person GoatRider    schedule 14.04.2009
comment
Икосоэдр — это 20-гранный кубик, как в D&D. Каждая вершина имеет 5 треугольников. Если срезать этот угол, получится пятиугольник, а оставшаяся часть каждого треугольника — шестиугольник. Разделите этот шестиугольник на меньшие шестиугольники по мере необходимости. - person GoatRider; 15.04.2009
comment
Или представьте себе футбольный мяч: он состоит из пятиугольников, каждый из которых окружен шестиугольником. Или посмотрите здесь на усеченный икосаэдр: en.wikipedia.org/wiki /File:Uniform_polyhedron-53-t12.png - person Frank Shearar; 20.04.2009
comment
@GoatRider - это, безусловно, лучшая визуализация такой сетки, о которой я слышал. - person Anne Quinn; 13.08.2013
comment
@ErickRobertson Это потрясающе. Это ты пишешь? - person carrier; 08.10.2013

Шестиугольные плитки слишком сложны для обычной геометрии применительно к геопространственному использованию. Посмотрите HTM, чтобы найти аналогичную вещь с треугольниками, или поищите в Google " Иерархическая треугольная сетка» для других источников.

person Erich Mirabal    schedule 14.04.2009
comment
Разве это не означает, что нам нужны более совершенные абстракции, прежде чем их можно будет использовать в геопространственных целях? Я только что выпустил пакет R, который справляется с этим довольно хорошо. - person Richard; 13.07.2016

Прочтите «Геодезические дискретные глобальные грид-системы» Кевина Сар, Дениса Уайта и А. Джона Кимерлинга.

Вы можете найти его здесь...

person Sphaerica    schedule 13.03.2010
comment
-1 Когда весь ваш ответ является ссылкой на другой источник, я ожидаю, что вы каким-то образом резюмируете источник. Скажи мне, почему я хочу прочитать этот документ. Вы только предоставили ссылку, и я думаю, что мы можем сделать лучше. - person Erick Robertson; 08.10.2013

Я только что создал пакет R под названием dggridR, который делит поверхность Земли на равные части шестиугольники для целей бинарного пространственного анализа.

Карстен делает этот звук невозможным в своем ответе, но на практике это не так. При введении 12 пятиугольников все остальные шестиугольники без проблем подходят друг другу. Поскольку у вас могут быть миллионы и миллионы ячеек для сетки с высоким разрешением, вы можете забыть об этих пятиугольниках большую часть времени.

Математика преобразования сложна. Вы можете найти их в:

  • Крайдер, Джон Э. «Точные уравнения для картографической проекции Фуллера и обратного». Картографика: Международный журнал географической информации и геовизуализации 43.1 (2008): 67–72. Веб.

  • Снайдер, Джон П. «Проекция равновеликой карты для многогранных глобусов». Картографика: Международный журнал географической информации и геовизуализации 29.1 (1992): 10–21. Веб.

В фоновом режиме dggridR использует программное обеспечение DGGRID Кевина Сара.

Вам также могут пригодиться следующие ссылки:

  • Грегори, Мэтью Дж. и др. «Сравнение межсотовых метрик в дискретных глобальных сетевых системах». Компьютеры, окружающая среда и городские системы 32.3 (2008): 188–203. перекрестная ссылка Веб.
  • Кимерлинг, Джон А. и др. «Сравнение геометрических свойств глобальных сетей». Картография и географическая информатика 26.4 (1999): 271–288. Распечатать.
  • Сар, К. «Гексагональные дискретные глобальные грид-системы для геопространственных вычислений». Архив фотограмметрии, картографии и теледетекции Vol. 22 (2011): 363–376. Распечатать.
  • Сар, Кевин. «Кодирование местоположения на дискретных глобальных сетках с икосаэдрической апертурой 3 шестиугольника». Компьютеры, окружающая среда и городские системы 32.3 (2008): 174–187. перекрестная ссылка Веб.
  • Сар, Кевин, Денис Уайт и А. Джон Кимерлинг. «Геодезические дискретные глобальные грид-системы». Картография и географическая информатика 30.2 (2003): 121–134. Распечатать.
person Richard    schedule 12.07.2016
comment
Нашел ссылку на последний в этом списке. Геодезические дискретные глобальные грид-системы Кевин Сар, Денис Уайт и А. Джон Кимерлинг discreteglobalgrids.org/wp-content/uploads/sites/33/2016/01/ - person Jeff Muir; 18.07.2017

В старой ролевой игре Traveler поверхности планет изображались в виде икосаэдров (разрезанных для печати в книге). Это привело к большому искажению угловых шестиугольников (они должны стать пятиугольниками). Вы можете найти такой материал при поиске GURPS Traveller.

person Svante    schedule 13.03.2010
comment
Да и GURPS Space имеет стандартную форму для планетарных шестнадцатеричных карт. Конечно, это абстракция и довольно грубая/зернистая. - person Dronz; 23.07.2013

Разделение сферы на равные части с плоскими поверхностями — крепкий орешек. Из-за этого вы получаете геодезические формы, которые не< /em> состоит из фигур, которые, в свою очередь, могут быть составлены из треугольников одинакового размера. Разбивая все шестиугольники и пятиугольники на треугольники, вы получаете треугольники с разными внутренними углами, что приводит к потере симметрии.

Единственное утешение, которое я могу дать вам, заключается в том, что все фигуры будут иметь ограниченное количество треугольников, которые можно классифицировать, что означает, что для небольшой геодезической можно многократно использовать 5 или 6 треугольников для описания всех шестиугольников и пятиугольников, необходимых для геодезической. Хотя расстояния от «центра» каждого треугольника/формы не будут равными, вы можете, по крайней мере, разделить обработку каждого треугольника на отдельный случай, предоставляя потенциальный обходной путь в коде.

person Avery Payne    schedule 14.04.2009

Есть только несколько платоновых многогранников, которые используют один тип многоугольника для аппроксимации сферы. Известные Икосаэдр и ДОДЕКАЭДР. Если вы готовы к небольшому искажению и нескольким перекрывающимся точкам, вы можете получить хорошие результаты, которые сделают игру увлекательной. Попробуйте ЭТУ ССЫЛКУ, которая позволяет иметь почти одинаковую площадь для всех плиток и довольно последовательную tile-distances для кругов вокруг земного шара.

Однако ни один из них не очень легко сопоставляется со старой доброй географической цилиндрической системой проекции долготы/широты.

Одно из решений — просто наложить сотовый узор на карту проекции EQUIRECTANGULAR и допустить ТОННЫ искажений. по мере приближения к полюсам ВОТ ЭТОГО .

Удачи в ваших исследованиях! :)

person jaya    schedule 05.05.2014

HEAlpix подходит, если ваше ограничение состоит в том, чтобы сохранить равную площадь при разделении сферы на части (интересно для покрытия площадь проекции на небе одинакова как на полюсах, так и в районе экватора). Вы в основном разделяете свою сферу на 4 каждый раз, следуя кольцевой или вложенной схеме, чтобы выполнить ограничение иерархической равной площади. Это также очень удобно для «развертывания» функций FT ((свойство изошироты) на небе, например, для изучения температуры мод CMB в миссии Planck или WMAP.

Он также реализован во многих языках программирования.

Кроме того, я должен упомянуть еще одну (хотя и не равной площади), называемую Q3C для «Quad Tree Cube», еще одну схему разделения неба, которая имеет другие преимущества (поиск конуса и x-совпадение).

оригинал бумаги:

http://adsabs.harvard.edu/abs/2006ASPC..351..735K

person pepestar    schedule 10.05.2016

Старый вопрос, но:

Другие ответы верны в том смысле, что невозможно замостить сферу, используя только шестиугольники.

Тем не менее, простой (иш) взлом:

Создайте 2d "лист" шестиугольников:

введите здесь описание изображения

и сместите их в трехмерном пространстве от начала координат на 1. Затем нормализуйте все вершины.

Это даст вам «выпуклую» версию листа с красивым сферическим изгибом. Проблема в том, что это будет работать, только если лист покрывает часть сферы.

Одно решение похоже на то, что используется для создания пола с бесконечной сеткой. Когда сфера вращается, когда вы переместите половину ячейки, поверните сферу назад на одну ячейку в соответствующем направлении. (Для шестиугольников числа на самом деле не являются половиной ячейки, а привязаны к размерам шестигранной плитки.) Это немного сложно в 3D, но выполнимо.

У меня был аналогичный вопрос в 2D некоторое время назад, который может быть полезен.

https://gamedev.stackexchange.com/questions/70092/infinite-treadmilling-hexagonal-grid/70341#70341

person 3Dave    schedule 15.10.2015
comment
Это действительно интересный хак. Хотя это не очень полезно для постоянных миров, где гексы должны постоянно существовать в одних и тех же координатах. Я НАДЕЮСЬ, что ошибаюсь :D - person user1617735; 03.03.2016

Существует статья, в которой рассматривается случай мозаики равной площади (почти квадратные плитки вокруг экватора). и относительно легко предварительно вычислить соседние тайлы и на какой тайл попадает определенный набор координат. Однако он не справляется с требованием равного расстояния между вершинами.

Копирую сюда аннотацию:

Предлагается новый метод разделения сферической поверхности на равные по площади ячейки. Метод основан на делении сферы на несколько широтных полос почти постоянного пролета с последующим делением каждой полосы на равные по площади ячейки. Он прост по конструкции и обеспечивает более равномерный шаг по широте между широтными полосами, чем другие методы изоляционной равновеликой мозаики сферической поверхности.

(Я использовал его идеи, пытаясь найти ближайших соседей по геолокации из длинного списка местоположений).

person tzot    schedule 24.02.2020