Использование CGAffineTransform не был действительно вариант в моем случае использования, но я был в состоянии успешно повернуть серию CGPoints, используя метод из этого ответа https://stackoverflow.com/a/35683523/3591202. Ниже приведено расширение, которое я использовал для поворота CGPoints.
func rotate(around center: CGPoint, with degrees: CGFloat) -> CGPoint {
let dx = self.x - center.x
let dy = self.y - center.y
let radius = sqrt(dx * dx + dy * dy)
let azimuth = atan2(dy, dx) // in radians
let newAzimuth = azimuth + degrees * CGFloat(M_PI/180.0) // convert it to radians
let x = center.x + radius * cos(newAzimuth)
let y = center.y + radius * sin(newAzimuth)
return CGPoint(x: x, y: y)
}
Этот метод фактически не работает в моем случае использования. Метод отсюда отлично работал! http://stackoverflow.com/a/1595337/3591202 – bevbomb
Что действительно не работает? Ваше решение иногда не нужно, потому что вы используете квадратные корни и обратные тангенсы. Примечание: 'angle' находится в радианах не в градусах. – clemens