假设一个对象“生活”在二维空间中,并且当前位于(0;0)。
对象被两条主要限制线x=0和y=0包围,还被一组附加线ax+by=c包围(三元组a、b、c包含在一些n-by-3数组中)。
有没有一个简单的算法来删除多余的线我在MatLab中有我的数据,它有一堆奇特的本地函数,但是我仍然不确定从哪里开始。
例如,下面的所有行ax+by=c都用蓝色显示,多余的行用红色标记。
.
最佳答案
我的意见是:对于每个非主线a x+b y=c,设a'=a/c和b'=b/c,这样就可以写出a'x+b'y=1的线方程。(C=0需要一个特殊情况,我将忽略它。)
现在计算成对的二维凸壳(A',B')对此,MATLAB已经convhull
;将simplify
设置为true保留与船体右上角的点相对应的线。(逆时针方向,这个季度的第一个点是最右边的,在平局的情况下选择最上面的点。最后一个是最上面的,在打领带时选择最右边的。)
关于algorithm - 如何在飞机上找到多余的线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16265352/