Как сделать CGMutablePath анимированным от дуги до прямой линии?

Я использую следующую функцию для создания изогнутого пути:

    public class func createHorizontalArcPath(_ startPoint:CGPoint, width:CGFloat, arcHeight:CGFloat, closed:Bool = false) -> CGMutablePath
    {
        // http://www.raywenderlich.com/33193/core-graphics-tutorial-arcs-and-paths

        let arcRect = CGRect(x: startPoint.x, y: startPoint.y-arcHeight, width: width, height: arcHeight)

        let arcRadius = (arcRect.size.height/2) + (pow(arcRect.size.width, 2) / (8*arcRect.size.height));
        let arcCenter = CGPoint(x: arcRect.origin.x + arcRect.size.width/2, y: arcRect.origin.y + arcRadius);

        let angle = acos(arcRect.size.width / (2*arcRadius));
        let startAngle = CGFloat(M_PI)+angle // (180 degrees + angle)
        let endAngle = CGFloat(M_PI*2)-angle // (360 degrees - angle)

        let path = CGMutablePath();
        path.addArc(center: arcCenter, radius: arcRadius, startAngle: startAngle, endAngle: endAngle, clockwise: false)
        if(closed == true)
        {path.addLine(to: startPoint)}
        return path;
    }

Жизнь хороша, дает мне именно то, что я ищу. Проблема в том, что я хочу взять путь, который я генерирую с помощью этой функции, в прямую линию. Если я установлю высоту на 0, путь вообще не будет рисоваться. Я могу взломать его с помощью небольшого значения, например 0,00001, но тогда высота строки будет испорчена из-за наложения или чего-то еще.

0 ответов

Другие вопросы по тегам