我用这个算法来计算二次贝塞尔长度: http://www.malczak.linuxpl.com/blog/quadratic-bezier-curve-length/
然而,我希望做的是从0计算贝塞尔的长度为t,其中0 <T <1
有什么办法来修改上述链接用来获取贝塞尔曲线的第一段长度的公式?
只是为了澄清,我不是在寻找(0)和Q(t),这些点之间那张弧的长度Q之间的距离,但。
(我不希望使用自适应细分到aproximate长度)
我用这个算法来计算二次贝塞尔长度: http://www.malczak.linuxpl.com/blog/quadratic-bezier-curve-length/
然而,我希望做的是从0计算贝塞尔的长度为t,其中0 <T <1
有什么办法来修改上述链接用来获取贝塞尔曲线的第一段长度的公式?
只是为了澄清,我不是在寻找(0)和Q(t),这些点之间那张弧的长度Q之间的距离,但。
(我不希望使用自适应细分到aproximate长度)
因为我相信类似的形式解决方案将存在该变量t
的情况下-我延长给出的链接的解决方案。
从链接中的公式开始:
我们可以为写
其中b = B/(2A)
和c = C/A
。
然后转化u = t + b
我们得到
其中k = c - b^2
现在我们可以使用积分身份从链接获取:
所以,总的来说,所需的步骤是:
b = B/(2A)
和c = C/A
u = t + b
和k = c -b^2
虽然可能有一个封闭的形式表达,这是我会怎么做:
使用去应用Casteljau算法的贝塞尔分成0到t部分,并使用算法从链接来计算它的长度。
你只需要评估没有1 0 0之间,但与之间和T的积分。 您可以使用您所选择的符号工具箱这样做,如果你不进入数学。 例如:
http://integrals.wolfram.com/index.jsp?expr=Sqrt\[a*x*x%2Bb*x%2Bc\]&random=false
评估对于x = t与X = 0的结果和相减。