[Math] how to calculate the normal vector for a bezier curve

bezier-curve

Say we have a cubic Bezier curve (so 4 control points) named Q. I understand how to calculate the tangent at by taking the derivative of Q and substituting but i'm not sure how to calculate the normal vector.

Thank you for the help!

Best Answer

If the curve lies in some plane, and you want a normal vector that also lies in this same plane, just rotate the tangent vector by 90 degrees clockwise or counter-clockwise. So, if the tangent vector is $(u,v,0)$, the normal vector will be either $(v,-u,0)$ or $(-v,u,0)$. If you use a unit-length tangent vector, this will give a unit-length normal vector, too.

If the curve is not planar, there are an infinite number of normal vectors at each point, and you have to decide which one you want. If $\mathbf{t}$ is the tangent vector, and $\mathbf{v}$ is any other vector not parallel to $\mathbf{t}$, then the vector cross product $\mathbf{t} \times \mathbf{v}$ will be normal to the curve. This cross product will not necessarily have unit length, though, so you may want to unitize it before using it in further calculations.

The calculation in the first paragraph is a special case of the one in the second paragraph. We just used $\mathbf{v} = (0,0,\pm 1)$.

Finding normal vectors for Bezier curves is no different from finding normal vectors on any curve. You can read about this in any book on calculus or differential geometry.