Проблемы с пониманием CGPathAddArc

В приложении iPad я хочу переместить слой против часовой стрелки вдоль дуги, которая имеет центральную точку (768, 512) и радиус 512. Я хочу, чтобы она начиналась в 12 часов (что является верхней правый угол экрана) и закончить в 6 часов (нижний правый угол).

После множества попыток и сбоев я получил код, работающий

CGPoint origin = logo.layer.position;

CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = YES;

CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, origin.x, origin.y);
CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
pathAnimation.duration = 2;
[logo.layer addAnimation:pathAnimation forKey:@"curve"];

Но проблема в том, что я не могу понять начальный угол и параметр угла окончания. Почему я должен использовать -M_PI_2 и M_PI_2 соответственно и установить по часовой стрелке значение YES?

Я думаю, что я перемещаю объект с 90 градусов до 270 градусов против часовой стрелки, поэтому код должен быть CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES);

Я, вероятно, ошибаюсь в разных местах и ​​случайно получил правильный результат.

Пожалуйста, исправьте меня и помогите мне понять два параметра угла:

StartAngle

The angle (in radians) from the horizontal that determines the starting point of the arc.

endAngle

The angle (in radians) from the horizontal that determines the ending point of the arc.

Спасибо

Лео

Ответ 1

Расположение 0 находится на оси X, например:

    3*PI/2
      |
PI ---|--- 0
      |
     PI/2

-PI/2 эквивалентно 3PI/2.

Вы фактически начинаете вращение в одном месте (-PI/2, 3 * PI/2, 5 * PI/2 и т.д., все равны)

"12 часов", как вы думаете, это 3 * PI/2 или -PI/2... и вы вращаетесь до "6 часов", который равен PI/2