رفتن به مطلب
  • 0

شعاع یک نقطه در محور مختصات


msajad

سوال

سلام دوستان

شعاع یک نقطه درنقشه رو دارم حالا میخوام بفهمم که نقطه دوم داخل شعاع نقطه اول هست یا نه

مثلا فرض کنید یک مکان داخل نقشه مشخص کردم و حالا میخوام ببینم نقطه دوم داخل شعاع یک کیلومتری مکان ثبت شده هست یا نه

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

5 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

ببخشید یه مقدار گیچ شدم :crazy:

قسمت هایی که کامنت کردی باید استفاده کنم یا نه؟

بعد بعضی از متغییر ها مثل 1e-7 و  sn تعریف نشدن :fekr:

:gol: :gol: :gol:

 

سلام ن کامنتارو لازم نیست

 

این ساب بدون کامنت :


Sub DistanceCalc (p1 As GeoPoint, p2 As GeoPoint) As Long
Dim lat1, lat2, lon1, lon2, Dist, d As Double
lat1=p1.Latitude
lon1=p1.Longitude
lat2=p2.Latitude
lon2=p2.Longitude
    Try
        lat1 = lat1 * cPI / 180
        lon1 = -lon1 * cPI / 180
        lat2 = lat2 * cPI / 180
        lon2 = -lon2 * cPI / 180
        d = 2 * ASin(Sqrt(Power(Sin((lat1-lat2)/2),2) + Cos(lat1)*Cos(lat2)*Power(Sin((lon1-lon2)/2),2)))
        Dist = d * 180 * 60 * 1852/cPI
        Return Abs(Dist)
    Catch
        Return 0
    End Try
End Sub

کتابخانه OSMDROID رو هم ک میدونید قطعا :fekr:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

 

شما میتونید مسافت 2تا نقطه رو از هم تشخیص بدید و اگر برابر 0 بود یعنی نقطه دوم جای نقطه اولی قرار داره 

 

میتونید از این دابل استفاده کنید و مثلا توی ی Toast استفاده کنید و نقطه شروع و پایانو بدید و نتیجه رو دریافت کنید

Public double Distance(LatLng StartP, LatLng EndP) {
        int Radius = 6371;// radius of earth in Km
        double lat1 = StartP.latitude;
        double lat2 = EndP.latitude;
        double lon1 = StartP.longitude;
        double lon2 = EndP.longitude;
        double dLat = Math.toRadians(lat2 - lat1);
        double dLon = Math.toRadians(lon2 - lon1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
                * Math.sin(dLon / 2);
        double c = 2 * Math.asin(Math.sqrt(a));
        double valueResult = Radius * c;
        double km = valueResult / 1;
        DecimalFormat newFormat = new DecimalFormat("####");
        int kmInDec = Integer.valueOf(newFormat.format(km));
        double meter = valueResult % 1000;
        int meterInDec = Integer.valueOf(newFormat.format(meter));
        Log.i("Radius Value", "" + valueResult + "   KM  " + kmInDec
                + " Meter   " + meterInDec);

        Return Radius * c;
    }
لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون من فقط حواسم نبود تو بخش اندروید استدیو سوالم پرسیدم منتقل کنید به بیسیک

دوم اول امکانش هست کد بیسیک رو به من بدید چون بعضی از توابع مثل Math.asin نمیدونم بیسیکش چی میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون من فقط حواسم نبود تو بخش اندروید استدیو سوالم پرسیدم منتقل کنید به بیسیک

دوم اول امکانش هست کد بیسیک رو به من بدید چون بعضی از توابع مثل Math.asin نمیدونم بیسیکش چی میشه

 

دقت کن برادرم من فکر کردم واسه اندروید استودیو سوال داری چون تو بخش اندروید استودیو تاپیک زده بودین :S

 

تاپیک منتقل شد ب بخش بیسیک

 

واسه بیسیکهم این ساب رو استفاده کنید و به متر وارد کنید :

Sub DistanceCalc (p1 As GeoPoint, p2 As GeoPoint) As Long
'This sub calculates the distance and course between two Lat/Lon coordinates.
'The formulas are based on this site: http://williams.best.vwh.net/avform.htm (Ed Williams)
Dim lat1, lat2, lon1, lon2, Dist, d As Double
lat1=p1.Latitude
lon1=p1.Longitude
lat2=p2.Latitude
lon2=p2.Longitude
    Try
        lat1 = lat1 * cPI / 180
        lon1 = -lon1 * cPI / 180
        lat2 = lat2 * cPI / 180
        lon2 = -lon2 * cPI / 180
        d = 2 * ASin(Sqrt(Power(Sin((lat1-lat2)/2),2) + Cos(lat1)*Cos(lat2)*Power(Sin((lon1-lon2)/2),2)))
        Dist = d * 180 * 60 * 1852/cPI
'        If Cos(lat1) < 1e-7 Then
'            If (lat1 > 0) Then
'                tc1 = cPI
'            Else
'                tc1= 2*cPI
'            End If
'        Else
'            sn = Sin(lon2-lon1)
'            If Abs(sn) < 1e-7 Then
'                If lat1 > lat2 Then tc1 = cPI Else tc1 = 2*cPI
'            Else If sn < 0 Then      
'                tc1=ACos((Sin(lat2)-Sin(lat1)*Cos(d))/(Sin(d)*Cos(lat1)))  
'            Else    
'                tc1=2*cPI-ACos((Sin(lat2)-Sin(lat1)*Cos(d))/(Sin(d)*Cos(lat1)))
'            End If
'        End If
'        'calculating decimal X,Y
'        Course = tc1 * 180 / cPI
'        'x=Dist* Cos(tc1-cPI/2)
'        'y=Dist* Sin(tc1-cPI/2)
        Return Abs(Dist)
    Catch
'        Dist = 0
'        Course = 0
        Return 0
    End Try
End Sub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببخشید یه مقدار گیچ شدم :crazy:

قسمت هایی که کامنت کردی باید استفاده کنم یا نه؟

بعد بعضی از متغییر ها مثل 1e-7 و  sn تعریف نشدن :fekr:

:gol: :gol: :gol:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...