我需要一個返回點數組的函數,它必須最大化矩形中的點數。該功能必須支持100毫米的間距(在任何方向),但它可以偏離x(整數)來創建幾乎適合的點。我們也想盡量減少偏差。在給定的矩形中最大化點 - (int spacing,int deviation)
在給定的區域內有形狀,點不能落入其中。我有一個工作函數boolean isCollide(Point point)。
這實際上是一個CAD問題,邏輯將應用於Catia v5。我希望獲得sudo代碼。矩形大小是不變的,並且用PLATEXMAX和PLATEYMAX來確定尺寸。
我的解決方案必須是詳盡的,我所有的嘗試都只提供啓發式解決方案。算法效率不是問題。任何人都面臨類似的問題,或有任何建議?
我創建了一個插圖來顯示我的問題的視覺表示。 http://tinypic.com/r/vebtj5/8
編輯:
點[] tempArray =新點[]
對於i = 0至PLATEXMX {
for j=0 to PLATEYMAX{
Point test = new Point(i,j)
Boolean found = false
foreach tpoint in tempArray{
if !found{
for n=0 to deviation{
if tpoint.distanceTo(test) < (100 + n){
if !(isCollide(test){
tempArray.add(test)
break
} else{
//check points offset from this point
//check every offset point 360deg around test
//increase checking radius to max deviation
}
}
}
}
你是什麼意思100毫米的間距?你有什麼試過?我想你也會找到它的僞碼! – Luke
另外,你期望有多少點? – Luke
我期望在10-40點之間。 – Lloyd