<p>Apple's CoreGraphics library defines two functions for describing an arc.</p>

<ul>
<li>CGPathAddArc adds an arc based on a center point, radius, and pair of angles.</li>
<li>CGPathAddArcToPoint adds an arc based on a radius and a pair of tangent lines.</li>
</ul>

<p>The details are explained in <a href="http://developer.apple.com/documentation/GraphicsImaging/Reference/CGPath/Reference/reference.html" rel="noreferrer">the CGPath API reference</a>.  Why two functions?  Simple convenience?  Is one more efficient than the other?  Is one defined in terms of the other?</p>

[{'answer_id': 78169, 'author': 'Chris Hanson', 'author_id': 714, 'author_profile': 'https://Stackoverflow.com/users/714', 'pm_score': 4, 'selected': True, 'text': "<p>The former gets you a portion of a circle (really, an approximation of one), while the latter exposes the fact that you're creating a Bézier path.  Depending on what you're actually drawing, one or the other might be more convenient.  You could really consider both of them conveniences for CGPathAddCurveToPoint.</p>\n"}, {'answer_id': 19065433, 'author': 'James Snook', 'author_id': 2599552, 'author_profile': 'https://Stackoverflow.com/users/2599552', 'pm_score': 6, 'selected': False, 'text': '<p><code>CGContextAddArc</code> does this:</p>\n\n<p><img src="https://twistedape.me.uk/blog/images/AddArc.png" alt="addArc"></p>\n\n<p>where the red line is what will be drawn, sA is <code>startAngle</code>, eA is the <code>endAngle</code>, r is <code>radius</code>, and x and y are <code>x</code> and <code>y</code>. If you have a previous point the function will line from this point to the start of the arc (unless you are careful this line won\'t be going in the same direction as the arc).</p>\n\n<p><code>CGContextAddArcToPoint</code> works like this:</p>\n\n<p><img src="https://www.twistedape.me.uk/blog/images/2013-09-23-what-arctopoint-does-addArcToPoint.png" alt="addArc"></p>\n\n<p>Where P1 is the current point of the path, the x1, x2, y1, y2 match the functions <code>x1</code>, <code>x2</code>, <code>y1</code>, <code>y2</code> and r is <code>radius</code>. The arc will start in the same direction as the line between the current point and <code>(x1, y1)</code> and end in the direction between <code>(x1, y1)</code> and <code>(x2, y2)</code>. it won\'t line to <code>(x2, y2)</code> It will stop at the end of the circle.</p>\n'}]
['https://Stackoverflow.com/questions/78127', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/10947/']