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