2016-02-06 24 views
-4

我的作業是製作一個繪製2個方塊的程序,並且確定它們是否相互交叉,接觸,相互之間還是兩者都不相交。兩個方塊的關係

我使用兩點系統:第一個是左上角,另一個是右下角。然後,我畫他們之間的界限。

你能告訴我一個簡單的算法,它決定了這四種情況中的哪一種發生?

隧道:

┌────┐ 
│ ┌──────────┐ 
│ │ │  │ 
└──│─┘  │ 
    └──────────┘ 

感動:

┌────┐ 
│ │──────────┐ 
│ │   │ 
└────┘   │ 
     └──────────┘ 

在彼此內部的:

┌──────────┐ 
    │ ┌────┐ │ 
    │ └────┘ │ 
    └──────────┘ 

既不:

┌────┐ 
│ │ ┌──────────┐ 
│ │ │   │ 
└────┘ │   │ 
     └──────────┘ 
+0

不要這麼懶惰,至少看看C#文檔,你有一個很好的類名爲「矩形」,也許它可以給你一些幫助? – Gusman

+0

您可以使用Google找到簡單的邊界框碰撞檢測算法,但在複製/粘貼解決方案之前,您應該花一點時間思考它,練習的要點是考慮一個似乎有明顯問題的問題解決方案,您可能很難從算法上描述袖口。 –

+2

解決一個更容易的問題。下降兩個維度。你能確定兩點是否相等?如果你不能解決這個問題,你不能解決更難的問題。你能確定兩條線是否重疊?如果你不能解決這個問題,那麼你無法解決更難的問題。首先解決這些問題,然後解決較難的問題就容易多了。 –

回答

2

好吧,我不會爲你寫任何代碼,因爲它不是一個真正的語言特定問題,因爲這是你要做的。但這裏有一些指針:

  • 你必須在X軸上兩個區間和兩個Y軸
  • 這是衆所周知如何確定兩個區間重疊。您還可以確定一個間隔是否完全位於另一個間隔內。
  • 對於正方形重疊,有一個簡單的條件,你需要測試。想想它是什麼。
  • 加成:你也可以計算重疊區域。