[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
https://www.cypherpunk.at/download/eagle/bspline_eq.png
Mean angle
https://www.cypherpunk.at/download/eagle/bspline_iso.png
Regards,
Bernhard
More information about the cairo
mailing list