如果我想将一个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旋转到另一个? 干杯, 伊恩
答案 0 :(得分:1)
CGPointApplyAffineTransform
返回转换后的点。它不会改变您传入的CGPoint
。
CGPoint transformedPoint = CGPointApplyAffineTransform(positionToRotate, affine);