2010-02-25 30 views
7

वैक्टर किसी को भी एक समारोह है कि दो 2 डी वैक्टर के पार उत्पाद रिटर्न का एक उदाहरण दे सकते हैं? मैं this algorithm को लागू करने की कोशिश कर रहा हूं।2 2 डी के क्रॉस उत्पाद

सी कोड बहुत अच्छा होगा। धन्यवाद।


संपादित करें: एक और तरीका कार्य करने की यह है कि 2 डी के लिए काम करता है और मृत आसान है पाया।

bool tri2d::inTriangle(vec2d pt) { 
    float AB = (pt.y-p1.y)*(p2.x-p1.x) - (pt.x-p1.x)*(p2.y-p1.y); 
    float CA = (pt.y-p3.y)*(p1.x-p3.x) - (pt.x-p3.x)*(p1.y-p3.y); 
    float BC = (pt.y-p2.y)*(p3.x-p2.x) - (pt.x-p2.x)*(p3.y-p2.y); 

    if (AB*BC>0.f && BC*CA>0.f) 
     return true; 
    return false;  
} 
+0

वें है काम या घर के काम के लिए है? – legends2k

+0

यह व्यक्तिगत आनंद के लिए है। क्यूं कर? –

+0

dup http://stackoverflow.com/questions/243945/calculating-a-2d-vectors-cross-product –

उत्तर

15

(नोट: 2 वैक्टर की पार उत्पाद केवल 3 डी और 7D spaces में परिभाषित किया गया है।)

कोड की गणना 2 वैक्टर की z घटक xy पर झूठ बोल विमान:

vec2D a, b; 
... 
double z = a.x * b.y - b.x * a.y; 
return z; 
+0

वाह। आप उस लिंक के लिए एक अतिरिक्त +1 देना चाहते हैं! – AakashM

+2

@ tm1rbrt: वह 'क्रॉस प्रोडक्ट' एक पूर्ण 3 डी क्रॉस-उत्पाद होना चाहिए। आप हमेशा दो 0 घटकों को जोड़ सकते हैं। – kennytm

+1

3 डी स्पेस में दो वैक्टरों का क्रॉस उत्पाद एक 3 डी वेक्टर है, फिर भी आपका कोड केवल दोहरा देता है। एक घटक कितना अच्छा है? – duffymo