2011-07-28 10 views
11

W aplikacji na iPada chcę przesunąć warstwę w kierunku przeciwnym do ruchu wskazówek zegara wzdłuż łuku, który ma punkt środkowy (768, 512) i promień 512. Chcę, aby rozpoczynał się o godzinie 12 (który znajduje się w prawym górnym rogu ekranu) i kończy się o godzinie 6 (prawy dolny róg).Po rozpoznaniu problemu CGPathAddArc

Po wielu spróbować-i-nie, mam kod roboczy

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"]; 

Ale problem jest nie mogę zrozumieć początkowy kąt i kąt końcowy parametr. Dlaczego powinienem używać odpowiednio -M_PI_2 i M_PI_2 i ustawić zgodnie z ruchem wskazówek zegara na TAK?

myślę, że jestem w ruchu obiektu od 90 stopni do 270 stopni w lewo, a więc kod powinien być
CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES);

jestem chyba źle w wielu miejscach i przez przypadek dostał poprawny wynik.

proszę mnie poprawić i pomóc mi zrozumieć parametry dwa Kąt:

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. 

Dzięki

Leo

Odpowiedz

18

Położenie 0 jest na osi X, na przykład:

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

PI/2 odpowiada 3PI/2.

Ty skutecznie rozpoczynając swój obrót w tym samym miejscu (PI/2, 3 * PI/2, 5 * PI/2, itd., Wszystkie są równe)

"godzina dwunasta" ponieważ myślisz o tym, że jest 3 * PI/2 lub -PI/2 ... i obracasz się do "godziny szóstej", która jest PI/2

+1

odwrócona do góry dno osi Y mnie. również dzięki, pomogło mi :) – codrut