Curves
I implemented two refinement techniques, "Split&Tweak" and "4-point". Both take as input a control polygon P with n vertices and produce another "smoother" control polygon S with 2n vertices. Both approaches start by inserting a new vertex in the middle of each edge of P. (This is the "split" operation.) Then the "Split&Tweak" technique pulls each original vertex halfway towards the average of its two neighbors (See Figure 1.1).

Figure 1.1
The "4-point approach, on the other hand, pushes the newly inserted midpoints by 1/4 away from the average of their neighboring mid-points on the left and on the right.

Figure 1.2
If you apply these smoothing operations repeatedly, the Split and Tweak will converge to a uniform cubic B-Spline curve that is typically smooth by does not interpolate the vertices of P. The 4-point approach always interpolates the vertices of P, but may exhibit shaper turns, as shown in Figure 1.3, which compares the two approaches. Because both approaches converge quickly, 3 levels of subdivision are usually sufficient to produce a smooth-looking curve.

Figure 1.3