//model类
public class ImgRecognition{
public string name;//name 可能为三种 bird 、car 、person
public int x;
public int y;
}
List<ImgRecognition> list = new List<ImgRecognition> ();
public bool HaveBirdAndPerson(List<ImgRecognition> list ){
//人、车距离小于200的返回true,
// 换句话说,只要有1辆车200范围内有人就返回true
//不想用双重循环,有点笨了,还有啥奇怪的方法吗?运行速度要快点
}
按上面的,如果加上linq。。。
写出来看看噢大佬
@andlp: 没有,我觉得楼上可能理解错了,你是从一个列表里找出两两距离超过200的,而他其实是找列表里某一个,我觉得这种东西应该有第三方库能解决,自己写的话,其实应该也是循环一遍列表,列表里用linq,linq最多也就代替一次循环。。。
數學不好不會算距離
但循環一次list就可以了吧
這樣?
public bool HaveBirdAndPerson(List<ImgRecognition> list)
{
var cars = list.Where(l => l.name == "car").ToList();
var others = list.Where(l => l.name != "car").ToList();
if (cars.Any() && others.Any())
{
foreach (var c in cars)
{
foreach (var o in others)
{
if (Math.Pow(Math.Pow(c.x - o.x, 2) + Math.Pow(c.y - o.y, 2), 0.5) >= 200)
{
return true;
}
}
}
}
return false;
}
修改了
算两个东西的距离,怎么也是两个东西相减的平方和开方吧?直接算这个人到原点的距离?
@顾晓北:
我沒看懂問題哈哈