# [cairo] Bezier curve

Inderjit Singh inderjit.singh at spaceapplications.com
Mon Nov 7 06:42:21 PST 2011

```Hi,

I'm new to cairo and I'm trying to draw a smooth curve between using an array of points.

Say I have an array with (x,y) coordinates as: POS_T pos = {{0.0, 0.0}, {1.0,1.0}, {1.5, 2.0}, {0.5, 3.0}, {0.0, 4.0}};

So basically, a half round 'circle'. I've been looking in cairo docs but the closest thing I get to is the cairo_curve_to but for that it requires control points. How is it determined? I want a simple smooth line but using Bezier algorithm requires additional data to make it happen. Is that correct?

Or can I simply use curve_line_to and then interpolate this? currently the code looks like this for line:

...
for(uint32_t i = 0; i < boundary; i=i++)
{
cairo_move_to(cr, station->coverage[i].x, station->coverage[i].y);

// cairo_line_to(cr,
// station->coverage[(i+1) % boundary].x,
// station->coverage[(i+1) % boundary].y);

cairo_curve_to(cr,
station->coverage[i].x,
station->coverage[(i].y,
station->coverage[i+1].x,
station->coverage[i+1].y,
station->coverage[i+2].x,
station->coverage[i+2].y);
}

cairo_set_line_width (cr, 1.5);
cairo_stroke(cr);

cairo_destroy(cr);

Any help would be appreciated. Thanks.
Indy

-------------- next part --------------
An HTML attachment was scrubbed...