2016-04-09 66 views
0

我目前正在爲android創建一個應用程序,用戶可以觸摸地圖上的特定位置並獲取有關該位置的信息。地圖是一個視頻遊戲地圖的自上而下的視圖,但這並不重要。基本上,我知道左上角和右下角的視頻遊戲座標,我需要知道用戶觸摸的地方的視頻遊戲座標。Java:當已知2個座標對時,將座標從一個系統轉換爲另一個系統

如果用戶在顯示的地圖上觸及例如點(500,500),我想要在此位置處的視頻遊戲地圖的座標。

這裏的問題是,我用於地圖的API給出了座標系中的觸摸座標,從左上角開始,(0,0)和增加數字到右下角。視頻遊戲使用更正常的座標系,數字越往上(y)和右(x)越小,數字越往下(y)和左(x)越少。

你知道我怎樣將座標從地圖API轉換到視頻遊戲座標嗎?

+0

儘管此問題與代碼相關(即使您未顯示任何代碼),但您可能會在[Mathematica](http://mathematica.stackexchange.com/)上得到更清晰的答案。 – Tigger

回答

0

讓我們在你的榜樣工作:

我假設你使用的符號(Y,X)在你的解釋,我會使用這個答案是相同的(我相信你應該。使用(x,y))

左上角的VGC(視頻遊戲座標)是(2403,1212),右下角的VGC是(-133084)。因此,在當前情況下,VGC中有2403 - ( - 13)= 2416個可能的y座標和3084-1212 = 1872個可能的x座標。

對於Android座標系,有1000個可能的x和1000個可能的y座標。

如果我們試圖映射那些:2416/1000 = 2.416和1872/1000 = 1.872。所以如果Android y座標變化1,VGC y座標將會改變2.416。

假設用戶在Android座標系中觸摸了(100,150)。這意味着遠離左上角100和150倍。然後你將它們轉換成VGC變化,(100 * 2.416,150 * 1.872)大致等於(241,281)。

現在如果左上角的座標是(2403,1212),VGC座標中的觸地將是(2403-241,1212 + 281)。

在代碼中創建左上角和右下角的VGC變量,並使用相同的邏輯進行計算。

相關問題