Joining Bézier Curves

When two Bézier curves are joined to form a longer curve, we often want to have a smooth join (i.e. no sharp edges), which is achieved by having both curve segments share the same direction of the tangent vector at the join. We might also want the 'speed' at which we move along the curve as \(t\) varies to remain constant at the join point, so that if we are using the curve to animate an object, the speed of the object does not suddenly change. Note that although \(t\) varies from \(0\) to \(2\), within a single curve segment we adjust it to fit in the range \(0\) to \(1\).

When the first and last control points of the curve are at the same coordinates, the two curve segments are connected, and this is called \(C^0\) continuity. If the derivative of the curve at the joinremains constant, this is called \(C^1\) continuity. If the derivatives of the two curves (their tangent vectors) are some multiple of each other, so they are facing the same direction but have different magnitudes, this is called \(G^1\) continuity. With \(G^1\) continuity the join will appear smooth, but as we vary \(t\) the speed at which the point on the curve moves will change between the two curve segments at the join.

To achieve \(C^1\) continuity we simply have to set the tangent vectors to be equal, for curves with control points \(p_0,\ldots,p_3\) and \(q_0,\ldots,q_3\) this is done by setting

$$p_3-p_2=q_1-q_0$$

For \(G^1\) continuity we set the tangent vectors to be some multiple of one another, so for curves with control points \(p_0,\ldots,p_3\) and \(q_0,\ldots,q_3\)

$$p_3-p_2=k(q_1-q_0)$$

Try moving the control points of the two curves above and see how this affects the smoothness of the join, and the speed at which the point for a given value of \(t\) moves along the two segments.