একটি আনুমানিক সমাধান (একটি নিখুঁত প্রক্ষেপণের উপর ভিত্তি করে), অনেক দ্রুত (এটিতে কেবল 1 টি ট্রিগ এবং 1 বর্গমূলের প্রয়োজন)।
আপনার পয়েন্টগুলি খুব দূরে না থাকলে এই সন্নিবেশটি প্রাসঙ্গিক। আসল হ্যাসারিন দূরত্বের তুলনায় এটি সর্বদা অতিরিক্ত অনুমান করবে । উদাহরণস্বরূপ এটি যদি আপনার দুটি পয়েন্টের মধ্যে ডেল্টা অক্ষাংশ বা দ্রাঘিমাংশ 4 দশমিক ডিগ্রি ছাড়িয়ে না যায় তবে এটি প্রকৃত দূরত্বের সাথে 0.05382% এর বেশি যোগ করবে না ।
স্ট্যান্ডার্ড সূত্র (হ্যাভারসাইন) হুবহু এক (এটি পৃথিবীতে দ্রাঘিমাংশ / দ্রাঘিমাংশের জন্য দম্পতির জন্য কাজ করে) তবে এটি 7 গতিবিধি এবং 2 বর্গমূলের প্রয়োজন বলে অনেক ধীর হয়। যদি আপনার দু'টি পয়েন্ট খুব বেশি দূরে না থাকে এবং নিখুঁত নির্ভুলতা সর্বজনীন না হয় তবে আপনি এই আনুমানিক সংস্করণ (ইকুয়েটারট্যাঙ্গুলার) ব্যবহার করতে পারেন, এটি কেবলমাত্র একটি ত্রিকোণমিত্রিক এবং একটি বর্গমূল ব্যবহার করার কারণে এটি আরও দ্রুত।
// Approximate Equirectangular -- works if (lat1,lon1) ~ (lat2,lon2)
int R = 6371; // km
double x = (lon2 - lon1) * Math.cos((lat1 + lat2) / 2);
double y = (lat2 - lat1);
double distance = Math.sqrt(x * x + y * y) * R;
আপনি এই দ্বারা আরও অনুকূলিত করতে পারেন :
- বর্গমূলকে অপসারণ করা যদি আপনি কেবল দূরতাকে অন্যের সাথে তুলনা করেন (সেক্ষেত্রে উভয় স্কোয়ার দূরত্বের তুলনা করুন);
- যদি আপনি এক মাস্টার পয়েন্ট থেকে অন্য অনেকের কাছে দূরত্ব গণনা করেন তবে কোসাইনকে ফ্যাক্টরিং-আউট করুন ( সেক্ষেত্রে আপনি মাস্টার পয়েন্টের উপর ভিত্তি করে নিখুঁত প্রক্ষেপণ করেন, সুতরাং আপনি সমস্ত তুলনার জন্য একবার কোসাইনকে গণনা করতে পারেন)।
আরও তথ্যের জন্য দেখুন: http://www.movable-type.co.uk/scriptts/latlong.html
বেশ কয়েকটি ভাষায় হ্যাভারসাইন সূত্রটির একটি দুর্দান্ত রেফারেন্স বাস্তবায়ন রয়েছে: http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_PPoint_on_a_Globe