gpt4 book ai didi

java - 从 ArrayList 中查找最近的 3 个点

转载 作者:行者123 更新时间:2023-12-01 18:29:43 26 4
gpt4 key购买 nike

我有一个ArrayList<Vector2> map其中包含各种二维坐标。通常少于 10 个。

给定 Vector2对象作为参数,找到三个最接近的最好方法是什么 Vector2位于 ArrayList并将它们插入 Vector2[] closest ? Vector2[] 元素的顺序并不重要。

PS:上面提到的Vector2类是AndEngine Box2D扩展中使用的类。如果不熟悉它,可以将其视为一对 float 。方便的是,它有 someCoordinate.dst(someOtherCoordinate)以获得它们之间的距离。

最佳答案

如果您已经拥有 dst()函数获取两个之间的距离 Vector2对象,为什么你不能做一个 for循环获取到 ArrayList 中每个其他对象的距离?

您可以创建更复杂的结构:将 Vector2 对象除以假想网格中的位置,这样您首先可以找到壁橱区域并仅检查该区域中的那些 Vector2 对象。但老实说,如果您只管理 10 个对象,那么就不值得付出努力。你不会赢得任何表演,你必须创造for无论如何循环。

循环示例(如评论中所要求):

我假设我们已经有 Vector2 myVeckyArrayList<Vector2> map 。我可能会犯一些错误,因为我没有编译这个。但它应该足够好,可以接受。

Vector2 closestVecky = null;
float shortestDistance = -1;
for (Vector2 vecky : map){
float veckyDist = vecky.dst();
if (closestVecky==null || veckyDist < shortestDistance){
shortestDistance = veckyDist;
closestVecky = vecky;
}
}
//when you reach here, you will have your `closestVecky` and `shortestDistance`

关于java - 从 ArrayList 中查找最近的 3 个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com