2015-10-01 2 views
1

Я хочу отображать изображения на дуге между двумя точками. У меня есть начальный CGPoint и конечный CGPoint. Я видел ответы на что-то подобное, используя SceneKit и другие ответы, которые производят целые арки и графики. Я просто работаю в обычном режиме.Создайте дугу между двумя CGPoints и получите CGPoints вдоль нее

Моя конечная цель заключается в конечном итоге с чем-то вроде этого (где буквы представляют изображения):

enter image description here

И мне нужно знать, где установить центр B & C.

let firstLabel = UILabel(frame: CGRectMake(12, 200, 50, 50)) 
let lastLabel = UILabel(frame: CGRectMake(250, 360, 50, 50)) 
+1

Вы изучали использование математики для расчета местоположений? – Wain

+0

@Wain Я не уверен, как, мне нужно, чтобы он был динамическим между A-D. Иногда может быть различное количество элементов. –

+2

Вы знакомы с параметрическим уравнением круга? Он включает в себя центр, радиус, sin и cos. Это скорее математический, чем вопрос программирования. –

ответ

3

Здесь вам, вероятно, потребуется параметрическое уравнение эллипса, а не круга. Это выглядит следующим образом:

х = а * соз (т) у = б * Sin (т), где 0 < = т < = 2π

и b - радиусы эллипса. Если мы возьмем, что A есть (x1, y1), а D есть (x2, y2), n - количество точек, которые вы хотите между A и D (2 в вашем примере - B и C), то расчет точки должен выглядеть примерно так:

let a = x2 - x1 
let b = y2 - y1 
let angleStep = M_PI_2/Double(n + 1) 
var angle = angleStep 
var points: [CGPoint] = [] 
while angle < M_PI_2 { 
    let x = a * CGFloat(cos(angle)) 
    let y = y2 - b * CGFloat(sin(angle)) 
    points.append(CGPointMake(x, y)) 
    angle += angleStep 
} 
Смежные вопросы