2

如果我想将一个 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 呢?干杯,伊恩

4

1 回答 1

1

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

CGPoint transformedPoint = CGPointApplyAffineTransform(positionToRotate, affine);
于 2013-11-12T16:41:34.277 回答