어렵지 않아요
1. 원리
다음 두 사이트를 참조했다.
2. 구현
기본적으로 아래의 영상을 참고했다.
여기서 중요한 부분은
private Vector3 CalculateCubicBezierPoint(float t, Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3)
{
// return = (1 - t)3 P0 + 3(1 - t)2 tP1 + 3(1 - t) t2 P2 + t3 P3
// uuu * p0 + 3 * uu * t * p1 + 3 * u * tt * p2 + ttt * p3
float u = 1 - t;
float tt = t * t;
float uu = u * u;
float uuu = uu * u;
float ttt = tt * t;
Vector3 p = uuu * p0;
p += 3 * uu * t * p1;
p += 3 * u * tt * p2;
p += ttt * p3;
return p;
}
이 부분이다. 주석친 부분이 3차 베지어 곡선의 공식이다.
코드는 위의 코드를 사용하되, Draw 해주는 함수 내에서, i가 1일 때와 numpoints일 때, 포지션을 처음과 끝 점으로 정해줘야 끊김없이 그릴 수 있다.