当用户绘图时,每次输入事件触发时我都会捕获他们输入的位置,然后在每个点之间绘制直线。
不幸的是,这会产生非常锯齿状的外观,并且情况会变得更糟,具体取决于用户移动输入的速度相对于输入事件触发的速度。
我想要的是一个函数,它接受一个点数组并返回一个已平滑的点数组,既可以填充点之间的任何大间隙,也可以删除锯齿状边缘并用平滑曲线替换它们。
我知道这是一个众所周知的问题,只是没有运气形成搜索查询来找到我正在寻找的内容。
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(使用前将#替换为@)