找到XYZ之间的最小距离
Finding the smallest distance between xyz
嗨,好吧,这样。我们有12名球员我想做的就是找到最接近的球员。
我已经写了一些代码;我的尝试的两个版本(相信我的更多,现在可以写一本圣经)
/*int client::closestEnemy()
{
for(u32 i = 0; i<12; i++)
{
DbgPrint("i: %in", i);
u32 index = 0;
if(!p[i].exist() || !p[i].alive() || p[i].team() == 3 || i == s.index)
continue;
for(u32 o = 0; o<12; o++)
if(vec.distance(*pos(), *p[i].pos()) <= vec.distance(*pos(), *p[o].pos()) || vec.distance(*pos(), *p[i].pos()) == vec.distance(*pos(), *p[o].pos()))
index++;
DbgPrint("PLAYER %s INDEX = %in", p[i].readName(), index);
if(index>10)
return i;
index = 0;
}
return -1;
}*/
int client::closestEnemy()
{
float distacnes[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
u32 index = 0;
for(u32 i = 0; i<12; i++)
if(p[i].exist() || p[i].alive() || p[i].team() != 3 || i != s.index)
distacnes[i] = vec.distance(*pos(), *p[i].pos());
else
continue;
for(u32 i = 0; i<12; i++)
if(distacnes[i]<distacnes[i+1])
index++;
DbgPrint("Score = %in", index);
if(index>11)
return index;
return -1;
}
我正在做的只是将索引增加1时,当其他客户距离比我的距离更大时。
现在,第一个是最好的选择,但有时不会产生足够高的索引,这使得零有意义,因为至少一个客户必须具有较小的距离。
首先,我想一些凹痕会有所帮助。然后,无需存储所有距离。您可以跟踪到目前为止遇到的最小距离,因此:
int client::closestEnemy()
{
int index = -1;
float minDistance;
for(u32 i = 0; i<12; i++) {
if(p[i].exist() || p[i].alive() || p[i].team() != 3 || i != s.index) {
float distance = vec.distance(*pos(), *p[i].pos());
if (index == -1 || distance < minDistance) {
index = i;
minDistance = distance;
}
}
}
return index;
}
相关文章:
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 计算所有对之间的曼哈顿距离
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- Levenshtein 两个文件的距离花费了太多时间
- _T("xyz")是什么意思?
- 两个有符号数字之间的距离
- 计算车辆之间的距离并设置速度,使距离保持不变,例如 5 米
- 计算两个迭代器之间的距离时"Vector Iterators Incompatible"
- 浮动距离为80位长双精度
- CGAL:无法打开 .xyz 文件
- 查找彼此之间具有不同最小距离的随机数
- 相同字符之间的最小距离
- 如何根据距离矩阵确定节点?
- 如何排列二进制字符串以最小化它们之间的距离
- 曼哈顿距离比曼哈顿距离+线性冲突效果更好
- 使用C++中的链表对与原点的距离、x 和 y 坐标进行排序
- 应该如何编写用于计算最近点距离的C++函数?
- XYZ两个GLM :: MAT4矩阵的距离点对点
- 找到XYZ之间的最小距离