( मैंने पहले इस दृष्टिकोण का परीक्षण किया है, और मुझे याद है कि यह सही ढंग से काम किया है, लेकिन मैंने इस प्रश्न के लिए विशेष रूप से परीक्षण नहीं किया है। )
जहाँ तक मैं बता सकता हूँ, दोनों और भयावह निरस्तीकरण से पीड़ित हो सकते हैं यदि वे लगभग समानांतर / लंबवत हैं - atan2 आपको अच्छा सटीकता नहीं दे सकता है यदि इनपुट बंद है।∥v1×v2∥v1⋅v2
समस्या को सुधारने के द्वारा शुरू करें जैसे कि त्रिभुज के कोण को साइड की लंबाई के साथ खोजना,और(ये सभी फ्लोटिंग पॉइंट अंकगणित में सटीक रूप से गणना की गई हैं)। हेरान के फार्मूले का एक सुप्रसिद्ध रूप है, जो कहन ( एक सुई की तरह त्रिभुज के विविध क्षेत्र और कोण ) के कारण होता है, जो आपको इसकी लंबाई के साथ निर्दिष्ट त्रिकोण के क्षेत्र और कोण ( और बीच ) की गणना करने की अनुमति देता है , और संख्यात्मक रूप से ऐसा करें। चूँकि इस उपप्रकार में कमी सही है, इसलिए यह दृष्टिकोण मनमाने आदानों के लिए काम करना चाहिए।a=|v1|b=|v2|c=|v1−v2|ab
उस पेपर से उद्धृत करना (p.3 देखें), ,
यहाँ सभी कोष्ठक सावधानी से रखे गए हैं, और वे मायने रखते हैं; यदि आप अपने आप को एक ऋणात्मक संख्या के वर्गमूल को लेते हुए पाते हैं, तो इनपुट पक्ष की लंबाई एक त्रिकोण की लंबाई नहीं है।a≥b
μ=⎧⎩⎨c−(a−b),b−(a−c),invalid triangle,if b≥c≥0,if c>b≥0,otherwise
angle=2arctan(((a−b)+c)μ(a+(b+c))((a−c)+b)−−−−−−−−−−−−−−−−−−−−√)
इस बात की व्याख्या है कि यह कैसे काम करता है, जिसमें मूल्यों के उदाहरण शामिल हैं, जिनके लिए अन्य सूत्र विफल होते हैं, काहान के पेपर में। के लिए आपका पहला सूत्र है पेज 4 पर।αC′′
मुख्य कारण जो मुझे लगता है कि कहन का बगुला सूत्र है, क्योंकि यह एक बहुत अच्छा आदिम बनाता है - संभावित ट्रिक प्लानर ज्यामिति के बहुत सारे सवालों को एक मनमाना त्रिकोण के क्षेत्रफल / कोण को खोजने के लिए कम किया जा सकता है, इसलिए यदि आप अपनी समस्या को उस तक कम कर सकते हैं, तो इसके लिए एक अच्छा स्थिर सूत्र है, और अपने दम पर कुछ के साथ आने की कोई जरूरत नहीं है।
स्टेफानो की टिप्पणी के बाद संपादित करें , मैंने , ( कोड ) के लिए सापेक्ष त्रुटि की साजिश रची । दो पंक्तियाँ और लिए सापेक्ष त्रुटियाँ हैं , क्षैतिज अक्ष के साथ जा रही हैं। ऐसा लगता है कि यह काम करता है।
v1=(1,0)v2=(cosθ,sinθ)θ=ϵθ=π/2−ϵϵ