ไม่มีใครรู้วิธีการสร้างอัลกอริทึมที่สามารถทำให้รูปเหมือนในภาพเมื่อได้รับชุดของคะแนนเฉพาะ (อาร์เรย์ 3D)
ไม่มีใครรู้วิธีการสร้างอัลกอริทึมที่สามารถทำให้รูปเหมือนในภาพเมื่อได้รับชุดของคะแนนเฉพาะ (อาร์เรย์ 3D)
คำตอบ:
มาที่นี่หลังจากการต่อสู้ แต่เนื่องจากยังไม่มีคำตอบที่ยอมรับและเห็นว่า @Luke ปฏิเสธที่จะรับตัวแทนที่เขาสมควรได้รับนี่คือบทสรุปอย่างรวดเร็วของลิงก์ที่เขาให้ไว้
ดังนั้นอัลกอริทึมเต็มสามารถใช้ได้ที่นี่:
http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html
ความคิดคือการ bootstrap ตาข่ายของคุณด้วยวิธีที่ง่ายซึ่งจะช่วยให้คุณมีทรงกลมที่มี 20 ใบหน้าและจากนั้นปรับแต่งจนกว่าคุณจะพอใจ
คุณเริ่มต้นด้วยฮอว์คิง ตามที่บทความในวิกิพีเดียกล่าวว่าคุณสามารถรับจุดยอดได้โดยการวาดรูปสี่เหลี่ยมผืนผ้าสามอันที่เหมือนกันและมุมฉาก คุณมี 3 รูปสี่เหลี่ยมผืนผ้ามี 4 มุมแต่ละมุม -> 12 จุดยอด
ภาพประกอบ Wikipedia:
ตัวอย่างเช่นจุดแผน Z คือ (a, b คือความยาวสี่เหลี่ยมผืนผ้า):
ตอนนี้คุณยังต้องหา 20 ใบหน้า นี่เป็นแบบฝึกหัดสำหรับผู้อ่าน: p
ตอนนี้คุณมีทรงกลมพื้นฐานแล้วคุณอาจต้องการเพิ่มรูปหลายเหลี่ยม คุณทำได้ด้วยอัลกอริธึมง่ายๆนี้:
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)
ในการทำซ้ำแต่ละครั้งเราอาจต้องสร้างใบหน้าใหม่ แต่มันค่อนข้างง่าย แต่ละหน้าแบ่งออกเป็นสี่: