베지어 함수의 코드는 다음과 같다.
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도 회전하면 베지어의 법선 벡터를 구할 수 있다.