给出正确定义的点列表,以及行列表:
Pandas能否找到所有加入任何点对的线,并且在没有迭代的情况下不与任何给定的线相交?
我正在接触到解决方案,正如您在图像中看到的那样,但我必须在此过程中进行迭代,并且该迭代会使一切变得非常缓慢。
在图像中,点列表是绘制的颜色点,线列表将是烛台。期望的结果是黑线。
虽然问题的目标是理论解决方案,或者概念确认是否可行或者除了迭代之外没有其他方法,这里是我目前正在使用的代码,如果有帮助的话: http://pastebin.com/4DiKVy26
答案 0 :(得分:1)
我不知道熊猫,但我可以看到你想要做什么,是的,它可以更快地完成。我打算将黑线射线称为我想希望变得清晰的原因;在您的算法中,使用m点和n行,您将找到所有m(m-1)/ 2条光线,然后进行2n次比较以过滤它们:m *(m-1)* n =>输入大小的立方。有一种方法可以在输入中使这个二次方。
您所描述的内容可以通过 raycasting 的形式解决(虽然更简单,因为它在2d中):将点视为灯光;如果目标不在线的阴影中,源点只能将光线投射到目标点。所以我们从一个点开始,然后向右移动你可能会照亮的线和点列表。当我们经过线条时,会有一个不断扩大的阴影区域;但是在任何x值,我们只需要知道阴影边缘的2个渐变,就可以知道y值是否在阴影中。当我们向右走每条线时,更新阴影的渐变。当我们通过每个点时,我们检查它是否位于阴影之外;如果是的话,我们有一条光线。对每个点重复此过程,您就完成了。这大致是m *(m-1)/ 2 + m * n计算,可以更好地扩展。