@ Ответ Ларса был лучшим и самым простым для меня.Вот версия Swift 4:
let newPoint = CGPoint(x: origin.x + factor * (end.x - origin.x), y: origin.y + factor * (end.y - origin.y))
Если у вас есть текущее расстояние, вы можете добавить и вычесть его или изменить его, вычислив:
let factor = newDistance/currentDistance
В моем случае,У меня был калькулятор расстояния от CGPoint до CGPoint с использованием расширения:
extension CGPoint {
func distance(to point: CGPoint) -> CGFloat {
let x = self.x - point.x
let y = self.y - point.y
return sqrt(pow(x, 2) + pow(y, 2))
}
}