我确实有一条贝塞尔曲线,在某个点,我想要第二条贝塞尔曲线以平滑的方式“分支”第一条曲线。除了计算交点(按照贝塞尔曲线的百分比),我还需要控制点(切线和权重)。 使用以下 javascript 计算交点:
getBezier = function getBez(percent,p1,cp1,cp2,p2) {
function b1(t) { return t*t*t }
function b2(t) { return 3*t*t*(1-t) }
function b3(t) { return 3*t*(1-t)*(1-t) }
function b4(t) { return (1-t)*(1-t)*(1-t) }
var pos = {x:0,y:0};
pos.x = p1.x*b1(percent) + cp1.x*b2(percent) + cp2.x*b3(percent) + p2.x*b4(percent);
pos.y = p1.y*b1(percent) + cp1.y*b2(percent) + cp2.y*b3(percent) + p2.y*b4(percent);
return pos;
}
(非 IE 浏览器可以在 http://www.iscriptdesign.com -> Tutorial -> Groups & Paths 看到它的运行)。 我现在需要的是分支点的控制点或(切线和权重)(我不知道从哪里开始,我希望有人可以指出一些代码或数学方程式,如果可能的话作为来自相同参数的函数如上面的 getBezier 函数)。
最佳答案
发现并实现了它:de-Casteljau
算法被证明是最快的可实现解决方案。它目前存在于:
iScriptDesign (教程 -> Spit Bezier)。
关于javascript - 如何计算贝塞尔曲线上的控制点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958257/