Хтось знає, як створити алгоритм, здатний зробити фігуру так само, як на малюнку, коли задано набір конкретних точок (3D-масив)

Хтось знає, як створити алгоритм, здатний зробити фігуру так само, як на малюнку, коли задано набір конкретних точок (3D-масив)

Відповіді:
Приїжджайте сюди після бою, але оскільки ще немає прийнятої відповіді і бачимо, що @Luke відмовляється отримати репутацію, яку він заслуговує, ось короткий підсумок посилання, яке він надав.
Тож повний алгоритм доступний тут:
http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html
Ідея полягає у завантаженні вашої сітки простим методом, який дає вам сферу з 20 гранями, а потім уточнюйте її до тих пір, поки ви не задоволитесь.
Ви починаєте з ікосаедра . Як говориться у статті вікіпедії, вершини можна отримати, намалювавши три однакових та ортогональних прямокутника. У вас є 3 прямокутники з 4 кутами кожен -> 12 вершин.
Ілюстрація у Вікіпедії:

Наприклад, точки плану Z є (a, b - довжини прямокутника):
Тепер вам залишається знайти 20 облич. Це залишається читачеві як вправу: с
Тепер, коли у вас є основна сфера, ви можете додати багатокутники. Ви робите це за допомогою цього простого алгоритму:
for each iteration:
# each iteration multiplies by 4 the number of faces
for each edge at the current iteration:
split the edge in two
replace the middle point on the sphere
Щоб знайти середню точку, ми припускаємо, що ми хочемо створити одиничну сферу (центр (0, 0, 0), радіус 1).
middlePoint(p1, p2):
middle = Point((p1.X + p2.X / 2), # same for y, z)
radius = sqrt(middle.X^2, middle.Y^2, middle.Z^2)
return Point(middle.X / radius, # same for y, z)
При кожній ітерації нам, можливо, доведеться реконструювати грані, але це досить легко. Кожне обличчя розділено на чотири:
