c# - 从点数组平滑二维线

标签 c#

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

不幸的是,这会产生非常参差不齐的外观,并且根据用户移动输入的速度相对于输入事件触发的速度,情况会变得更糟。

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

我知道这是一个众所周知的问题,只是没有运气形成搜索查询来找到我要找的东西。

谢谢!

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

谢谢!

最佳答案

float数组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;

        }
    }

关于c# - 从点数组平滑二维线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811761/

相关文章:

C# 通用方法放在哪里?

c# - 二维图案搜索

c# - 数据库不创建记录

c# - C# 标签的子文本

C#匹配两个文本文件,大小写敏感问题

c# - SQL Server 上的编码问题

c# - 覆盖派生类中的默认值 (c#)

c# - 使用 Rx 执行延迟采样的最佳方法是什么?

c# - 要列出的数据表<object>

c# - 如何使用 MVVM 更新 ContextMenu 的 ItemSource