internal Tuple<Player, Vector> intersect(LineSegment ls1, IEnumerable<Tuple<Player, IEnumerable<LineSegment>>> tanks)
{
return (from tank in tanks
from ls2 in tank.Item2
let intersection = ls1.Intersection(ls2)
where intersection != null
select new Tuple<Player, Vector>(tank.Item1, (Vector)intersection)
).FirstOrDefault();
}