2013-09-04 6 views
14

के निर्देशांक को जानते हैं मुझे आवश्यकता है कि एक सर्कल को संख्या के आधार पर एन बराबर भागों में विभाजित किया जाना चाहिए (2,3 ... एन। लेकिन मैं विभाजन के निर्देशांक चाहता हूं अंकएंड्रॉइड विभाजित सर्कल एन बराबर भागों में और प्रत्येक विभाजित बिंदु

मैं एक चक्र जिसका centre(x,y) और radius(150) में जाना जाता है है

प्रश्न:।।

कोई सूत्र जो मुझे अंक एक से विभाजित करने के निर्देशांक देता है आंकड़े में दिखाया गया है। क्या कोई मुझे सूत्र बता सकता है। मैं इसे जावा में कार्यान्वित करना चाहता हूं। refrence के लिए

सर्किल छवि:

image

+1

एक्स = x0 + sin (कोण) * r, y = y0 + cos (कोण) * आर – pskink

+0

यह सूत्र कैसे सही नहीं है और इसे स्वीकार्य सहित प्रत्येक उत्तर में उपयोग किया जाता है। आदमी के लिए क्रेडिट दें – mykolaj

उत्तर

17

आप polar और Cartesian निर्देशांकों के बीच convert की जरूरत है। आपको जिस कोण की आवश्यकता है वह कोण (काल्पनिक) लंबवत रेखा के बीच कोण है जो सर्कल को आधे भाग में विभाजित करता है और रेखा जो सर्कल की सीमा के साथ केंद्र को जोड़ती है। इस सूत्र के साथ आप केंद्र से एक्स और वाई ऑफसेट की गणना कर सकते हैं।

आपकी उदाहरण छवि में पहला कोण 0 है, और दूसरा 360/एन है। प्रत्येक अगला i*(360/n) है जहां मैं वर्तमान लाइन की अनुक्रमणिका है जिसे आपको आकर्षित करने की आवश्यकता है। इसे लागू करने से आप एक्स और वाई ऑफ़सेट को दक्षिणावर्त क्रम में देंगे (और आप उन्हें प्रत्येक बिंदु के निर्देशांक खोजने के लिए केंद्र के एक्स और वाई निर्देशांक में जोड़ सकते हैं)

संपादित करें: किसी प्रकार का छद्म कोड :

//x0, y0 - center's coordinates 
for(i = 1 to n) 
{ 
    angle = i * (360/n); 
    point.x = x0 + r * cos(angle); 
    point.y = y0 + r * sin(angle); 
} 
+0

आपके उत्तर के लिए धन्यवाद .. + 1 फॉर्म मुझे ...यदि आप मुझे फॉर्मूला देते हैं जो सह ordinates के साथ सरणी देता है .. यह सराहना की जाएगी ... मैं निश्चित रूप से आपका जवाब स्वीकार करूँगा। मैं संख्या उत्तीर्ण करना चाहता हूं जो बराबर भागों को परिभाषित करता है और सह ordinates के साथ सरणी वापस .. ..! – TheFlash

+1

@Indiandroid आप इसे अपने लिए अनुकूलित करने के बिना अपनी आवश्यकताओं के अनुरूप इसे लागू करने में सक्षम होना चाहिए। यदि आप इसे स्वयं नहीं कर सकते हैं, तो आपको प्रोग्रामिंग नहीं करना चाहिए। – Neil

+0

@ नीइल आपकी सलाह के लिए धन्यवाद। – TheFlash

18

मैंने पहले से ही उत्तर स्वीकार कर लिया है ... सूत्र पूरी तरह से काम करता है। यहां जावा में कोडित समाधान है। यह अन्य डेवलपर्स की मदद करेगा।

private int x[]; // Class variable 
    private int y[]; // Class variable 

    private void getPoints(int x0,int y0,int r,int noOfDividingPoints) 
    { 

     double angle = 0; 

     x = new int[noOfDividingPoints]; 
     y = new int[noOfDividingPoints]; 

     for(int i = 0 ; i < noOfDividingPoints ;i++) 
     { 
      angle = i * (360/noOfDividingPoints); 

      x[i] = (int) (x0 + r * Math.cos(Math.toRadians(angle))); 
      y[i] = (int) (y0 + r * Math.sin(Math.toRadians(angle))); 

     } 

     for(int i = 0 ; i < noOfDividingPoints ;i++) 
     { 
      Log.v("x",""+i+": "+x[i]); 
      Log.v("y",""+i+": "+y[i]); 

     } 
    } 

जहां x0 और y0 सर्कल के केंद्र के समन्वय होते हैं। और आर त्रिज्या है।

मेरे मामले में:

इनपुट x0 = 0, Y0 = 0 और आर = 150, noOfDividingPoints = 5

उत्पादन

point1: (150,0)

बिंदु 2: (46,142)

point3: (-121,88)

point4: (-121, -88)

point5: (46, -142)

+0

अच्छा काम !! बडी! +1 – TheLittleNaruto

+1

@ कुमार गौरव धन्यवाद ... मुझे आशा है कि इससे दूसरों की मदद मिलेगी। – TheFlash

+0

फ़ंक्शन हमेशा सटीक परिणाम प्रदान नहीं करता है, जैसे कि मैं 5 नोओएफडिविंग पॉइंट्स के साथ एक सर्कल को त्रिज्या 100 चाहता हूं, जब आप टच – Androider

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