我想找到所有满足条件的连续元素a < X <= b
,然后成对存储(a,b)
。
到目前为止,可以找到所有内容b
:
Tuple<Vector2, Vector2> getPointsWithinInterval(double X)
{
var points = List<Vector2> {...};
var list_of_b = Points.Skip(1).Where((p, i) =>
points[i].X < X && X <= p.X // condition
);
}
编辑:基于@MattBurland的建议,我想出了一个不太优雅的解决方案
var ranges = Points
.Skip(1)
.Where((p, i) =>
Points[i].X < X && X <= p.X)
.Select((p, i) => new Tuple<Vector2, Vector2>(Points[i - 1], Points[i]));
例子:
X = 2
(1, 0)
(3, 0)
(1, 0)
(5, 0)
(6, 0)
返回值:
(1, 0) , (3, 0)
(1, 0) , (5, 0)
这是抽象点的解决方案。
可以将其扩展为Vector2。
var pairs = points
.Take(points.Count - 1)
.Zip(points.Skip(1), Tuple.Create)
.Where(pair => pair.Item1.X < x && x <= pair.Item2.X)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句