Function Context.arc
Adds a circular arc
of the given radius
to the current path.
The arc
is centered at center
, begins at angle1
and proceeds in
the direction of increasing angles to end at angle2
.
If angle2
is less than angle1
it will be progressively
increased by 2*PI until it is greater than angle1
.
If there is a current point
, an initial line segment will be
added to the path to connect the current point
to the beginning
of the arc
. If this initial line is undesired, it can be
avoided by calling newSubPath
() before calling arc
().
Angles are measured in radians. An angle of 0.0 is in the
direction of the positive X axis (in user space). An angle
of PI/2.0 radians (90 degrees) is in the direction of the
positive Y axis (in user space). Angles increase in the
direction from the positive X axis toward the positive Y
axis. So with the default transformation matrix
, angles
increase in a clockwise direction.
(To convert from degrees to radians, use degrees * (PI / 180))
This function gives the arc
in the direction of increasing angles;
see arcNegative
() to get the arc
in the direction of decreasing angles.
The arc
is circular in user space. To achieve an elliptical arc
,
you can scale
the current transformation matrix
by different
amounts in the X and Y directions. For example, to draw an
ellipse in the box given by x, y, width, height:
cr.save();
cr.translate(x + width / 2, y + height / 2);
cr.scale(width / 2, height / 2);
cr.arc(Point(0, 0), 1, 0, 2 * PI);
cr.restore();
Prototypes
void arc(
Point!(double) center,
double radius,
double angle1,
double angle2
);
void arc(
double centerX,
double centerY,
double radius,
double angle1,
double angle2
);
Parameters
Name | Description |
---|---|
radius | the radius of the arc |
angle1 | the start angle, in radians |
angle2 | the end angle, in radians |
Authors
Johannes Pfau | cairoD |
Andrej Mitrovic | cairoD |
cairo team | cairo |
Copyright
License
cairoD wrapper/bindings | Boost License 1.0 |
cairo | LGPL 2.1 / MPL 1.1 |