اذهب إلى المحتوى
  • 0

تحديد المسافة بين موقعين باستخدام php

Khaled Mohammed7

السؤال

Recommended Posts

  • 0
بتاريخ 13 دقائق مضت قال Khaled Mohammed7:

x 0 , y 0 ,  x -1, y 4

ربما استطيع مساعدتك في برمجة دالة تحدد المسافة , فلنقم بصنع دالة وليكن اسمها getDistance

function getDistance(){

}

و لنمرر لها المتغيرات الأتية و هي 

$lat1, $lon1, $lat2, $lon2, $radius

بحيث 

$lat1, $lon1

هي أحداثيات الموقع الخاص بك و 

$lat2, $lon2

هي أحداثيات الموقع الذي تريد جلب المسافة بينك وبينه و 

$radius

هو نصف قطر بين كل أحداثيين فتكون الدالة بهذا الشكل 

function getDistance( $lat1, $lon1, $lat2, $lon2, $radius )
{
	
}

ثم نقوم بجلب الزاوية باستخدام متغير 

$radius
$angle = $radius / 180;

ثم نقسم كل أحداثية على هذه الزاوية 

$lat1 /= $angle;

$lon1 /= $angle;

$lat2 /= $angle;

$lon2 /= $angle;

ثم نستخدم rad2deg لتحويل الرقم الدائري إلى رقم مكافئ بالدرجات ثم نمرر لها دالة acos لجيب تمام القوسي للرقم  ثم نمرر المتغيرات الأربعة داخل دالة sin لإرجاع جيب الرقم بهذا الشكل 

return rad2deg( acos( sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) + cos( deg2rad( $lat1 ) ) * cos( deg2rad( $lat2 ) ) * cos( deg2rad( $lon1 - $lon2 ) ) ) ) * $angle;

ثم نضرب الرقم الناتج بالزاوية حتى نحصل على المسافة فتكون الدالة بهذا الشكل 

	function getDistance( $lat1, $lon1, $lat2, $lon2, $radius )
    {

        $angle = $radius / 180;

        $lat1 /= $angle;

        $lon1 /= $angle;

        $lat2 /= $angle;

        $lon2 /= $angle;

        return rad2deg( acos( sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) + cos( deg2rad( $lat1 ) ) * cos( deg2rad( 				$lat2 ) ) * cos( deg2rad( $lon1 - $lon2 ) ) ) ) * $angle;

    }

يرجى تطبيق الحل و أخباري بالنتيجة , فهذا الحل ربما يفيدك و أتمنى أن أكون أجبت على سؤالك بشكلٍ جيد, الأمر قد يكون معقد نوعاً ما و لكن بعد مراجعة الدوال المستخدمة ستوضح لك الأمور كاملة بإذن الله 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكن ايجاد المسافة باستخدام التابع التالي 

function distance($x1, $y1, $x2, $y2) {
	return sqrt(pow(abs($x1 - $x2), 2) + pow(abs($y1 - $y2), 2));
}

أو استعمال التابع hypot في PHP  كما يلي  

$distance = hypot($x1 - $x2, $y1 - $y2);

كلا الطريقتين تعتمدان مبدأ معادلة حساب الوتر المتشكل بين النقطتين

gif.latex?distance%20%3D%20%5Csqrt%7B%5C

تم التعديل في بواسطة Hassan Hedr
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...