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

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...