Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/math/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 计算二次贝塞尔曲线段的长度_Math_Bezier - Fatal编程技术网

Math 计算二次贝塞尔曲线段的长度

Math 计算二次贝塞尔曲线段的长度,math,bezier,Math,Bezier,我使用此算法计算二次贝塞尔曲线的长度: 然而,我想做的是计算贝塞尔曲线从0到t的长度,其中0

我使用此算法计算二次贝塞尔曲线的长度:

然而,我想做的是计算贝塞尔曲线从0到t的长度,其中0 有没有办法修改上面链接中使用的公式,以获得贝塞尔曲线第一段的长度

只是澄清一下,我不是在寻找q(0)和q(t)之间的距离,而是这些点之间的弧的长度


(我不希望使用自适应细分来近似长度)

虽然可能存在封闭形式的表达式,但我会这样做:


用于将bezier分割为0到t部分,并使用链接中的算法计算其长度。

因为我确信该变量
t
案例存在类似形式的解决方案-我扩展了链接中给出的解决方案

从链接中的方程式开始:

我们可以这样写

其中
b=b/(2A)
c=c/A

然后变换
u=t+b
我们得到

其中
k=c-b^2

现在我们可以使用链接中的积分恒等式来获得:

因此,总而言之,所需的步骤是:

  • 按照原始方程式计算A、B、C
  • 计算
    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]的新曲线。给出了新曲线的闭合形式方程。