2009-09-06 92 views
0

我知道這是更多的高中數學(WOW了,因爲我是有很長一段時間),但我想以編程方式解決這個問題,所以我伸手計算器矢量數學和矩形

的集體知識鑑於此佈局:

alt text

中點是我的參考點與陣列中的我的所有其他點的矢量點(P)

我可以得到這種狀態下與具有淺藍色的代碼區域通過將其分成四個象限,並進行不良氣泡排序以在每個象限中查找最大(y)或最小(x)值。

我需要找到只象限是外邊框完全打紅沒有空格。例如,左下角和右上角沒有任何空白點擊淺藍色矩形。

我相信我的術語是所有在這裏下車和IM不找任何特定的代碼,但如果有人能指出我的這個問題,還是什麼我已經有下一步更優化的解決方案。

謝謝

+0

我不確定我完全理解你的問題......如果你總是有相同的佈局,似乎你可以說,「好吧,右上角和左下角總是相鄰的紅色,而不是白色空間「,並稱之爲一天。然而,這似乎太簡單了,所以除此之外肯定還有更多。你能否詳細說明你有哪些信息? – 2009-09-06 19:22:16

+0

紅色矩形可以是任何大小和任何地方。填滿整個象限/進入它們之間。基於給定的參考點,在這個例子中,我需要建立內部矩形(在本例中由軸分割),並找出這些矩形中的哪一個在所有的sies上對紅色或藍色完全碰撞。任何只觸摸藍色或紅色(觸摸空白區域)的東西都需要掉落,剩下的藍色區域會變成紅色。我知道每個紅色矩形的4個矢量點。 – Armychimp 2009-09-06 19:56:22

+0

我的妻子給出的很好的比喻是藍色是4個泳池,我需要找到泄漏(左上角和右下角)軸不能泄漏的泳池,所以我只需要檢查兩側。 – Armychimp 2009-09-06 19:56:56

回答

0

我可能先做一些BFI解決方案,那麼也許看看概括它,或至少將其降低到一臺驅動器環路。

所以,如果它也正是這些形狀,而不是一個通用的解決方案,我想你應該進行排序是這樣的:

  1. 推導藍色矩形的座標。我懷疑有一件事讓你感到困惑,那就是你有藍色矩形的每個單獨的x和y,但是你不能輕易地循環它們。

  2. 導出每個矩形邊緣中點的座標。你將需要這個,因爲你關心象限。一旦完成1,這將是微不足道的。

  3. 爲每個1/2矩形邊緣寫入不同的代碼。毫無疑問,更聰明的方式,但這將得到有效的代碼。

  4. 現在,如果你在意它更優雅。我敢打賭,你可以將規則減少到8行 表,其中包含像1,-1或類似的東西。

0

首先,由於不相交,因此無法用單個矢量定義紅色區域。您需要與遠處紅色區域的數量相同的矢量數。

其次,我們認爲不同的紅色數字既不相交也不共享邊界​​?在接下來的條款中我會。

第三,下點2假設,象限將所有紅色外側當且僅當存在一個連續的紅色數字都相交其軸線(即射線)。爲了確定所有象限,你只應該按照給定的順序遍歷所有(P)點。這需要線性時間並解決問題。