Math 计算二次贝塞尔曲线段的长度
我使用此算法计算二次贝塞尔曲线的长度: 然而,我想做的是计算贝塞尔曲线从0到t的长度,其中0Math 计算二次贝塞尔曲线段的长度,math,bezier,Math,Bezier,我使用此算法计算二次贝塞尔曲线的长度: 然而,我想做的是计算贝塞尔曲线从0到t的长度,其中0
(我不希望使用自适应细分来近似长度)虽然可能存在封闭形式的表达式,但我会这样做:
用于将bezier分割为0到t部分,并使用链接中的算法计算其长度。因为我确信该变量
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
你只需要计算0到1之间的积分,而不是0到t之间的积分。如果你对数学不感兴趣,你可以使用你选择的符号工具箱来做这件事。例如:
计算x=t和x=0的结果并减去它们。oops,我刚刚意识到我不知道该怎么做,因为A、B和C不是数字,它们是两个元组:)但是读起来很有趣,我的意思是因为链接被意外地删除了。。所以我现在不知道。你有没有可能提醒我什么是A B和C?如果链路处于关闭状态。:)从谷歌缓存:
A=4(A\ux^2+A\uy^2)
B=4(A\uxb\ux+A\uyb\y)C=B\ux^2+B\uy^2其中A=P\u0-2P\u1+P\u2
和B=2P\u1-2P\u0
是的,应该是B=B/(2A)
。现在就解决这个问题。您不需要使用De Casteljau的算法来创建一条跨越[0,t]的新曲线。给出了新曲线的闭合形式方程。