첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System;

/// <summary>
/// 도/분/초
/// </summary>
public struct DMS
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region Field

    /// <summary>
    /// 도
    /// </summary>
    public double Degree;

    /// <summary>
    /// 분
    /// </summary>
    public double Minute;

    /// <summary>
    /// 초
    /// </summary>
    public double Second;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - DMS(degree, minute, sencond)

    /// <summary>
    /// 생성자
    /// </summary>
    /// <param name="degree">도</param>
    /// <param name="minute">분</param>
    /// <param name="sencond">초</param>
    public DMS(double degree, double minute, double sencond)
    {
        Degree = degree;
        Minute = minute;
        Second = sencond;
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 설정하기 - Set(degree)

    /// <summary>
    /// 설정하기
    /// </summary>
    /// <param name="degree">도</param>
    public void Set(double degree)
    {
        this.Degree = (int)degree;
        this.Minute = (int)((degree - this.Degree) * 60);
        this.Second = ((degree - this.Degree) * 60 - this.Minute) * 60;
    }

    #endregion

    #region 설정하기 - Set(degree, minute, second)

    /// <summary>
    /// 설정하기
    /// </summary>
    /// <param name="degree">도</param>
    /// <param name="minute">분</param>
    /// <param name="second">초</param>
    public void Set(double degree, double minute, double second)
    {
        this.Degree = degree;
        this.Minute = minute;
        this.Second = second;
    }

    #endregion

    #region 도 구하기 - GetDegree()

    /// <summary>
    /// 도 구하기
    /// </summary>
    /// <returns>도</returns>
    public double GetDegree()
    {
        return this.Degree + this.Minute / 60 + this.Second / 3600;
    }

    #endregion

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

    /// <summary>
    /// 라디안 구하기
    /// </summary>
    /// <returns>라디안</returns>
    public double GetRadian()
    {
        return GetDegree() * Math.PI / 180d;
    }

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

댓글을 달아 주세요