使用Linq获取最接近另一个点的索引

时间:2014-08-24 20:17:05

标签: c# linq

我有一个Vector3对象数组(表示3d空间中的点),另一个Vector3对象表示光标位置。 我想得到最接近我的光标的Vector3数组中的索引。

光标点和数组中的一个点之间的距离是这样得到的。

  float Distance = (Points[0]-cursprpoint).magnitude;

我已经编写了一个函数来执行此操作,但它似乎有点小问题。 我决定尝试使用Linq而不是cus我想学习如何使用它。我不理解linq,我希望如果有人发布了一个如何做到这一点的例子,这将有助于我理解。

1 个答案:

答案 0 :(得分:1)

float closestDistance = Points.Min(p => p.DistanceTo(otherPoint));
var pointWithClosestDistance = Points.Where(p => p.DistanceTo(otherPoint) == closestDistance).FirstOrDefault();
var indexOfPoint = Points.IndexOf(pointWithClosestDistance);

DistanceTo方法留给提问者作为练习。