gpt4 book ai didi

c++ - 在一定距离后获得 catmull rom 样条曲线的点?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:58 25 4
gpt4 key购买 nike

如果我有一个 Catmull-Rom spline一定长度如何计算它在一定距离处的位置?通常要计算 catmull rom 样条曲线中的点,您输入一个介于 0 和 1 之间的值以通过比例获得其位置,我该如何计算距离?例如,如果我的样条线有 30 个单位长,我怎样才能得到它在距离 8 处的位置?

我问的原因是因为看起来 catmull rom 样条在 [0,1] 域中给出点并不能保证它会给你那个距离的点进入样条,例如如果我输入 0.5 到长度为 30 的 catmull romspline 这并不意味着我会在样条的 15 处获得位置,除非样条本身实际上是一条直线..

最佳答案

通常的方法是存储每个线段的长度,然后通过将 t 增加一个 epsilon 值来找出线段的部分长度,并计算两点之间的线性距离,直到您找到答案。显然,你的 epsilon 越小,你得到的结果就越好,但它给出的结果出奇的好。我使用这种方法沿着 catmul-rom 以恒定速度移动,你看不到它加速和减速......它确实以恒定速度移动。显然,根据 segmentation 的紧密程度,您的 epsilon 值需要更改,但一般来说,您可以选择一个“足够好”的 epsilon,一切都会好起来的。

以非迭代方式查找答案的成本高得令人难以置信(我前段时间看到了推导,但它并不漂亮 ;))。你必须有一个很小的 ​​epsilon 值才能获得更差的性能......

关于c++ - 在一定距离后获得 catmull rom 样条曲线的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1515828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com