CGPathAddArc против CGPathAddArcToPoint - PullRequest
       25

CGPathAddArc против CGPathAddArcToPoint

12 голосов
/ 17 сентября 2008

Библиотека Apple CoreGraphics определяет две функции для описания дуги.

  • CGPathAddArc добавляет дугу на основе центральной точки, радиуса и пары углов.
  • CGPathAddArcToPoint добавляет дугу на основе радиуса и пары касательных линий.

Подробности объясняются в справочнике CGPath API . Почему две функции? Простое удобство? Один эффективнее другого? Определено ли одно в терминах другого?

Ответы [ 2 ]

66 голосов
/ 28 сентября 2013

CGContextAddArc делает это:

addArc

, где красная линия - это то, что будет нарисовано, sA - startAngle, eA - endAngle, r - radius, а x и y - x и y. Если у вас есть предыдущая точка, функция будет проходить от этой точки до начала дуги (если вы не будете осторожны, эта линия не будет идти в том же направлении, что и дуга).

CGContextAddArcToPoint работает так:

addArc

Где P1 - текущая точка пути, x1, x2, y1, y2 соответствуют функциям x1, x2, y1, y2, а r равно radius. Дуга начнется в том же направлении, что и линия между текущей точкой и (x1, y1), и закончится в направлении между (x1, y1) и (x2, y2). он не будет соответствовать (x2, y2) Он остановится в конце круга.

8 голосов
/ 17 сентября 2008

Первый дает вам часть круга (на самом деле, приблизительную единицу), в то время как последний раскрывает тот факт, что вы создаете путь Безье. В зависимости от того, что вы на самом деле рисуете, один или другой может быть более удобным. Вы могли бы действительно рассмотреть оба эти удобства для CGPathAddCurveToPoint.

...