Math 如何计算2个单位以外的点的坐标?

Math 如何计算2个单位以外的点的坐标?,math,Math,假设网格中有两块瓷砖 Tile1[x,y] //stationary thing Tile2[x,y] //movable thing 我将它们视为半径为1的圆,并尝试执行碰撞交互 我可以确定距离,因此如果他们接触,但我很难确定其他东西(我不知道我要找的东西的单词)。我想说“找到一个新的点[x,y],它位于Tile1->Tile2线上,但距离Tile1有2.01个单位” 我想我需要找到角度,然后是斜边长度,计算出斜边长度的2%,然后乘以x和y的差值。有更好(或正确)的方法吗?你不需要斜边长度

假设网格中有两块瓷砖

Tile1[x,y] //stationary thing

Tile2[x,y] //movable thing
我将它们视为半径为1的圆,并尝试执行碰撞交互

我可以确定距离,因此如果他们接触,但我很难确定其他东西(我不知道我要找的东西的单词)。我想说“找到一个新的点[x,y],它位于Tile1->Tile2线上,但距离Tile1有2.01个单位”


我想我需要找到角度,然后是斜边长度,计算出斜边长度的2%,然后乘以x和y的差值。有更好(或正确)的方法吗?

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

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

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

第二个共线点(您正在寻找的术语)位于:

lNewPoint.x = Tile1.x - (Tile2.x - Tile1.x) * 2.01 / d;
lNewPoint.y = Tile1.y - (Tile2.y - Tile1.y) * 2.01 / d;
解决方案假定
Tile1
Tile2
不相同。在这种情况下
d==0
,解决方案是一个圆心和半径
Tile1
的圆

其中
d
是从
Tile1
Tile2

第二个共线点(您正在寻找的术语)位于:

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

该解决方案假设
Tile1
Tile2
不相同。在这种情况下
d==0
解决方案是一个圆心和半径
Tile1
的圆
2.01

应该打开应该打开我知道有一个词来形容它!谢谢!我知道有一个词来形容它!谢谢!