• 0

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

تحديد المسافة بين موقعين باستخدام php فلدي قيمة x , y الخاصة بي و لدي قيمة x, y للموقع الذي اريد تحديد المسافة بيني و بينه

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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;

    }

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

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

هل يمكنك إرفاق الأحداثيات لموقعك و الموقع الأخر , أي كيف تكون شكل الأحداثيات ؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن