1ow*_*k3y 2 javascript bezier canvas
采用JavaScript绘制的典型立方贝塞尔曲线(这个例子我用Google搜索...) http://jsfiddle.net/atsanche/K38kM/
具体来说,这两行:
context.moveTo(188, 130);
context.bezierCurveTo(170, 10, 350, 10, 388, 170);
Run Code Online (Sandbox Code Playgroud)
我们有一个立方贝塞尔曲线,它起始于188, 130,结束于388, 170,并具有控制点a:170, 10和b:350, 10
我的问题是,是否可以通过数学方式调整终点和控制点,使另一条曲线成为原始曲线的一部分?
理想的结果是能够从一开始就获得贝塞尔曲线的一个百分比切片,其中0.5将仅绘制贝塞尔曲线的一半,0.75将绘制大部分贝塞尔曲线(等等)
我已经开始使用De Castelau的一些实现,它允许我跟踪[0 ... 1]之间贝塞尔曲线的轮廓,但这并没有提供一种方法来数学重新计算贝塞尔曲线的终点和控制点制作一个子贝塞尔...
提前致谢
De Casteljau确实是算法.对于由4个控制点P0,P1,P2和P3定义的三次贝塞尔曲线,子贝塞尔曲线(0,u)的控制点为P0,Q0,R0和S0以及子贝塞尔曲线的控制点. (u,1)是S0,R1,Q2和P3,其中
Q0 =(1-u)*P0 + u*P1
Q1 =(1-u)*P1 + u*P2
Q2 =(1-u)*P2 + u*P3
R0 =(1-u)*Q0 + u*Q1
R1 =(1-u)*Q1 + u*Q2
S0 =(1-u)*R0 + u*R1
请注意,如果您想从原始贝塞尔曲线"提取"一个片段(u1,u2),则必须两次申请De Casteljau.第一次将输入Bezier曲线C(t)分解为参数u1处的C1(t)和C2(t),第二次将曲线C2(t)分割为调整后的参数u2*=(u2) -u1)/(1-U1).