我正在尝试为矩形创建一个简单的圆角。我已经使用bezierCurveTo方法创建了顶部,但是我必须玩弄控制点的y值来获得曲线的正确高度。如果我知道宽度和想要曲线通过的高度,是否有公式可以找到控制点的y值?我现在拥有的函数是: c.moveTo(130,55); c.bezierCurveTo(130,-18,0,-18,0,55); -18是我需要将y值设定为的数值,以便使曲线大致通过y = 0。
针对这种受限版本的贝塞尔曲线,有一个简单的答案。从维基百科这里获取三次贝塞尔曲线的定义,并解出曲线上中点(t=0.5)时,y的最小值为: 1/4 Ymax + 3/4 Ymin (Ymax 是起始点和终止点的 y 值,Ymin 是两个控制点的 y 值)。 或者,使中点为 0,Ymin = -1/3 Ymax. 因此,由于您有Ymax = 55,因此Ymin必须为-1/3 * 55 = -18.333 .. - 这就是为什么在您的示例中18有效的原因。
arcTo
就能满足你的需求? - Phrogz