Function

Appends an arc to a mutable graphics path, possibly preceded by a straight line segment.

## Parameters

`path`

The mutable graphics path to change.

`m`

A pointer to an affine transformation matrix, or `NULL` if no transformation is needed. If specified, Core Graphics applies the transformation to the arc before it is added to the path.

`x`

The x-coordinate of the center point of the arc.

`y`

The y-coordinate of the center point of the arc.

`r`

`startAngle`

The angle (in radians) that determines the starting point of the arc, measured from the x-axis in the current user space.

`endAngle`

The angle (in radians) that determines the ending point of the arc, measured from the x-axis in the current user space.

`clockwise`

A Boolean value that specifies whether or not to draw the arc in the clockwise direction, before applying the transformation matrix.

## Discussion

An arc is a segment of a circle with radius r centered at a point `(x,y)`. When you call this function, you provide the center point, radius, and two angles in radians. Core Graphics uses this information to determine the end points of the arc, and then approximates the new arc using a sequence of cubic Bézier curves. The `clockwise` parameter determines the direction in which the arc is created. The actual direction may change depending on the coordinate system transformation applied to the path.

A transformation may be applied to the Bézier curves before they are added to the path. If no transform is needed, the second argument should be `NULL`.

If the specified path already contains a subpath, Core Graphics implicitly adds a line connecting the subpath’s current point to the beginning of the arc. If the path is empty, Core Graphics creates a new subpath with a starting point set to the starting point of the arc.

The ending point of the arc becomes the new current point of the path.

### Modifying Core Graphics Paths

`CGPathAddRelativeArc`

Appends an arc to a mutable graphics path, possibly preceded by a straight line segment.

`CGPathAddArcToPoint`

Appends an arc to a mutable graphics path, possibly preceded by a straight line segment.

`CGPathAddCurveToPoint`

Appends a cubic Bézier curve to a mutable graphics path.

`CGPathAddLines`

Appends an array of new line segments to a mutable graphics path.

`CGPathAddLineToPoint`

Appends a line segment to a mutable graphics path.

`CGPathAddPath`

Appends a path to onto a mutable graphics path.

`CGPathAddQuadCurveToPoint`

Appends a quadratic Bézier curve to a mutable graphics path.

`CGPathAddRect`

Appends a rectangle to a mutable graphics path.

`CGPathAddRects`

Appends an array of rectangles to a mutable graphics path.

`CGPathAddRoundedRect`

Appends a rounded rectangle to a mutable graphics path.

`CGPathApply`

For each element in a graphics path, calls a custom applier function.

`CGPathMoveToPoint`

Starts a new subpath at a specified location in a mutable graphics path.

`CGPathCloseSubpath`

Closes and completes a subpath in a mutable graphics path.

`CGPathAddEllipseInRect`

Adds to a path an ellipse that fits inside a rectangle.