2015-11-13 97 views
1

我與SMFL/C++的工作做一個2D等距遊戲引擎之間不必要的空間,我得到這個當我做等距算了一筆賬:等距座標,菱形,瓷磚

enter image description here

這裏我的公式我在2D引擎來計算等距座標: 對於IJ座標我有:

x = (I - J) * (tileWidth/2); 
y = (J + I) * (tileHeight/2); 

//Totally working with classics tiles 

編輯:我的問題是由於我的瓷磚形至極是立方體,但我不知道如何解決它。我真的不得不做一些複雜的數學來處理3D objetcs(我寧願避免這種情況),或者我可以稍微改變一下公式?

編輯2:解決方法:int isoY = (x + y) * (height/4);

回答

1

首先,如果它是一個2D引擎中我不知道爲什麼有3個維度,爲何及如何在您的發動機使用ž。

假設您想要在正交投影中給定座標(I,J)的瓦片數目的等軸投影((x,y)中的瓦片計劃)。 在這種情況下,您給出的公式x和y對我來說很好給定了tileWidth和tileHeight是正確的(即等軸投影中的值)。你不應該使用任何z。

在另一方面,如果你的問題是獲得(X,Y)像素爲單位的(X,Y,Z)的3D對象的座標笛卡爾座標我建議你閱讀本:Computing the Pixel Coordinates of a 3D Point

如果我假設錯我會編輯或刪除。

+0

這是等軸測投影,你說得對,現在我只用z作爲圖層的位置,我的不好。 但我仍然想知道爲什麼我的地圖不是一個完美的diamong:/ – Madz

+0

我編輯了我的帖子。我不明白爲什麼它不工作,因爲我在互聯網上到處讀到這個公式,並且它適用於所有人... 而且錯誤不是關於我如何編碼,因爲公式是完全寫(writed?)像this:/ 'int isoX =(x-y)*(width/2); int isoY =(y + x)*(height/2);' – Madz

+0

寬度和高度的值是多少?因爲它應該是等軸測投影中的值。 (我以這種方式編輯)。 你如何繪製你的瓷磚? – Rbtnk