첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 나선형 포인트 리스트 구하기

----------------------------------------------------------------------------------------------------

using System;

using System.Collections.Generic;

 

/// <summary>

/// Double형 Point

/// </summary>

public struct DoublePoint

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field

    ////////////////////////////////////////////////////////////////////////////////////////// Private

 

    #region Field

 

    /// <summary>

    /// X 좌표

    /// </summary>

    private double x;

 

    /// <summary>

    /// Y 좌표

    /// </summary>

    private double y;

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region X 좌표 - X

 

    /// <summary>

    /// X 좌표

    /// </summary>

    public double X

    {

        get

        {

            return this.x;

        }

        set

        {

            this.x = value;

        }

    }

 

    #endregion

 

    #region Y 좌표 - Y

 

    /// <summary>

    /// Y 좌표

    /// </summary>

    public double Y

    {

        get

        {

            return this.y;

        }

        set

        {

            this.y = value;

        }

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - DoublePoint(x, y)

 

    /// <summary>

    /// 생성자

    /// </summary>

    /// <param name="x">X 좌표</param>

    /// <param name="y">Y 좌표</param>

    /// <returns></returns>

    public DoublePoint(double x, double y)

    {

        this.x = x;

        this.y = y;

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 문자열 구하기 - ToString()

 

    /// <summary>

    /// 문자열 구하기

    /// </summary>

    /// <returns>문자열</returns>

    public override string ToString()

    {

        return string.Format("({0}, {1})", this.x, this.y);

    }

 

    #endregion

}

 

 

#region 나선형 포인트 리스트 구하기 - GetSpiralPointList(centerPoint, radius, stepAngle, spiralAngle)

 

/// <summary>

/// 나선형 포인트 리스트 구하기

/// </summary>

/// <param name="centerPoint">중심점</param>

/// <param name="radius">반경</param>

/// <param name="stepAngle">단계 각도</param>

/// <param name="spiralAngle">나선 각도</param>

/// <returns>나선형 포인트 리스트</returns>

public List<DoublePoint> GetSpiralPointList(DoublePoint centerPoint, double radius, double stepAngle,

    double spiralAngle)

{

    List<DoublePoint> list = new List<DoublePoint>();

 

    for(double angle = 0d; angle < spiralAngle; angle += stepAngle)

    {

        double saleRadius = radius * angle / spiralAngle;

 

        double radian = Math.PI * angle / 180d;

 

        double x = centerPoint.X + saleRadius * Math.Cos(radian);

        double y = centerPoint.Y + saleRadius * Math.Sin(radian);

 

        list.Add(new DoublePoint(x, y));

    }

 

    return list;

}

 

#endregion

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요