저는 Objective C에서 간단한 회전을 시도하고 있으며 배트에서 몇 가지 문제가 있습니다. 한 가지는 내가 CGAffineTransformRotate에서 얻은 불일치와 어떻게 그 함수 안에서 M_PI가 일관성이 없는가하는 것입니다.CGAffineTransformRotate 및 M_PI 불일치 (Objective C, iOS)
이렇게하면 버튼에 연결한다고 가정합니다. 한 번 누르면 반 시계 방향으로 180도 회전하고 (문서를 따라 가며 잘 읽습니다.) 다시 누를 때 값이 음수가 아니더라도 180 이 시계 방향으로 회전합니다. -M_PI에 M_PI을 변경하면 회전 차이점없이 똑같은 일을 :
[UIView animateWithDuration:secs delay:0.0 options:option
animations:^{
self.transform = CGAffineTransformRotate(self.transform, M_PI); //Inconsistent
} completion:nil];
을 지금 내가 그것을 인쇄 할 때 M_PI에 포함 된 값이다, 3.141593로 M_PI을 변경 같아요. 자, 버튼을 누르면 완전히 잘 동작합니다. 두 번 모두 시계 반대 방향으로 180도 회전합니다. 내가 -3.141593로 변경하면 시계 방향으로, 너무 완벽하게 잘 작동합니다 : 나는 그것으로 연주 할 때 더 많은 행동이 더 이상 얻을
self.transform = CGAffineTransformRotate(self.transform, 3.141593); //Works
.
90도 (π/2) 회전하려고한다고 가정합니다. M_PI 이제 값을 사용하여 같은 동작을 가지고 있지만 회전은 그것이 있어야 무엇을 반대 :
//Should be Clockwise but rotates CounterClockwise
self.transform = CGAffineTransformRotate(self.transform, -M_PI/2);
self.transform = CGAffineTransformRotate(self.transform, -1.5707965);
//Should be CounterClockwise but rotates Clockwise
self.transform = CGAffineTransformRotate(self.transform, M_PI/2);
self.transform = CGAffineTransformRotate(self.transform, 1.5707965);
그리고 나는 180 개도 (PI)을 통해 무엇을 회전 할 경우, 동작은 가장 짧은 회전하는 것입니다 비록 내가 양수 또는 음수 회전을 지정한다고해도 360도 (2PI)를 회전해도 회전하지 않습니다.
누군가 이러한 일이 발생하는 이유를 말해 줄 수 있고 더 일관성있게 만들 수 있습니까? 그리고 제가 가지고있는 2 차 질문은 270과 360도 회전시킬 수있는 방법입니다.
감사합니다.
왜 pi/2 (90)를 돌려서 반대 방향으로 3pi/2 (270) 위치로 회전합니까? – FireDragonMule