विकिपीडिया से:एक 2D वेक्टर क्रॉस उत्पाद गिना जा रहा है
उत्पाद पार एक तीन आयामी इयूक्लिडियन स्थान है कि एक और वेक्टर जो युक्त तल पर लम्ब है में परिणाम में दो वैक्टर पर एक द्विआधारी ऑपरेशन है दो इनपुट वैक्टर।
यह देखते हुए कि परिभाषा केवल तीन (or seven, one and zero) आयामों में परिभाषित की गई है, कोई दो 2 डी वैक्टरों के क्रॉस उत्पाद की गणना कैसे करता है?
मैंने दो कार्यान्वयन देखा है। एक नया वेक्टर लौटाता है (लेकिन केवल एक वेक्टर स्वीकार करता है), दूसरा स्केलर देता है (लेकिन दो वैक्टरों के बीच गणना है)।
float CrossProduct(const Vector2D & v1, const Vector2D & v2) const
{
return (v1.X*v2.Y) - (v1.Y*v2.X);
}
कार्यान्वयन 2 (एक सदिश रिटर्न):
कार्यान्वयन 1 (एक अदिश रिटर्न)
Vector2D CrossProduct(const Vector2D & v) const
{
return Vector2D(v.Y, -v.X);
}
क्यों अलग कार्यान्वयन? मैं स्केलर कार्यान्वयन के लिए क्या उपयोग करूंगा? मैं वेक्टर कार्यान्वयन के लिए क्या उपयोग करूंगा?
कारण मैं पूछता हूं क्योंकि मैं खुद वेक्टर 2 डी कक्षा लिख रहा हूं और यह नहीं जानता कि किस विधि का उपयोग करना है।
कार्यान्वयन 2 गलत है। एक क्रॉस उत्पाद बनाने के लिए आपको दो वैक्टरों की आवश्यकता है। – bobobobo
कार्यान्वयन 2 दिए गए वेक्टर _v_ -90 डिग्री से घूर्णन करता है। 'X' = x cos θ - y sin θ' और 'y '= x sin θ + y cos θ' में सबस्टिट्यू -90। इस कार्यान्वयन का एक और बदलाव 'Vector2D (-v.Y, v.X) को वापस करना होगा, जो +90 डिग्री से _v_ घुमाएगा। – legends2k
@ किंवदंतियों 2k: यह ध्यान देने योग्य है कि कार्यान्वयन 2 [क्रॉस उत्पाद का मूल्यांकन करने के लिए निर्धारक का उपयोग करके] का एक विस्तार है (https: //en.wikipedia।संगठन/विकी/Cross_product # Matrix_notation): बस अंतिम पंक्ति और कॉलम को हटा दें। इस तरह के एक्सटेंशन में हमेशा 'एन -1 'ऑपरेशंस' एन' आयामों के लिए होता है। –