使用CGAffineTransformMakeRotation旋转一个点

时间:2013-11-12 16:38:24

标签: objective-c

如果我想将一个CGPoint旋转到另一个CGPoint,我现在正在做这个(工作正常):

    CGFloat rx = cos(DEGREES_TO_RADIANS(-angle)) * (positionToRotate.x-rotationPoint.x) - sin(DEGREES_TO_RADIANS(-angle)) * (positionToRotate.y-rotationPoint.y) + rotationPoint.x;
    CGFloat ry = sin(DEGREES_TO_RADIANS(-angle)) * (positionToRotate.x-rotationPoint.x) + cos(DEGREES_TO_RADIANS(-angle)) * (positionToRotate.y-rotationPoint.y) + rotationPoint.y;

让我觉得我应该可以用CGAffineTransform做到这一点,但我对它如何工作有点困惑:

CGAffineTransform affine CGAffineTransformMakeRotation(M_PI/4);
CGPointApplyAffineTransform(positionToRotate, affine);

这没什么,因为我(希望)遗漏了一些明显的东西:) 那么如何在不自行完成矩阵数学的情况下将CGPoint旋转到另一个? 干杯, 伊恩

1 个答案:

答案 0 :(得分:1)

CGPointApplyAffineTransform返回转换后的点。它不会改变您传入的CGPoint

CGPoint transformedPoint = CGPointApplyAffineTransform(positionToRotate, affine);