从点数组平滑二维线

2023-12-03

当用户绘图时,每次输入事件触发时我都会捕获他们输入的位置,然后在每个点之间绘制直线。

不幸的是,这会产生非常锯齿状的外观,并且情况会变得更糟,具体取决于用户移动输入的速度相对于输入事件触发的速度。

我想要的是一个函数,它接受一个点数组并返回一个已平滑的点数组,既可以填充点之间的任何大间隙,也可以删除锯齿状边缘并用平滑曲线替换它们。

我知道这是一个众所周知的问题,只是没有运气形成搜索查询来找到我正在寻找的内容。

Thanks!

如果该函数已经用 C# 编写,则加分:)

Thanks!


C# 浮点数组的扩展方法(sample)

  public static NoiseReduction(this float[] src, int severity = 1)
    {
        for (int i = 1; i < src.Length; i++)
        {
            //---------------------------------------------------------------avg
            var start = (i - severity > 0 ? i - severity : 0);
            var end = (i + severity < src.Length ? i + severity : src.Length);

            float sum = 0;

            for (int j = start; j < end; j++)
            {
                sum += src[j];
            }

            var avg = sum / (end - start);
            //---------------------------------------------------------------
            src[i] = avg;

        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从点数组平滑二维线 的相关文章

随机推荐