TOOLS GAMES DEVLOG DOCS ABOUT CONTACT
HOME > DOCS > Math & Physics > 3차 베지어 곡선(Cubic Bézier Curve) 보간 공식과 투사체 유도 미사일 궤적 계산
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. 베지어 곡선 포인트 및 접선 벡터 계산기

BezierCurveUtil.cs
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);
    }
}

참고자료 & 관련 링크