我试图创建一个简单的圆形顶部到矩形.我能够使用该bezierCurveTo方法创建上限,但我不得不使用控制点的y值来获得正确的曲线高度.如果我有宽度并且我知道我希望曲线通过的高度是他们找到控制点的y值的公式?我现在的功能是
c.moveTo(130,55);
c.bezierCurveTo(130,-18,0,-18,0,55);
Run Code Online (Sandbox Code Playgroud)
-18是我必须设置y值以使曲线大致通过y = 0.
是的,这个受限制的贝塞尔曲线版本有一个简单的答案.在这里从维基百科中定义一个三次贝塞尔曲线,并求解沿曲线的中点(t = 0.5),y的最小值将是:
1/4 Ymax + 3/4 Ymin
Run Code Online (Sandbox Code Playgroud)
(Ymax是起点和终点的y值,Ymin是两个控制点的y值).或者,对于中点为0,
Ymin = -1/3 Ymax.
Run Code Online (Sandbox Code Playgroud)
所以,既然你有Ymax = 55,Ymin必须是-1/3*55 = -18.333 .. - 这就是为什么18在你的例子中工作.
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |