在下面的代码中,我使用scipy.interpolate.splprep例程使用B样条插值一组点.很明显,左边这条曲线在第6点附近是很“锋利”的:它的曲率太大了(见右图)。

我希望曲率被限制在<10。我可以通过增加平滑因子s来改进这一点,例如将其设置为s=8:

满足我的曲率界限。但是,我目前必须通过反复试验找到这个平滑因子s (而且,较高的s并不一定意味着较低的曲率)。无论如何,我能解释一下曲率吗?我知道这在理论上是可能的,基于这个问题。
发布于 2022-01-14 08:35:10
这只是一个建议,但是有一件事是可以替代故意平滑的,那就是引入额外的(假的)数据点,通过这些数据点曲线应该通过。
插入这些点的条件是检测在任意两个连续(实)点之间是否存在急剧的方向反转。这可以通过比较包含任意两个连续节点的向量方向之间的角度来实现,如果这个角度低于一定的阈值,则该点被认为是一个“反转”点。
一旦识别出这样的反转点,您就可以引入P(假)点,其中整数P取决于您希望这些转换是多么的平滑。例如,如果你不介意U形,那么你可以在每个反转点中引入一个假点,在与反转方向正交的方向上稍微偏移。
发布于 2022-01-14 09:38:49
一种已知的方法是使用杜宾斯路径插值点。它在满足最小曲率的同时,提供了任意两条曲线之间的最短曲线。本文描述了一个叫做马尔可夫-杜宾斯插值的实现。

但是,我不推荐这种方法,因为曲线不是光滑的(由于固定的曲率水平,加速度存在不连续性)。
发布于 2022-01-06 06:45:55
现在不行,至少现在不行。可悲的是。
https://stackoverflow.com/questions/70593382
复制相似问题