क्या किसी को पता है कि एक एल्गोरिथ्म कैसे बनाया जा सकता है जो चित्र की तरह ही सक्षम है, जब विशिष्ट बिंदुओं का एक सेट दिया जाता है (3D सरणी)
क्या किसी को पता है कि एक एल्गोरिथ्म कैसे बनाया जा सकता है जो चित्र की तरह ही सक्षम है, जब विशिष्ट बिंदुओं का एक सेट दिया जाता है (3D सरणी)
जवाबों:
लड़ाई के बाद यहां आ रहे हैं, लेकिन चूंकि अभी तक कोई स्वीकृत जवाब नहीं है और यह देखते हुए कि @ लुक वह प्रतिनिधि पाने से इनकार करता है जिसके वह हकदार हैं, यहां वह उस लिंक का एक त्वरित सारांश है जो उसने प्रदान किया था।
तो पूर्ण एल्गोरिथ्म यहां उपलब्ध है:
http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html
विचार एक आसान विधि के साथ अपने जाल को बूटस्ट्रैप करना है जो आपको 20 चेहरों के साथ एक क्षेत्र देता है, और तब तक इसे परिष्कृत करें जब तक आप संतुष्ट न हों।
आप एक icosahedron से शुरू करते हैं । जैसा कि विकिपीडिया लेख कहता है, आप तीन समान और ऑर्थोगोनल आयत खींचकर कोने प्राप्त कर सकते हैं। आपके पास 4 कोनों के साथ 3 आयताकार हैं -> 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)
प्रत्येक पुनरावृत्ति पर, हमें चेहरों का पुनर्निर्माण करना पड़ सकता है, लेकिन यह काफी आसान है। प्रत्येक चेहरे को चार में बांटा गया है: