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

■ 베지어 곡선 포인트 리스트 구하기

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

using System.Collections.Generic;

using System.Windows;

 

#region 베지어 곡선 포인트 리스트 구하기 - GetBezierCurvePointList(startPoint, controlPoint1, controlPoint2, endPoint, pointCount)

 

/// <summary>

/// 베지어 곡선 포인트 리스트 구하기

/// </summary>

/// <param name="startPoint">시작점</param>

/// <param name="controlPoint1">제어점 1</param>

/// <param name="controlPoint2">제어점 2</param>

/// <param name="endPoint">종료점</param>

/// <param name="pointCount">포인트 수</param>

/// <returns>베지어 곡선 포인트 리스트</returns>

public List<Point> GetBezierCurvePointList(Point startPoint, Point controlPoint1, Point controlPoint2, Point endPoint, int pointCount)

{

    List<Point> list = new List<Point>(pointCount);

 

    for(int i = 0; i < pointCount; i++)

    {

        double t = (double)i / (pointCount - 1);

 

        double x = (1 - t) * (1 - t) * (1 - t) * startPoint.X +

                   3 * t * (1 - t) * (1 - t) * controlPoint1.X +

                   3 * t * t * (1 - t) * controlPoint2.X +

                   t * t * t * endPoint.X;

 

        double y = (1 - t) * (1 - t) * (1 - t) * startPoint.Y +

                   3 * t * (1 - t) * (1 - t) * controlPoint1.Y +

                   3 * t * t * (1 - t) * controlPoint2.Y +

                   t * t * t * endPoint.Y;

 

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

    }

 

    return list;

}

 

#endregion

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요