LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Я использовал вот этот алгоритм по первой ссылки из гугла по запросу «icosphere generation algorithm»: https://schneide.blog/2016/07/15/generating-an-icosphere-in-c/ (C++)

Следующие 2 ссылки из моего гугла:

https://observablehq.com/@mourner/fast-icosphere-mesh (JavaScript)

http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html (C#)

Все 3 алгоритма используют различные варианты ассоциативного массива чтобы хранить сгенерированные вершины с привязкой из какого ребра она была сгенерирована и избегать появления дупликатов (результатом работы алгоритмов является массив вершин и массив индексов вершин, предлагается использовать indexed rendering для отображения на экране, при этом для 4 итераций подразделения получается примерно 2500 вершин и 5000 треугольников, без индексов было бы 15000 вершин - соответственно, выигрыш по памяти в 2 раза, к тому же в 3 раза меньше математических операций таких как извлечение квадратного корня и деления, но ценой использования хештаблицы, впрочем, в последней редакции моего алгоритма нет переаллокаций и перехеширования, а значит простой поиск в хештаблице должен быть дешевле математических вычислений).

Исправление KivApple, :

Я использовал вот этот алгоритм по первой ссылки из гугла по запросу «icosphere generation algorithm»: https://schneide.blog/2016/07/15/generating-an-icosphere-in-c/ (C++)

Следующие 2 ссылки из моего гугла:

https://observablehq.com/@mourner/fast-icosphere-mesh (JavaScript)

http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html (C#)

Все 3 алгоритма используют различные варианты ассоциативного массива чтобы хранить сгенерированные вершины с привязкой из какого ребра она была сгенерирована и избегать появления дупликатов (результатом работы алгоритмов является массив вершин и массив индексов вершин, предлагается использовать indexed rendering для отображения на экране, при этом для 4 итераций подразделения получается примерно 2500 вершин и 5000 треугольников, без индексов было бы 15000 вершин - соответственно, выигрыш по памяти в 2 раза, к тому же в 3 раза меньше математических операций таких как извлечение квадратного корня и деления, но ценой использования хештаблицы, впрочем, в последней редакции моего алгоритма нет переаллокаций и перехеширования, а простой поиск в хештаблице должен быть дешевле математических вычислений).

Исходная версия KivApple, :

Я использовал вот этот алгоритм по первой ссылки из гугла по запросу «icosphere generation algorithm»: https://schneide.blog/2016/07/15/generating-an-icosphere-in-c/ (C++)

Следующие 2 ссылки из моего гугла:

https://observablehq.com/@mourner/fast-icosphere-mesh (JavaScript)

http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html (C#)

Все 3 алгоритма используют различные варианты ассоциативного массива чтобы хранить сгенерированные вершины с привязкой из какого ребра она была сгенерирована и избегать появления дупликатов (результатом работы алгоритмов является массив вершин и массив индексов вершин, предлагается использовать indexed rendering для отображения на экране, при этом для 4 итераций подразделения получается примерно 2500 вершин и 5000 треугольников, без индексов было бы 15000 вершин - соответственно, выигрыш по памяти в 2 раза).