베지어 함수의 코드는 다음과 같다.
vec3 bezier(vec3 P0, vec3 P1, vec3 P2, vec3 P3, float t) {
float u = 1.0 - t;
float tt = t * t;
float uu = u * u;
float uuu = uu * u;
float ttt = tt * t;
vec3 p = uuu * P0; // (1-t)^3 * P0
p += 3.0 * uu * t * P1; // 3*(1-t)^2*t*P1
p += 3.0 * u * tt * P2; // 3*(1-t)*t^2*P2
p += ttt * P3; // t^3*P3
return p;
}
베지어 상의 접선에 대한 함수 코드는 다음과 같다.
vec3 bezierGrad(vec3 P0, vec3 P1, vec3 P2, vec3 P3, float t) {
return 3.0 * (1.0 - t) * (1.0 - t) * (P1 - P0) +
6.0 * (1.0 - t) * t * (P2 - P1) +
3.0 * t * t * (P3 - P2);
}

접선에 대한 벡터를 90도 회전하면 베지어의 법선 벡터를 구할 수 있다.


