如何使用 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,使用向量的点积非常简单。