从点找到最近的圆

时间:2011-09-07 08:08:03

标签: algorithm math language-agnostic artificial-intelligence distance

我正在研究我的世界查询方法,以便从一个点找到最接近的实体(用于AI定位)。我的实体被界限圈所覆盖。

我有这个:

var distanceX : Number = boundingCircle.position.x - startPosition.x;
var distanceY : Number = boundingCircle.position.y - startPosition.y;

var distance : Number = (distanceX * distanceX + distanceY * distanceY);

if (distance < lastDistance)
{
    // set this circle as the closest...
}

虽然不考虑边界圆的半径,但这会给我不准确的结果。我可以直接从距离中减去半径以获得到边界圆边缘的距离,还是需要使用Math.sqrt计算更准确的距离?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

我可以直接从距离中减去半径以获得到边界圆边缘的实际距离

是的,这应该是完全没问题的。

如果到敌人的距离是Δ,并且他的边界圆半径是 r ,那么到他的边界圆的距离是Δ- r

答案 1 :(得分:0)

DistanceToCenter - radius == DistanceToCircle

DistanceToCenter^2 - radius^2 != DistanceToCircle^2

所以你不会通过减去平方值得到距离......