Покрытие Земли плитками шестиугольной карты - PullRequest
55 голосов
/ 15 апреля 2009

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

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

Кто-нибудь видел что-нибудь отдаленно похожее на это раньше?

UPDATE

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

Ответы [ 13 ]

29 голосов
/ 05 апреля 2013

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

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

vraid/earthgen image

21 голосов
/ 17 апреля 2009

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

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

x - y + z = 2

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

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

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

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

х - 3 * х + 2 * х = 2

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

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

18 голосов
/ 15 апреля 2009

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

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

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

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

16 голосов
/ 15 апреля 2009

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

11 голосов
/ 13 марта 2010

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

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

11 голосов
/ 15 апреля 2009

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

9 голосов
/ 15 апреля 2009

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

4 голосов
/ 13 марта 2010

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

4 голосов
/ 15 апреля 2009

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

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

3 голосов
/ 05 мая 2014

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

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

Одно из решений состоит в том, чтобы просто наложить сотовую схему на проекционную карту EQUIRECTANGULAR и разрешить ТОННЫ искажения при приближении к полюсам LIKE THIS .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...