[cairo] Calculating Control Points For Bsplines

Bernhard Fischer bf at abenteuerland.at
Mon Dec 14 23:52:42 PST 2015

On Monday 14 December 2015 10:41:04 Bill Spitzak wrote:
> You can usually avoid working with angles entirely, by using vector math.
> For instance it is very common to make the handle slope for P1 be equal to
> the slope between P0 and P2. This means the distance from P1 to the handle
> ends is some multiple of (P2-P0), all done with xy pairs and no angles or
> trig needed.
> Making the two handles for a point equal-length and parallel is a
> requirement if you want the second derivative of the curve to be
> continuous. Though it is not clear whether this results in the most
> attractive curve.

There are several methods and each creates a different curve. I implemented the 
variant you suggested above (parallel to P2-P0) and a second variant where I 
take the mean angle (I calculate this with x/y pairs as you suggested but I 
finally use the angle to find the control points along this line respectively). 

Here's the difference:
P2-P0 parallel
Mean angle


More information about the cairo mailing list