我有一个随机定位线元素的程序。但是,我希望这些线不要相互重叠或交叉(线根本不接触)。
查看如何执行此操作的示例通常使用循环来循环遍历行元素的数量并生成坐标,然后在该循环内的另一个循环来检查坐标是否处于最小距离。
根据我迄今为止的经验,使用循环确实对程序征税,并且在显示刺激时,框架往往会下降。
我这样做的另一个想法是生成一个坐标列表,然后计算每个坐标的距离。我到目前为止的代码如下:
$(document).ready(function(){
$("button").click(function(){
$("p").css({"background-color": "yellow", "font-size": "200%"});
});
});
我不太确定如何从这里开始 - 理想情况下我希望程序保持最小距离的坐标比设置import numpy as np
import scipy.spatial.distance
import random
length_line=12
nLines = 1000 #the number of line elements that I want
#Random coordinates for the lines. 500X500 pixels centred around 0
xys = np.random.random([nEls,2])*500-250
#Calculating the distance of the centre of the lines from each other
dist = scipy.spatial.distance.pdist(xys)
minDist = (length_line/2)+2 #the minimum distance that should not cause overlap
print sys
更多,并且可能取代不是坐标的坐标别的东西。
这可能吗?谢谢。
答案 0 :(得分:0)
如果我的理解是正确的,您希望生成行的段,它们彼此不会部分重叠? (但他们可以交叉,对吧?)。在以下建议中,区段和线之间的区别是必不可少的。
方法是简化问题:通过将段扩展为行(无限长度)。检查两条线不重叠是微不足道的(基本上一条线是第一度函数,用f(0)和渐变表示)。
在这里,我为二维空间做出推理,但它可以扩展为三维空间。
两个避免接近重叠,你必须在某种程度上舍入f(0)和渐变(例如小数点后的一位或两位数)。这应该比计算距离更快。
每次生成新细分时,您都会: