Это действительно вопрос математики. В Swift, вы хотите что-то вроде:
func rotatePoint(target: CGPoint, aroundOrigin origin: CGPoint, byDegrees: CGFloat) -> CGPoint {
let dx = target.x - origin.x
let dy = target.y - origin.y
let radius = sqrt(dx * dx + dy * dy)
let azimuth = atan2(dy, dx) // in radians
let newAzimuth = azimuth + byDegrees * CGFloat(M_PI/180.0) // convert it to radians
let x = origin.x + radius * cos(newAzimuth)
let y = origin.y + radius * sin(newAzimuth)
return CGPoint(x: x, y: y)
}
Есть много способов, чтобы упростить это, и это идеальный случай для расширения к CGPoint
, но я оставил его многословным для ясности.
Спасибо, это сработало отлично – Benja0906
Это работало отлично! Единственный ответ, который я нашел, работает без использования CGAffineTransform – bevbomb