2008-09-16 1 views
12

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

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

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

ответ

8

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

+0

Вы хотите сказать, что CGPathAddArcToPoint может нарисовать кривую, которая не является круговой? Я думал, что все дуги являются частями круга. – benzado 2008-09-17 19:32:12

+0

Круг не может быть точно описан кривой Безье. – 2008-10-26 06:35:48

63

CGContextAddArc делает это:

addArc

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

CGContextAddArcToPoint работает следующим образом:

addArc

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