2012-10-03 15 views
11

मान लीजिए कि मैं केंद्र, [C1, C2, सी 3, सी 4, ... सीडी] के साथ एक डी-आयामी क्षेत्र चलाते हैं और एक त्रिज्या आर अब मैं समान रूप से वितरित अंक के एन संख्या प्लॉट करने के लिए (अलग से प्रत्येक से समान दूरी पर चाहते हैं अन्य) क्षेत्र की सतह पर। इससे कोई फर्क नहीं पड़ता कि ये बिंदु बिल्कुल कहां हैं, सिर्फ वे एक-दूसरे से समान रूप से समान हैं। मैं एक समारोह है कि इन बातों की एक सरणी देता है, पीडी-आयामी क्षेत्र की सतह पर एन बिंदुओं को लगभग साजिश के अलावा कैसे प्लॉट करें?

function plotter(D, C[1...D], R, N) 
{ 
    //code to generate the equidistant points on the sphere 

    return P[1...N][1...D]; 
} 

3-dimensional sphere with many points

3-dimensional sphere with a few points

+0

यह गणितीय बहुत सही पाने के लिए तकनीकी है। मैं इसके बजाय math.stackexchange.com पर पूछूंगा। , तो यह लेकिन सिर्फ एक इकाई डी-क्षेत्र (स्केलिंग और अनुवाद यह आर, पर (c_1, ..., c_D) तुच्छ है केन्द्रित त्रिज्या बनाने के लिए के रूप में। –

+0

पर अंक के रूप में यह वाक्यांश मैं पूरी तरह से इस के माध्यम से नहीं सोचा शायद समझ में नहीं आ रहा है। अगर आप किसी भी बिंदु से शुरू करते हैं (कहें (आर, 0, 0, ..., 0) और मान लें कि क्षेत्र मूल में केंद्रित है)। अब उस बिंदु को डी -1 अक्ष (कंधे ' इससे कोई फर्क नहीं पड़ता कि वह स्थिर है) थेटा/(एन -1) के कोण से और वहां एक नया बिंदु डालें (इसमें बहुत सारे [मैट्रिक्स गुणा] शामिल होंगे (http://en.wikipedia.org/wiki/Rotation_matrix# General_rotations)। यह एन -1 बार करें। यह आपको प्राप्त हो सकता है कि आप चाहते हैं, लेकिन अगर मैं इसे असफल रूप से विफल करता हूं तो मैं क्षमा चाहता हूं क्योंकि मैंने इसे सभी तरह से नहीं सोचा है। –

+0

आप एक यादृच्छिक समाधान बना सकते हैं और फिर इसे एनील करें। डी-क्षेत्र पर एन यादृच्छिक बिंदु बनाएँ। समानता के लिए एक उपाय का उपयोग करके इसका मूल्यांकन करें। यादृच्छिक रूप से एक यादृच्छिक बिंदु tweak। अगर यह माप में सुधार करता है, तो चिमटा रखें, और इसे पूर्ववत करें। थके हुए तक दोहराएं। – NovaDenizen

उत्तर

0

एक ही रास्ता मैं उस के बारे में सोच सकते हैं अच्छे परिणाम चाहिए चाहते हैं।

  1. क्षेत्र की सतह पर एन अंक उत्पन्न करें। उच्च आयामों के लिए ऐसा करने का सामान्य तरीका डी-आयामी सामान्य वितरण के आधार पर अंक उत्पन्न करना और क्षेत्र में सामान्यीकृत करना है। ये समान रूप से स्थान दिया गया है नहीं किया जाएगा - तो हम कदम दो
  2. अगला प्रत्येक बिंदु अन्य बिंदुओं कुछ repulsions समारोह का उपयोग कर विकर्षित होते हैं और एक छोटे से समय-कदम का उपयोग करें, आप डी-क्षेत्र को स्पर्शरेखा होने की गति की दिशा को समायोजित कर की जरूरत है। बिंदु को ले जाएं और फिर क्षेत्र में वापस दोबारा डालें। जब तक आप अंक भी पर्याप्त नहीं मानते तब तक ऐसा करते रहें।
6

कई विकल्प:

  • बेतरतीब ढंग से क्षेत्र पर अंक फेंक और उन्हें समान रूप से प्रसार करने के लिए एक लॉयड छूट का उपयोग करें: आप iteratively उनके Voronoi आरेख की गणना और उन्हें अपने Voronoi सेल के केंद्र की ओर ले जाते हैं (क्षेत्र पर काम करने के बजाय, आप क्षेत्र के लिए प्रतिबंधित एक यूक्लिडियन वोरोनोई आरेख का उपयोग करना चाह सकते हैं: उदाहरण के लिए सीजीएएल इसे देख सकता है, या my article देखें)।

  • तो एक प्राथमिक अनुमान ठीक है (। यानी, अगर एक समान रूप से यादृच्छिक वितरण काफी अच्छा है), तो आप सूत्र का उपयोग कर सकते विकी पर विस्तार से बताया: N-Sphere। यदि नहीं, तो आप अभी भी इस यादृच्छिक नमूनाकरण का उपयोग

  • से ऊपर की विधि के आरंभ के रूप में कर सकते हैं, अभी भी यादृच्छिक लेकिन समकक्ष नमूनों की बेहतर धारणा के लिए, आप एक पोइसन-डिस्क वितरण उत्पन्न कर सकते हैं। उच्च आयाम में तेज़ कोड Robert Bridson's homepage पर उपलब्ध है। यद्यपि आपको गोलाकार डोमेन के लिए इसे अनुकूलित करने की आवश्यकता हो सकती है।

1

मुझे नहीं पता कि इसका अभी तक उल्लेख किया गया है या नहीं; लेकिन आप कर सकते हैं, क्योंकि अन्य ने क्षेत्र पर समान वितरण से ड्रॉ पॉइंट का सुझाव दिया है। इसके बाद, कोलम्ब ऊर्जा के अनुसार प्रत्येक बिंदु प्रवाह; एक ढाल वंश विधि का उपयोग कर। इस विशेष समस्या को बहुत ध्यान मिला है। की जाँच करें निम्नलिखित paper और this website

+0

एक प्लग के रूप में मैंने क्षेत्र के बिंदुओं के अच्छी तरह से आदेशित वितरण उत्पन्न करने के लिए पायथन कोड लिखा है [https://github.com/arvsrao/SpherePoints)। – Arvind

+0

क्या आप जानते हैं कि एन-स्फीयर के लिए कार्यान्वयन कहां मिलना है? (एन> 2) – gota

संबंधित मुद्दे