첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.

728x90
반응형
728x170
using System;

#region 거리 구하기 - GetDistance(latitude1, longitude1, latitude2, longitude2)

/// <summary>
/// 거리 구하기
/// </summary>
/// <param name="latitude1">위도 1</param>
/// <param name="longitude1">경도 1</param>
/// <param name="latitude2">위도 2</param>
/// <param name="longitude2">경도 2</param>
/// <returns>거리</returns>
public double GetDistance(double latitude1, double longitude1, double latitude2, double longitude2)
{
    double theta;
    double distance;

    theta = longitude1 - longitude2;

    double latitudeRadian1 = GetRadian(latitude1);
    double latitudeRadian2 = GetRadian(latitude2);
    double thetaRadion     = GetRadian(theta);

    distance = Math.Sin(latitudeRadian1) * Math.Sin(latitudeRadian2) +
               Math.Cos(latitudeRadian1) * Math.Cos(latitudeRadian2) * Math.Cos(thetaRadion);

    distance = Math.Acos(distance);

    distance = distance * 60 * 1.1515;
    distance = distance * 1.609344; // MILE에서 KM 단위로 변환한다.
    distance = distance * 1000.0;   // KM에서 M 단위로 변환한다.

    return distance;
}

#endregion
#region 라디안 구하기 - GetRadian(degree)

/// <summary>
/// 라디안 구하기
/// </summary>
/// <param name="degree">각도</param>
/// <returns>라디안</returns>
public double GetRadian(double degree)
{
    return degree * Math.PI / 180d;
}

#endregion
#region 각도 구하기 - GetDegree(radian)

/// <summary>
/// 각도 구하기
/// </summary>
/// <param name="radian">라디안</param>
/// <returns>각도</returns>
public double GetDegree(double radian)
{
    return radian * 180d / Math.PI;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요