2012-02-22 33 views
0

說我在網格中有2個瓷磚。如何找出距離2個單位的座標?

Tile1[x,y] //stationary thing 

Tile2[x,y] //movable thing 

我把它們當作圓,每個半徑都是1,並試圖執行碰撞交互。

我可以確定距離,因此,如果他們觸摸,但難以確定別的東西(我不知道我尋找的東西的話)。我希望能夠說「找到一個新的點[x,y],它位於Tile1-> Tile2行上,但距離Tile1只有2.01個單位」。

我想我需要找到角度,然後是斜邊長度,然後計算斜邊長度爲2的長度,然後乘以x和y的差值。有沒有更好的(或正確的)方法來做到這一點?

+0

應該在http://math.stackexchange.com/ – Matthias 2012-02-22 14:44:11

回答

2
lNewPoint.x = Tile1.x + (Tile2.x - Tile1.x) * 2.01/d; 
lNewPoint.y = Tile1.y + (Tile2.y - Tile1.y) * 2.01/d; 

哪裏dTile1Tile2

的距離

第二個共線(術語你要找的)點,可以發現:

lNewPoint.x = Tile1.x - (Tile2.x - Tile1.x) * 2.01/d; 
lNewPoint.y = Tile1.y - (Tile2.y - Tile1.y) * 2.01/d; 

的解決方案假定Tile1Tile2不完全相同。在這種情況下,d == 0和解決方案是在其中心和半徑2.01Tile1的圓圈。

+0

我知道有一個詞它!謝謝! – jason 2012-02-22 15:05:26

1

你不需要斜邊長度;一旦你有角度(通過atan2(),你可以把它插入到sin()cos()爲單位距離得到補償,然後由2.01乘以每個。

相關問題