2010-02-09 48 views
10

क्या यह भी गलत है? मैंने पूरी चीज को अपफ्लोट मनमाना परिशुद्धता के साथ फिर से लगाया और इससे कोई फर्क नहीं पड़ता जिसे मुझे शुरू करने के लिए जाना चाहिए !!यह असर गणना इतना क्यों है?

public static double bearing(LatLng latLng1, LatLng latLng2) { 
double deltaLong = toRadians(latLng2.longitude - latLng1.longitude); 

double lat1 = toRadians(latLng1.latitude); 
double lat2 = toRadians(latLng2.latitude); 

double y = sin(deltaLong) * cos(lat2); 
double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(deltaLong); 
double result = toDegrees(atan2(y, x)); 
return (result + 360.0) % 360.0; 
} 

@Test 
public void testBearing() { 

    LatLng first = new LatLng(36.0, 174.0); 
    LatLng second = new LatLng(36.0, 175.0); 
    assertEquals(270.0, LatLng.bearing(second, first), 0.005); 
    assertEquals(90.0, LatLng.bearing(first, second), 0.005); 
} 

परीक्षा में प्रथम अभिकथन इस देता है:

java.lang.AssertionError: expected:<270.0> but was:<270.29389750911355>

0,29 काफी लंबे समय तक रहा है? क्या यह सूत्र मैं लागू करने के लिए चुना है?

+0

क्या आप मनमाना-परिशुद्धता ट्रिग का उपयोग कर रहे हैं? –

+0

क्या आप रेडियंस और डिग्री में जोड़ सकते हैं? – Ron

+0

java.lang.Math ट्रिगर फ़ंक्शन का उपयोग करना और आयात स्थिर java.lang.Math.toDegrees; आयात स्थिर java.lang.Math.toRadians; – Greg

उत्तर

16

यदि आपने ऐसा किया है जो आपने किया है और इसे सही तरीके से किया है तो आपने ए से बी के सबसे छोटे मार्ग के साथ ए से बी के असर को महसूस किया है, जो गोलाकार (आईएसएच) पृथ्वी की सतह पर है ए और बी के बीच महान सर्कल की चाप, ए और बी

मैथमैटिका के भूगर्भीय कार्य 89.7061 और 270.294 के रूप में आपके परीक्षण पदों के लिए बीयरिंग देते हैं।

तो, ऐसा लगता है कि (ए) आपकी गणना सही है लेकिन (बी) आपके नेविगेशन कौशल को चमकाने की आवश्यकता है।

+0

काफी सही। परीक्षण मानकों को 0.0 डिग्री अक्षांश और परीक्षण पास में बदलें। –

+0

आप सही हैं (बी) मुझे अपनी समझ को सीमेंट करने के लिए एक उदाहरण दें। अगर मैं पेरिस (48, -2) से म्यूनिख (48, -11) तक चलना चाहता था तो मैं पूर्व में नहीं चलूंगा बल्कि 86.652 डिग्री के असर पर नहीं चलूंगा। यदि आप कहीं से ब्रिटेन से ग्रीनलैंड तक चलने के बारे में सोचते हैं, तो यह अधिक समझ में आता है, आप अक्षांश की रेखा के समानांतर रेखा का पालन नहीं करेंगे (अक्षांश समानांतर रेखाएं हैं ??)। – Greg

+2

ठीक है, आप उस असर के साथ चलना शुरू कर देंगे (सड़कों और बाधाओं के बारे में भूल जाओ) लेकिन जब आप चले गए तो आपको लगातार अपने असर को समायोजित करना होगा; महान सर्कल मार्ग (आमतौर पर) निरंतर असर (या लोक्सोड्रोम) की एक रेखा का पालन नहीं करते हैं। लेकिन चीजें जटिल हो रही हैं, बाउडिच को तोड़ दें। –

1

java.lang.AssertionError: expected:<270.0> but was:<270.29389750911355>

यह 0.2 9 पूर्ण त्रुटि 0.1% की सापेक्ष त्रुटि का प्रतिनिधित्व करती है। यह "एक लंबा रास्ता" कैसे है?

फ़्लोट 7 महत्वपूर्ण अंक देंगे; युगल 16 के लिए अच्छा है। त्रिभुज कार्यों या रेडियंस रूपांतरण के लिए डिग्री हो सकती है।

फ़ॉर्मूला सही दिखता है, अगर this source पर विश्वास किया जाना है।

यदि मैं उस पृष्ठ में अपनी प्रारंभ और अंतिम मान प्लग करता हूं, तो परिणाम जो वे रिपोर्ट करते हैं वह 08 9 डिग्री 42'22 "है। यदि मैं 360 से अपना परिणाम घटाता हूं और डिग्री, मिनट और सेकंड में कनवर्ट करता हूं तो आपका परिणाम उनके समान होता है। या तो आप दोनों सही हैं या आप दोनों गलत हैं।

+2

यदि यह संख्यात्मक त्रुटि के कारण है तो यह इतनी सरल गणना के लिए एक लंबा रास्ता तय है। –

1

क्या आप वाकई संख्यात्मक समस्याओं के कारण हैं? मुझे यह स्वीकार करना होगा कि मैं वास्तव में नहीं जानता कि आप क्या गणना करने की कोशिश कर रहे हैं, लेकिन जब आप किसी क्षेत्र पर कोणों से निपटते हैं, तो आप यूक्लिडियन ज्यामिति में जो अपेक्षा करेंगे उससे छोटे विचलन।

+2

और कभी-कभी बड़े विचलन भी। –