Herkes bir dizi belirli nokta (3D dizi) verildiğinde, resimdeki gibi figür yapabilen bir algoritmanın nasıl oluşturulacağını biliyor mu?
Herkes bir dizi belirli nokta (3D dizi) verildiğinde, resimdeki gibi figür yapabilen bir algoritmanın nasıl oluşturulacağını biliyor mu?
Yanıtlar:
Savaştan sonra buraya geliyor, ancak henüz kabul edilmiş bir cevap olmadığından ve @ Luke'un hak ettiği temsilcisi almayı reddettiğini görünce, sağladığı bağlantının kısa bir özeti burada.
Yani tam algoritma burada mevcuttur:
http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html
Fikir, ağınızı 20 yüze sahip bir küre veren basit bir yöntemle önyüklemek ve tatmin olana kadar rafine etmektir.
Bir icosahedron ile başlarsınız . Vikipedi makalesinde dediği gibi, üç özdeş ve dik dikdörtgen çizerek köşeleri elde edebilirsiniz. Her biri 4 köşeli 3 dikdörtgeniniz vardır -> 12 köşe.
Wikipedia resmi:
Örneğin, Z plan noktaları (a, b dikdörtgen uzunluklarıdır):
Şimdi hala 20 yüzü bulmalısın. Bu okuyucuya bir alıştırma olarak bırakılmıştır: p
Artık temel bir küreye sahip olduğunuza göre, çokgen eklemek isteyebilirsiniz. Bunu bu basit algoritma ile yaparsınız:
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
Orta noktayı bulmak için birim küre (orta (0, 0, 0), yarıçap 1) oluşturmak istediğimizi varsayalım.
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)
Her yinelemede, yüzleri yeniden yapılandırmamız gerekebilir, ancak oldukça kolaydır. Her yüz dörde ayrılır: