मैं ट्रैविस जी की टिप्पणी पर थोड़ा विस्तार करूंगा और एक और जवाब दूंगा, जिससे इस तथ्य का उपयोग किया जाएगा कि आपके प्रश्न में "2 डी" टैग था।
आप डॉट उत्पाद का उपयोग करके दो वैक्टरों के बीच का कोण प्राप्त कर सकते हैं, लेकिन आप इसका उपयोग करते हुए दो वैक्टरों के बीच हस्ताक्षरित कोण प्राप्त नहीं कर सकते । एक और तरीका रखो, यदि आप किसी बिंदु की ओर समय के साथ एक चरित्र को मोड़ना चाहते हैं, तो डॉट उत्पाद आपको कितना मोड़ना है लेकिन किस दिशा में नहीं। हालाँकि, एक और सरल सूत्र है, जो डॉट उत्पाद के साथ संयुक्त होने पर बहुत उपयोगी है। न केवल आपके पास है
dot(A,B) = |A| * |B| * cos(angle)
आपके पास एक और सूत्र भी हो सकता है (जिसका नाम मैंने राजनीतिक शुद्धता के लिए बनाया है):
pseudoCross(A,B) = |A| * |B| * sin(angle)
जहाँ यदि A = (a, b), B = (x, y), तो pseudoCross (A, B) को क्रॉस उत्पाद (a, b, 0) x (x, y, 0) के तीसरे घटक के रूप में परिभाषित किया जाता है )। दूसरे शब्दों में:
a*x+b*y = |A| * |B| * cos(angle)
-b*x+a*y = |A| * |B| * sin(angle)
पूर्ण हस्ताक्षरित कोण तब है angle=atanfull(-b*x+a*y,a*x+b*y)
(यदि आप गैर-सामान्यीकृत मानों में पास हो जाते हैं तो एटानफुल या एटैन 2 फ़ंक्शन आपको माफ कर देते हैं)। यदि A और B को सामान्यीकृत किया जाता है, अर्थात, यदि |A|=|B|=1
ये बस हैं:
a*x+b*y = cos(angle)
-b*x+a*y = sin(angle)
गहरी व्याख्या के लिए, ध्यान दें कि उपरोक्त समीकरण मैट्रिक्स समीकरण द्वारा व्यक्त किए जा सकते हैं:
[ a,b] [x] [cos(angle)]
[-b,a] * [y] = [sin(angle)]
लेकिन ए और बी के रूप में व्यक्त किया जा सकता है a=cos(ang1)
, b=sin(ang1)
कुछ मूल्य के लिए ang1
(नहीं angle
)। इसलिए, बाईं ओर का मैट्रिक्स एक रोटेशन मैट्रिक्स है, जो राशि -ang1 द्वारा वेक्टर (x, y) को घुमाता है। यह संदर्भ के एक फ्रेम में स्विच करने के बराबर है जहां इकाई वेक्टर "ए" को वेक्टर / अक्ष (1,0) के रूप में माना जाता है! तो बस इस फ्रेम में यूनिट सर्कल / राइट त्रिकोण ड्राइंग करके, आप देख सकते हैं कि उस उत्पाद का परिणामी वेक्टर क्यों है (कॉस (कोण), पाप (कोण))।
यदि आप ध्रुवीय रूप में (ए, बी) और (एक्स, वाई) लिखते हैं, और कोण अंतर के फार्मूले को लागू करते हैं cos(l)*cos(m)+sin(l)*sin(m)=cos(l-m)
और sin(l)*cos(m)-cos(l)*sin(m)=sin(l-m)
, आप फिर से व्यक्त करते हैं कि साइन / कोज़ाइन इस उत्पाद द्वारा दिए गए हैं, क्योंकि (एलएम) = कोण। वैकल्पिक रूप से, उन पहचानों का उपयोग यह देखने के लिए किया जा सकता है कि ऊपर दिया गया रैखिक उत्पाद वेक्टर को घुमाता क्यों है।
इन सभी पहचानों का मतलब है कि आपको शायद ही कोण की आवश्यकता है। क्योंकि कोण अजीब हो सकते हैं - रेडियन / डिग्री, उलटा साइन / कोसाइन के लिए सम्मेलनों, तथ्य यह है कि वे हर 2 * पी को दोहराते हैं - यह वास्तव में अधिक उपयोगी हो सकता है और आपको "अगर (कोण <180)" आदि तर्क का एक गुच्छा बचा सकता है।