样条路径 - 防止过冲

时间:2017-12-17 03:27:20

标签: c# unity3d unity5 interpolation spline

我有一个跟随鼠标光标的NavAgent。线渲染器将导航路径从固定的起点绘制到光标,并通过一些平滑来实现 - 通过我有限的数学大脑 - 我理解为一个立方隐士样条,改编自这个伟大的Wikibook页面:

$ ./bin/sortemp
Allan Smith    3
Joe T. Sloth   1
Mary L. Lamb   2
Nancy R. Drew  4

有时候,这条线“超过”一个最佳的曲线位置,并且自身翻倍:

enter image description here enter image description here

我希望这条线能够在这些角落顺利进行。

通过从各种来源读取样条,我收集到的这种行为与正在计算的切线的值(在这种情况下为变量M0和M1)相关。我调整了这些没有成功;较大的值会导致线偏离路径点(并增加过冲的大小),较小的值会导致“结”而不是循环,因为结果位置非常接近。

我尝试过滤出一些极端点,希望这可能会通过添加一些逻辑来说明下一个点的角度是否高于某个阈值而不是将其添加到线条渲染器位置,从而导致线条更平滑但是这会产生一些奇怪的行为。我已经尝试过滤掉非常接近的点,再次导致一些奇怪的结果。

对于数学问题来说这可能很简单,但我完全没有想法。我怎样才能避免线路重新加倍。我阅读了Monotone cubic interpolation这似乎很有希望,但坦率地说,这是我的想法。上面的计算可以调整为这样做,还是我需要寻找其他方法?

0 个答案:

没有答案