문제

다른 CGPoint (파란색 Rect) 주변에서 cgpoint (빨간색 rept)를 회전시키고 싶지만 원점에서 거리를 변경합니다.나는 앵글 가치로 90을 주지만, 원점을 내리지 만 거의 3 배 더 떨어져서 거리를 바꾸고 다른 거리를 유지하고 다른 곳에서 cgpoint를 회전시키고 싶습니다.CGPoints 회전에 대한 모든 접근 방식을 안내하십시오 ...

distance = 100;
angle = 270*M_PI/180;    
rotatedPoint.x = initialPoint.x+distance*cos(angle);
rotatedPoint.y = initialPoint.y+distance*sin(angle);
    //rotatedPoint.x = initialPoint.x+tan(angle);

[test setCenter:rotatedPoint];   
[test setBackgroundColor:[UIColor redColor]];
.

감사합니다

도움이 되었습니까?

해결책

cgaffinetransform은 회전, 번역 및 스케일링에 관해서는 편리한 도구입니다.포인트가 올바르게 회전되었는지 확인하려면 원점으로 번역하고 회전 한 다음 다시 번역해야합니다.

변형을 완료하려면 다음과 같은 것과 같은 것과 같아야합니다.

CGPoint pointToRotate = CGPointMake(30, 30);
float angleInRadians = DEGREES_TO_RADIANS(90);
CGPoint distanceFromOrigin = CGPointMake(0 - pointToRotate.x, 0 - pointToRotate.y);

CGAffineTransform translateToOrigin = CGAffineTransformMakeTranslation(distanceFromOrigin.x, distanceFromOrigin.y);
CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(angleInRadians);
CGAffineTransform translateBackFromOrigin = CGAffineTransformInvert(translateToOrigin);

CGAffineTransform totalTransform = CGAffineTransformConcat(translateToOrigin, rotationTransform);
totalTransform = CGAffineTransformConcat(totalTransform, translateBackFromOrigin);

pointToRotate = CGPointApplyAffineTransform(pointToRotate, totalTransform);
.

과 다음은 CGAffinetRansform에 대한 설명서입니다. http://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/cgaffinetransform/reference/reference.html

이 문제가 해결되지 않으면 다른 것이 필요하면 알려주십시오!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top