internal static int GetHits(Vector2 end, double range, float angle, List<Vector2> points) { return (from point in points let edge1 = end.Rotated(-angle / 2) let edge2 = edge1.Rotated(angle) where point.Distance(new Vector2(), true) < range * range && edge1.CrossProduct(point) > 0 && point.CrossProduct(edge2) > 0 select point).Count(); }
internal static int GetHits(Vector2 end, double range, float angle, List<Vector2> points) { var result = 0; foreach (var point in points) { var edge1 = end.Rotated(-angle / 2); var edge2 = edge1.Rotated(angle); if (point.Distance(new Vector2(), true) < range * range && edge1.CrossProduct(point) > 0 && point.CrossProduct(edge2) > 0) { result++; } } return result; }