Понимание механизма изгиба UIBezierPath, controlPoint и точки кривой

Я пытаюсь нарисовать простую форму Parabola, используяUIBezierPath, у меня естьmaxPoint иboundingRect из которых я основываю ширину и протяженность параболы.
Вот функция, которую я сделал, чтобы нарисовать параболу (я рисую параболу в виде контейнера,rect будетcontainer.bounds):

func addParabolaWithMax(maxPoint: CGPoint, inRect boundingRect: CGRect) {
    let path = UIBezierPath()

    let p1 = CGPointMake(1, CGRectGetMaxY(boundingRect)-1)
    let p3 = CGPointMake(CGRectGetMaxX(boundingRect)-1, CGRectGetMaxY(boundingRect)-1)

    path.moveToPoint(p1)
    path.addQuadCurveToPoint(p3, controlPoint: maxPoint)

    // Drawing code
    ...
}

Моя проблема в том, что я хочуmaxPoint что я посылаю в функцию, чтобы быть фактической крайней точкой в ​​самой параболе. Так, например, если я отправлю в(CGRectGetMidX(container.bounds), 0)Максимальная точка должна быть в самом верхнем центре. Но при использовании этой функции с этой конкретной точкой, вот как выглядит результат:

Так что же здесь делает этот путь? Или, другими словами, как я могу получить отcontrolPoint до фактического максимума, который мне нужен? Я попытался добавить и вычесть различные значения изy значение, основанное на высотеboundingRect, но я не мог найти правильную комбинацию, так как в разных точках с разнымиy Ценности это ведет себя по-разному. Кажется, там добавлен какой-то множитель, как я могу его решить?

Ответы на вопрос(3)

Ваш ответ на вопрос