2010-11-25 11 views
5

मेरे पास 2 अंक P1 और P2 है। मुझे खोजने की आवश्यकता है, ताकितीसरा बिंदु

  • सभी बिंदु एक ही पंक्ति पर होने के लिए;
  • P3 दूरी dP2 से (दूर P1 से)

मैं हल करने जाहिरा तौर पर मुश्किल से एक जटिल प्रणाली शुरू कर दिया पर होना चाहिए ...
alt text

पी एस।

वेक्टरियल उत्तर शांत है, लेकिन मैं सी # का उपयोग करता हूं और वहां पर वैक्टर जोड़ने का तरीका नहीं जानता।

+0

http://math.stackexchange.com/- शायद आपको बेहतर उत्तर मिलेंगे ;-) – Svisstack

+0

आपके पास सीधे ली में केवल दो अंक हैं ne ** ** ** ** ** ** ** ** ** पर हैं !! –

+0

@ स्विसस्टैक: शायद मुझे इस सवाल को स्थानांतरित करना चाहिए, लेकिन यह नहीं पता कि कैसे। – serhio

उत्तर

5
P3 = P2 + d * ±(P2 - P1)/|P2 - P1| 

संपादित करें:

क्योंकि खरीदारी आसान है:

mag = sqrt((P2x - P1x) ** 2 + (P2y - P1y) ** 2) 
P3x = P2x + d * (P2x - P1x)/mag 
P3y = P2y + d * (P2y - P1y)/mag 
+0

वास्तव में मैं वेक्टर डिवीजन भूल गया ... और क्यों + -? – serhio

+0

इग्नासिओ, दोस्त, क्या आप एक गैर-वेक्टरियल उत्तर का सुझाव दे सकते हैं ...: "(मुझे पहचानना चाहिए कि गणित आदमी न हो। – serhio

+0

क्योंकि 'पी 2' से दो कोलिनेर पॉइंट' डी' दूर हैं: एक पी' से दूर '(सकारात्मक), और एक 'पी 1' (नकारात्मक) की ओर। –

2

मैं उद्देश्य सी के लिए कोड का अनुवाद किया है

float distanceFromPx2toP3 = 1300.0;  

float mag = sqrt(pow((px2.x - px1.x),2) + pow((px2.y - px1.y),2)); 
float P3x = px2.x + distanceFromPx2toP3 * (px2.x - px1.x)/mag; 
float P3y = px2.y + distanceFromPx2toP3 * (px2.y - px1.y)/mag; 

CGPoint P3 = CGPointMake(P3x, P3y); 
+0

धन्यवाद! यह मेरे लिए काम करता है। (अन्य खोजकर्ताओं के लिए, वे कीवर्ड जो मैं इस उत्तर को खोजने का प्रयास कर रहा था के साथ: तीसरे बिंदु पर ब्रेसनहेम लाइन प्रक्षेपण) –

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