如何在三维点中找出一条直线?

3
这个更容易通过图片来解释。我有这些绿色的点:

Points (no line)

我希望在这条红线上获得一些要点:

Points (with line)

这是俯视图,但我对每个点都有完整的XYZ坐标。我还知道哪个顶点连接到哪个其他顶点。
似乎可以取这些绿色边缘的中点并通过它们绘制一条线,但您可以看到在接近末端时这样做不太可行。
是否有算法可以用来找到通过这些3D点的最佳拟合线?
如果我使用Three.js,会有什么区别吗?

这里有一些线索:https://dev59.com/VknSa4cB1Zd3GeqPPJbS - Mouloud85
1个回答

1
这个任务等同于噪声抑制。最简单的算法(数组末尾不会被过滤):
double array[];
int count, depth;
// 1 < depth < count

for (int i = 0; i < count - depth; i++)
{
    double sum = 0;
    for (int j = 0; j < depth; j++)
    {
        sum += array[i + j];
    }
    array[i] = sum / depth;
}

您可以通过谷歌搜索中值滤波和噪声抑制来获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接