2012-02-18 13 views
5

मान लीजिए कि मेरे पास ध्रुवीय निर्देशांक के रूप में अंक का वेक्टर है।क्या केवल ध्रुवीय निर्देशांक का उपयोग करके पास के बिंदु खोजने के लिए कोई एल्गोरिदम है?

मान लीजिए कि उन बिंदुओं में से एक एक जांच के रूप में कार्य करता है जिसके लिए मैं एक निश्चित दूरी के भीतर अन्य सभी बिंदुओं को ढूंढना चाहता हूं।

क्या कार्टूनियन रूप में परिवर्तित किए बिना ऐसा करने के लिए कोई एल्गोरिदम है?

+0

क्या यूक्लिडियन एल्गोरिदम आपके लिए काम करता है? – Lostsoul

+0

आप उस सेगमेंट से संबंधित त्रिज्या और चाप की गणना कर सकते हैं जो पूरी तरह से आपके बिंदु और खोज त्रिज्या को शामिल करता है, फिर उन सीमाओं के भीतर अन्य सभी बिंदुओं की जांच करें। अंत में, आपको निश्चित रूप से उन बिंदुओं और आपके बीच की दूरी की गणना करना होगा। –

उत्तर

7

आप ध्रुवीय निर्देशांक के लिए दूरी की तलाश में हैं। आप इस link में सूत्र ढूंढ सकते हैं।

बिंदुओं के बीच दूरी (आर 1, ए 1) और (r2, A2) है: यदि आप कई बिंदुओं के लिए अपने एल्गोरिथ्म पैमाने करने की योजना

D = sqrt(r1*r1 + r2*r2 - 2*r1*r2*cos(a1-a2)) 
+0

इसके लिए धन्यवाद। – drb

2

, सावधान रहें, आस-पास के अंक के लिए जांच है बेहतर किया स्थानिक सूचकांक का उपयोग कर। मुझे ध्रुवीय निर्देशांक का उपयोग करके स्थानिक इंडेक्स के अस्तित्व से अवगत नहीं है, और मुझे यकीन है कि वे लागू/उपयोग करने के लिए थोड़ा जटिल होंगे। तो अगर आप हैं: अंक की

  • स्थल,
  • जांच अधिक बार की तुलना में आगे बढ़ अंक,

खुद के सवाल यह है कि आप कार्तीय निर्देशांक और एक स्थानिक सूचकांक का उपयोग करना चाहिए पूछो।

गणित स्वयं करें अपने ठेठ उपयोग के मामले के अनुसार:

  1. ध्रुवीय निर्देशांक के साथ कार्तीय का उपयोग करना:

    • कार्तीय को ध्रुवीय परिवर्तित केवल जब एक बिंदु चाल से किया जाता है, और दो त्रिकोणमितीय शामिल कार्य;
    • ओ (1) समय (औसत दूरी, स्थानिक सूचकांक का आकार, अंक की संख्या ...) के आधार पर किसी अन्य बिंदु से निकट बिंदुओं को ढूंढना, और कुछ भी शामिल नहीं हो सकता है जोड़/गुणा के अलावा (वर्ग की जड़ों भी नहीं, आप दूरी वर्ग की तुलना करते हैं)।
  2. का उपयोग ध्रुवीय निर्देशांक केवल:

    • सभी बिंदुओं के लिए स्कैन कर w/ओ स्थानिक सूचकांक हे (एन) है;
    • इसमें प्रति तुलना एक त्रिकोणमितीय फ़ंक्शन शामिल है (इस प्रकार n प्रति जांच ट्रिग कॉल)।

पता है कि trigs गणना समय में खूनी महंगे हैं रहें।

+0

हाय, कितने अंक हैं?और मुझे पता है कि कंप्यूटिंग कर रहे डिवाइस को महत्वपूर्ण है इसलिए मान लें कि यह एक मोबाइल डिवाइस है जैसे आईफोन 4 या ऐसा कुछ। धन्यवाद। – Maziyar

+1

आपके सीपीयू, भाषा इत्यादि पर कितने वास्तव में निर्भर करता है ... आपको वास्तव में जानने के लिए प्रोटोटाइप करना होगा। आम तौर पर सवाल यह नहीं है कि औसत * कितने * पर है, लेकिन यदि कोई सीमा है * आपका सेट कितना बड़ा हो सकता है * .. –

+0

मुझे लगता है कि शहर/पोस्ट का उपयोग करके उन्हें पहले फ़िल्टर करके जितना संभव हो सके डेटा को कॉल करना बेहतर है -कोड या यहां तक ​​कि रेस्तरां या कॉफी शॉप आदि जैसे डेटा का प्रकार या यहां तक ​​कि पास के डेटा को सीमित भी करें, यदि 5 किमी के भीतर दस लाख अंक हैं तो उन्हें रैंक या कुछ द्वारा क्रमबद्ध करने का प्रयास करें क्योंकि कोई भी मोबाइल पर इतना डेटा नहीं देख रहा है । धन्यवाद, आपके द्वारा उल्लिखित बढ़ते सेट की कुंजी है। – Maziyar