如何使用 linq 从一组二维向量中获取平均方向?
How to get average direction from a set of 2d Vectors using linq?
我有一个 List<Vector2d>
,其中 Vector2d 是一个简单的点实现,如下所示:public class Vector2d { public float X; public float Y; }
。我选择了两个点,一个基础(蓝色,Vector2d Form;
)和一个方向(橙色,Vector2d To;
),如下所示:
如何使用 LINQ 或任何其他 C# 实现获取由方向形成的线下的所有点(以代码大小尽可能短且不需要外部(非开箱即用)的方式) 图书馆?
这段代码应该做的(无法测试):
var greenPoints =
allPoints.Except(new[] { redPoint, bluePoint })
.Select(p => new Vector(bluePoint, p))
.Where(v => {
var angle = AngleBetween(v, blueRedVector);
return angle > Math.PI / 2 &&
angle < 3 * Math.PI / 2; });
您可能需要实施 AngleBetween
,使用向量的点积非常简单。
我有一个 List<Vector2d>
,其中 Vector2d 是一个简单的点实现,如下所示:public class Vector2d { public float X; public float Y; }
。我选择了两个点,一个基础(蓝色,Vector2d Form;
)和一个方向(橙色,Vector2d To;
),如下所示:
如何使用 LINQ 或任何其他 C# 实现获取由方向形成的线下的所有点(以代码大小尽可能短且不需要外部(非开箱即用)的方式) 图书馆?
这段代码应该做的(无法测试):
var greenPoints =
allPoints.Except(new[] { redPoint, bluePoint })
.Select(p => new Vector(bluePoint, p))
.Where(v => {
var angle = AngleBetween(v, blueRedVector);
return angle > Math.PI / 2 &&
angle < 3 * Math.PI / 2; });
您可能需要实施 AngleBetween
,使用向量的点积非常简单。