Возникла проблема с пониманием 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.

Спасибо

Leo

11
задан leo 28 July 2011 в 10:59
поделиться