我正在编写一个程序来解决几何问题。
我的算法不能很好地处理共线点。
我可以对这些点进行任何转换以消除共线性吗?
然后我认为噪音实际上可能是解决方案。正如我在上面的评论中所写
消除共线性的一种方法是简单地向每个点添加一些噪声,即 (x, y, z) ↦ (x + 0.01*(random() - 0.5), y + 0.01*(random() - 0.5), z + 0.01(random() - 0.5)) 如果 random() 返回 [0, 1[ 中的随机实数。
如果您正在处理大量点集,则向每个集添加噪声可能会在一个集中解决问题,但在另一个集中创建它。
如果是这种情况,您可以在应用噪声之前测试共线性。
共线性条件为:
x1 y1 1
det x2 y2 1 = 0
x3 y3 1