在画布中找到贝塞尔曲线的高度

时间:2010-12-08 02:08:56

标签: canvas bezier

我正在尝试创建一个简单的圆形顶部到矩形。我能够使用bezierCurveTo方法创建上限,但我必须使用控制点的y值来获得正确的曲线高度。如果我有宽度并且我知道我希望曲线通过的高度是他们找到控制点的y值的公式?我现在的功能是

c.moveTo(130,55);
c.bezierCurveTo(130,-18,0,-18,0,55);

-18是我必须设置y值以使曲线大致通过y = 0。

1 个答案:

答案 0 :(得分:5)

是的,这个受限制的贝塞尔曲线版本有一个简单的答案。从维基百科here中定义一个三次贝塞尔曲线,并求解曲线的中点(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个。