如何弯曲气球尾(简单的三角形)

Ser*_*nce 12 core-graphics ios

我有一个简单的三角形(用作气球尾巴),我试图像下面这样曲线:

在此输入图像描述

我将尾部形状存储在a中CGMutablePathRef,并绘制如下:

- (void) drawPaths
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextAddPath(context, self.mutablePath);

    CGPathRelease(mutablePath);
    CGColorRelease(fillColor);
    CGColorRelease(strokeColor);

}
Run Code Online (Sandbox Code Playgroud)

当我向这个算法(比如说45度)输入一个角度时尾部旋转并且曲线很像上面的照片,我试图这样做.旋转显然是一个简单的转换,但让它曲线化是我正在努力的.我意识到我可能需要使用:CGPathAddQuadCurveToPoint但是我无法理解要设置什么作为我的控制点并且我得到了不可预测的结果.即便是这个精彩的帖子让我一无所知:给定一个CGPath,如何让它变得曲线?

有谁知道如何做到这一点?

War*_*Dew 1

我假设您已经或可以获得路径原点(气球上路径的终点)和终点(三角形的尖端)的 x 和 y 坐标,这是您想要的每条路径的 x 和 y 坐标。我们将起点(xorig,yorig)和终点(xend,yend)称为。为了制作路径曲线,我们需要计算一个合理的二次曲线协调点,我们将其称为(xc,yc)。我相信下面的坐标计算将为您生成一条合理的曲线:

xc = (xorig * 3 + xend) / 4;
yc = (xorig + xend) / 2;
CGPathAddQuadCurveToPoint(mutablePath, NULL, xc, yc, xend, yend).
Run Code Online (Sandbox Code Playgroud)

要使路径曲线不同,您可以在 xc 的计算中改变 xorig 和 xend 的权重。