2013-10-20 3 views
4

여기 내 코드의 잘린 -이 시점 번역을 위해, 원산지 주위에 점을 회전하고번역 포인트

angle = angle * M_PI/180; 
point1.x = (point1.x) * cos(angle) - (point1.y) * sin(angle); 
point1.y = (point1.x) * sin(angle) + (point1.y) * cos(angle); 

을 한 후 다시 번역하도록되어 곳은해야한다 "이동", 조건 예를 들어, x + = 2 * x 및 y + = 2 * y 인 경우, "회전"이후의 지점이 어떤 사분면인지에 따라 명시됩니다. 여기서 문제는 회전입니다 : 예를 들어, 각도가 130도, 점 (100,100) 인 경우 여기에 새 점 x의 좌표가 있습니다. CGFloat-3.09086e-06, y : CGFloat100. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

4

point1.y을 계산할 때 이미 번역 된 point1.x을 사용합니다. 아래 코드와 같은 코드를 수정하십시오 :

angle = angle * M_PI/180; 
CGPoint result = CGPointZero; 
result.x = (point1.x) * cos(angle) - (point1.y) * sin(angle); 
result.y = (point1.x) * sin(angle) + (point1.y) * cos(angle); 

그리고 나중에 계산할 때 포인트를 사용하십시오.