क्या किसी एल्गोरिथ्म का कोई पता है जो इस छवि की तरह एक आंकड़ा के लिए अनुमति देता है?


9

क्या किसी को पता है कि एक एल्गोरिथ्म कैसे बनाया जा सकता है जो चित्र की तरह ही सक्षम है, जब विशिष्ट बिंदुओं का एक सेट दिया जाता है (3D सरणी)

यहां छवि विवरण दर्ज करें


4
यह एक ऐसी चीज है, जिसे आप ढूंढ रहे हैं: blog.andreaskahler.com/2009/06/…
ल्यूक सैन एंटोनियो बालिएकी

3
@LukeSanAntonio पोस्ट करें कि एक उत्तर के रूप में ताकि मैं इसे बढ़ा सकूं कृपया;) (लेकिन सिर्फ लिंक नहीं, एल्गोरिथ्म का कुछ न्यूनतम विवरण एक उत्तर के लिए आवश्यक होगा)
yannis

1
@YannisRizos मैं करूँगा, लेकिन मुझे इस तरह की कोई जानकारी या अनुभव नहीं है, इसलिए मैं आपको एक पर्याप्त स्पष्टीकरण नहीं दे सकता (अच्छी तरह से मैं कर सकता था, लेकिन अन्य बहुत बेहतर कर सकते हैं) एकमात्र कारण मुझे पता था कि लिंक है क्योंकि मुझे ब्लेंडर से आकार का नाम पता था ( wiki.blender.org/index.php/Doc:2.4/Manual/Modeling/Meshes/… )
ल्यूक सैन एंटोनियो बालिएकी

एक 3D ऑब्जेक्ट से छाया बनाने का काम दैनिक किया जाता है, छाया मानचित्रण और छाया की मात्रा की जांच करें , लेकिन अधिक छाया निर्माण एल्गोरिदम उपलब्ध हैं
शाफ़्ट सनकी

यह वह शैडो नहीं है जिसे मैं बनाना चाहता हूं, यह भौतिक वस्तु है। हम इसे 3 डी प्रिंट करने जा रहे हैं।
user88794

जवाबों:


5

लड़ाई के बाद यहां आ रहे हैं, लेकिन चूंकि अभी तक कोई स्वीकृत जवाब नहीं है और यह देखते हुए कि @ लुक वह प्रतिनिधि पाने से इनकार करता है जिसके वह हकदार हैं, यहां वह उस लिंक का एक त्वरित सारांश है जो उसने प्रदान किया था।

तो पूर्ण एल्गोरिथ्म यहां उपलब्ध है:

http://blog.andreaskahler.com/2009/06/creating-icosphere-mesh-in-code.html

विचार एक आसान विधि के साथ अपने जाल को बूटस्ट्रैप करना है जो आपको 20 चेहरों के साथ एक क्षेत्र देता है, और तब तक इसे परिष्कृत करें जब तक आप संतुष्ट न हों।

आकार बूटस्ट्रैपिंग

आप एक icosahedron से शुरू करते हैं । जैसा कि विकिपीडिया लेख कहता है, आप तीन समान और ऑर्थोगोनल आयत खींचकर कोने प्राप्त कर सकते हैं। आपके पास 4 कोनों के साथ 3 आयताकार हैं -> 12 कोने।

विकिपीडिया चित्रण:

विंशतिफलक

उदाहरण के लिए, Z प्लान पॉइंट हैं (a, b आयत लंबाई हैं):

  • (+ ए, + बी, 0)
  • (ए, + बी, ०)
  • (+ ए, बी, 0)
  • (ए, -बी, ०)

अब आपको 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)

प्रत्येक पुनरावृत्ति पर, हमें चेहरों का पुनर्निर्माण करना पड़ सकता है, लेकिन यह काफी आसान है। प्रत्येक चेहरे को चार में बांटा गया है:

चेहरा निखारना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.