[英]Generate co-ordinates that do not overlap
我有一个随机放置线元素的程序。 但是,我希望这些线条不要重叠或交叉(线条完全不接触)。
查找有关如何执行此操作的示例,通常使用一个循环遍历多个线元素并生成一个坐标,然后在该循环内使用另一个循环检查该坐标是否在最小距离处。
从到目前为止的经验来看,使用循环确实会使程序费劲,并且在显示刺激时,帧会下降。
我这样做的另一个想法是生成一个坐标列表,然后计算每个坐标的距离。 到目前为止,我拥有的代码如下:
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
我不太确定如何从这里开始-理想情况下,我希望程序保持最小距离minDist
设置的minDist
的坐标,并可能用其他东西代替没有坐标。
这可能吗? 谢谢。
如果我的理解是正确的,你想生成线的部分不彼此部分重叠? (但是他们可以交叉,对吗?)。 在以下建议中,线段和线之间的区别至关重要。
该方法是通过简化问题:通过将线段扩展为线 (无限长)来实现的 。 检验两条线不重叠是微不足道的(基本上,一条线是一阶函数,用f(0)和一个梯度表示)。
在这里,我对二维空间进行了推理,但是可以将其扩展到三维空间。
两个应避免接近的重叠,您必须以某种方式将f(0)和渐变四舍五入 (例如,小数点后的一位或两位数)。 那应该比计算距离更快。
每次生成新细分时,您:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.