■ 베지어 곡선의 Point 리스트를 구하는 방법을 보여준다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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 |