我有Dictionary
的{{1}}(在2D空间随机分布)和2D空间的Circles
。
该方法应仅返回ANY圆,其中Position在圆的半径内。 (可能有不止一个,但是我不在乎它选择哪个)
我当前的实现如下:
Position
基本上,它遍历所有圆并检查到中心的距离是否小于其半径,这意味着该位置在圆内。
它几乎可以按照我想要的方式工作。但是,对于大量圈子(〜5000个),遍历所有圈子都需要一定的时间。因此,我想实现一个int GetAnyCircleWithinRadius(Dictionary<int, Circle>circles, Position position)
{
foreach (Circle circle in circle.Values)
{
double deltaX = cirlce.center.x - position.x;
double deltaY = cirlce.center.x - position.x;
double distance = Math.Abs(deltaX * deltaX + deltaY * deltaY);
if (distance < circle.radius)
return circle.index;
}
}
循环,但是从那里我无法像在常规Parallel.ForEach
循环中那样返回该方法。
有没有办法从foreach
循环返回整个方法,从而像在常规Parallel.ForEach
循环中那样停止以后的所有其他任务/任务?
我也很高兴收到其他性能提示! :)