Math & Physics
Beginner
Unity 2021.3+ / Unity 6
3차 베지어 곡선(Cubic Bézier Curve) 보간 공식과 투사체 유도 미사일 궤적 계산
시작점, 도착점, 2개의 제어점(Control Points)을 활용하여 부드러운 카메라 궤적, 탄도 미사일 유도 경로, UI 커브를 생성하는 수학 수식 C# 구현.
#Math #Bezier #Spline #Trajectory #Interpolation
핵심 개념3차 베지어 곡선 공식 $B(t) = (1-t)^3 P_0 + 3(1-t)^2 t P_1 + 3(1-t) t^2 P_2 + t^3 P_3$ ($0 \le t \le 1$)은 시작점 $P_0$에서 끝점 $P_3$까지 제어점 $P_1, P_2$의 인력을 받아 유려하게 휘어지는 곡선을 만들어냅니다.
1. 베지어 곡선 포인트 및 접선 벡터 계산기
using UnityEngine;
public static class BezierCurveUtil
{
public static Vector3 GetPoint(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
t = Mathf.Clamp01(t);
float u = 1f - t;
float tt = t * t;
float uu = u * u;
float uuu = uu * u;
float ttt = tt * t;
return (uuu * p0) + (3f * uu * t * p1) + (3f * u * tt * p2) + (ttt * p3);
}
// 곡선의 진행 방향(접선 벡터 / Tangent) 계산
public static Vector3 GetTangent(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
t = Mathf.Clamp01(t);
float u = 1f - t;
return 3f * u * u * (p1 - p0) + 6f * u * t * (p2 - p1) + 3f * t * t * (p3 - p2);
}
}