2012-01-22 41 views
3

我正在做一個簡單的模擬程序,我遇到了一些問題......模擬世界的居民有4隻眼睛:左,上,右和下。當時只有一隻眼睛可以活動,並且該眼睛需要指向最近物體的方向(基本上告訴居民是離開,向上,向右或向下的最近物體)。每個眼睛在座標系中都有象限,它從主座標系旋轉45度。所有的數字(位置,座標)實際上都與不旋轉的座標系有關,我只是使用旋轉後的座標系來解釋,它實際上並不存在。給定一個對象的座標,如何確定旋轉座標系的哪個象限?

這裏有一張圖片,將更好地解釋它: enter image description here 那麼,最後一個問題是:如何找出這些象限是對象?給定對象在非旋轉座標系中的位置。

附加信息:

  • 有關對象的位置被存儲爲4數矢量(矩形),作爲[X,Y,寬度,高度]的全部信息
  • 這是當然的2D

回答

4

Xÿ成爲對象的座標轉換,以使非旋轉座標系中的眼睛謊言s在原點。您可以利用兩個線性函數的基本屬性,它們的圖表將您的模擬空間劃分爲您繪製的四個象限(「左」,「上」,「右」和「下」)。

從左下角到右上角的傾斜線由給出y = x。這意味着(假設向上增長,並且x向右增長)位於「向下」和「向右」象限中的點具有滿足和< x的座標。類似地,「上」和「左」象限中的點具有滿足y> x的座標。

爲了區分「向下」和「向右」以及「向上」和「向左」象限,我們可以使用公式爲y = -x的另一行(從左上到右下)。這次我們看到屬於「左」和「下」象限的點具有座標服從和< -x。類似地,屬於「右」和「上」象限的點具有滿足y> -x的座標。

結合這些條件,我們可以看到,與座標對象Xÿ在於:

  • 「左」 象限IFF Y> Xÿ< -x
  • 「向下」象限iff y < x and y < -x
  • 「右」 象限IFF ý< XY> -x
  • 「向上」 象限IFF Y> X和Y> -x

這些條件假定所有四個象限相遇的點是用於表示的座標系的原點xy。在使用這些條件之前,您應該使用眼睛的已知位置進行必要的翻譯。

請注意,如果您想執行相對於幾個不同位置的眼睛的過程,則每次都必須使用不同的翻譯。這種不希望的結果是,你可能會從兩個不同的眼睛到達同一物體的不同象限。這是問題的後果,與您解決問題的方式無關。

您還需要對正好位於象限邊界上的物體進行分類。選擇將要求你改變上面一些嚴格的不平等,以便它們允許平等。

+0

太棒了!眼睛沒有自己的位置,只關心居民的位置。 – corazza

+0

是的,這個作品很棒!謝謝! – corazza

相關問題