如何找出2个单位之外的点的坐标?

时间:2012-02-22 14:43:07

标签: math

假设我在网格中有2个图块。

Tile1[x,y] //stationary thing

Tile2[x,y] //movable thing

我将它们视为半径为1的圆圈并尝试进行碰撞交互。

我可以确定距离,因此如果他们接触了,但是在确定别的东西时我很难过(我不知道我正在寻找的东西的话)。我希望能够说“找到位于Tile1-> Tile2线上的新点[x,y],但距离Tile1只有2.01个单位”。

我想我需要找到角度,然后是斜边长度,并假设斜纹长度百分比为2,然后将该数字乘以x和y差。是否有更好(或更正确)的方法呢?

2 个答案:

答案 0 :(得分:2)

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

d是从Tile1Tile2

的距离

第二个共线(您正在寻找的术语)点可在以下位置找到:

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,解决方案是一个圆圈,其Tile1位于其中心,半径为2.01

答案 1 :(得分:1)

你不需要斜边长度;一旦你有角度(通过atan2(),你可以将其插入sin()cos()以获得单位距离的偏移量,然后将每个乘以2.01。