Генерировать (почти) гексагональную pl anet с 30 * s² + 2 ячейки? - PullRequest
3 голосов
/ 12 марта 2020

Когда я смотрю на вики для разрабатываемой игры «Песни эонов», я вижу утверждение, что число сгенерированных плиток на сгенерированном pl anet можно рассчитать как

30 * s² + 2

, где s - это размер pl anet. Они также говорят, что pl anet состоит почти из всех шестиугольников и только из 12 пятиугольников.

Я немного знаю о методах подразделений (например, подразделение root -3), но я полностью потерян на этом.

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

Кто-то знает, как это делается? Некоторые документы или исходные коды были бы великолепны.

1 Ответ

4 голосов
/ 12 марта 2020

В одном из комментариев к верхнему ответу во второй ссылке упоминается, как это делается: сфера создается путем деления три angular граней икосаэдра. Получающиеся треугольники могут быть сгруппированы в шестиугольники. Некоторые из шестиугольников пересекут края. Треугольники на кончиках исходных граней могут быть сгруппированы только в пятиугольники.

Базовая конструкция (s = 1) даст вам каноническое тесселяция football . С увеличением размера вы получаете:


tesselation of one face with different sizes

Для каждой из 12 вершин икосаэдра вы получаете один пятиугольник. За каждый из 30 ребер икосаэдра вы получаете (s - 1) шестиугольников. С каждым увеличением s на 1 количество полных шестиугольников (белого цвета) увеличивается на 3 · (s - 1). Для s = 1 у вас есть только один полный шестиугольник. Таким образом, для каждой из 20 граней икосаэдра вы получаете:

H = 1 + 3 · ∑ (k = 1 ... s) k
= 1 + 3 / 2 (с-1) · с

Всего:

T = 30 · (с-1) + 20 · (1 + 3 / 2 (с - 1) · с) + 12
= 30 · с - 30 + 20 + 30 · (с - 1) · с + 12
= 30 · с 2 + 2

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