[英]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.