2011-01-04 10 views
6

हाय मैं सोच रहा था कि बिंदु के निर्देशांक की गणना करने के लिए कोई प्रभावशाली तरीका है (जिसे इसके मूल स्थान से दूरी डी स्थानांतरित किया गया था)।सी # - किसी दिए गए दूरी डी को इंगित करने के लिए कैसे करें (और एक नया निर्देशांक प्राप्त करें)

मान लें कि मेरे पास एक बिंदु पी (0.3,0.5) है और मुझे दूरी बिंदु के साथ उस बिंदु को यादृच्छिक दिशा में स्थानांतरित करने की आवश्यकता है।

अब तक मैंने इसे यादृच्छिक रूप से नए एक्स और वाई निर्देशांक चुनकर किया है और मैं जांच कर रहा था कि पुराने और नए बिंदु के बीच की दूरी डी बराबर है। मुझे एहसास है कि ऐसा करने के लिए बहुत ही गहन तरीका नहीं है। आप यह कैसे करेंगे ??

+0

आप से क्या मतलब है ऐसा लगता है कि आप दूरी और कोण दिए गए नए निर्देशांक को समझने के लिए कुछ ट्रिग का उपयोग कर सकते हैं? – n8wrl

उत्तर

17

एक बिंदु (x1, y1) को देखते हुए, हम d पर एक "यादृच्छिक" बिंदु (x2, y2) ढूंढना चाहते हैं।

एक यादृच्छिक कोण theta चुनें। तब:

    :

    Distance between (x1, y1) and (x2, y2) 
    = sqrt ((x2 - x1)^2 + (y2 - y1)^2) 
    = sqrt (d^2 * (sin^2 (theta) + cos^2 (theta))) 
    = d 
    

    आप को देखने के लिए चाहते हो सकता है:

    x2 = x1 + d * cos(theta) 
    y2 = y1 + d * sin(theta) 
    

    यह त्रिज्या d का एक चक्र पर (x1, y1)

    सबूत केंद्रित पर एक यादृच्छिक बिंदु हो जाएगा

  • Polar coordinate system
  • Distance Formula
  • Pythagorean trigonometric identity
0

अगर वहाँ बिंदु को स्थानांतरित करने के लिए है किस दिशा में करने के लिए के रूप में कोई बाधा है, सबसे आसान तरीका केवल एक धुरी के साथ ले जाने के लिए है।

तो, आप 1 यूनिट की दूरी, अपनी बात पी (0.3,0.5) द्वारा बिंदु को स्थानांतरित करने के लिए है, तो बस निम्नलिखित में से किसी बन सकता है: पी (1.3,0.5), या पी (0.3 , 1.5)

8

इसके लिए सूत्र में बुनियादी ट्रिग फ़ंक्शंस शामिल हैं।

new_x = old_x + Math.cos(angle) * distance; 
new_y = old_y + Math.sin(angle) * distance; 

वैसे, कोण रेडियंस में होना चाहिए।

radians = degrees * Math.PI/180.0; 
0

आप सरल समीकरण को हल करने की जरूरत है: '? यादृच्छिक दिशा'

double dx_square = rand.NextDouble(d); 
double dy_square = d - dx_square; 
double dx = Math.Sqrt(dx_square); 
double dy = Math.Sqrt(dy_square); 
संबंधित मुद्दे

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