Кто-нибудь знает, как создать алгоритм, способный сделать фигуру такой же, как на картинке, когда дан набор определенных точек (3D-массив)
algorithms
user88794
источник
источник
Ответы:
Приходя сюда после битвы, но так как нет никакого принятого ответа и видя, что @Luke отказывается получить репутацию, которую он заслуживает, вот краткое резюме ссылки, которую он предоставил.
Итак, полный алгоритм доступен здесь:
http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html
Идея состоит в том, чтобы загрузить вашу сетку простым методом, который дает вам сферу с 20 гранями, а затем улучшать ее, пока вы не будете удовлетворены.
Начальная загрузка формы
Вы начинаете с икосаэдра . Как говорится в статье в Википедии, вы можете получить вершины, нарисовав три одинаковых и ортогональных прямоугольника. У вас есть 3 прямоугольника с 4 углами каждый -> 12 вершин.
Иллюстрация из Википедии:
Например, точки Z-плана (a, b - длина прямоугольника):
Теперь вам все еще нужно найти 20 лиц. Это оставлено в качестве упражнения для читателя: p
Уточнение формы
Теперь, когда у вас есть базовая сфера, вы можете добавить полигоны. Вы делаете это с помощью этого простого алгоритма:
Чтобы найти среднюю точку, мы предполагаем, что мы хотим создать единичную сферу (центр (0, 0, 0), радиус 1).
На каждой итерации нам, возможно, придется восстанавливать грани, но это довольно просто. Каждое лицо делится на четыре:
источник